Home » Articole » Articole » Calculatoare » Dezvoltarea web » XML » Foi de stil XML (XSL)

Foi de stil XML (XSL)

postat în: XML 0

O foaie de stil XML este un document XML. Foile de stil XML au o extensie de fișier .xsl.

Limbajul eXtensible Stylesheet (XSL) oferă un mijloc de transformare și formatare a conținutului unui document XML pentru afișare. Deoarece un document XML nu conține etichete pe care un browser să le înțeleagă, cum ar fi etichete HTML, browserele nu pot prezenta datele fără o foaie de stil care conține informațiile de prezentare. Prin separarea datelor și a logicii de prezentare, XSL permite oamenilor să vadă datele în funcție de diferitele lor nevoi și preferințe.

Limbajul de transformare XSL (XSL Transformation Language, XSLT) este utilizat pentru a transforma un document XML de la o formă la alta, cum ar fi crearea unui document HTML pentru a fi vizualizat într-un browser. O foaie de stil XSLT constă dintr-un set de instrucțiuni de formatare care dictează modul în care conținutul unui document XML va fi afișat într-un browser, cu aproape același efect ca și Cascading Stylesheets (CSS) pentru HTML. Mai multe vizualizări ale acelorași date pot fi create folosind foi de stil diferite. Ieșirea unei foi de stil nu este limitată la un browser.

În timpul procesului de transformare, XSLT analizează documentul XML și îl convertește într-un arbore de noduri (node tree)- o reprezentare ierarhică a întregului document XML. Fiecare nod reprezintă o bucată din documentul XML, cum ar fi un element, un atribut sau un anumit conținut text. Foaia de stil XSL conține „șabloane” predefinite care conțin instrucțiuni despre ce trebuie făcut cu nodurile. XSLT va utiliza atributul de potrivire pentru a raporta nodurile elementelor XML la șabloane și le va transforma în documentul rezultat.

Exemplu 7: Document de foaie de stil XML pentru entitatea oraș

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html"/> 
    <xsl:template match="/">
        <html>
            <head>
                <title>Tour Guide</title>
            </head>
            <body>
                <h2>Cities</h2>
                <xsl:apply-templates select="tourGuide"/>
            </body>
        </html>
    </xsl:template>
    <xsl:template match="tourGuide">
        <xsl:for-each select="city">
            <br/><xsl:value-of select="continentName"/><br/>
            <xsl:value-of select="cityName"/><br/>
            <xsl:text>Population: </xsl:text>
            <xsl:value-of select='format-number(population, "##,###,###")'/><br/>
            <xsl:value-of select="country"/>
            <br/>
        </xsl:for-each>     
    </xsl:template>
</xsl:stylesheet>

Ieșirea foii de stil city.xsl din Tabelul 2-3 va arăta după cum urmează:

CitiesEurope
Madrid
Population: 3,128,600
Spain

Asia
Shanghai
Population: 18,880,000
China

Veți observa că foaia de stil este formată din HTML pentru a informa instrumentul media (un browser web) cu privire la designul prezentării. Dacă nu știți deja HTML, acest lucru poate părea puțin confuz. Resursele online, cum ar fi tutorialele W3Schools, vă pot ajuta cu înțelegerea de bază de care veți avea nevoie => (http://www.w3schools.com/html/default.asp).

În HTML este încorporat XML-ul care furnizează datele, informațiile, conținute în documentul nostru XML. XML-ul foii de stil indică ce informații vor fi afișate și cum. Deci, HTML construiește un afișaj și XML conectează valorile din acel afișaj. XSL este instrumentul care transformă informațiile în formă de prezentare, dar păstrează în același timp semnificația datelor.

XML la Bertelsmann – un studiu de cazForma germană Bertelsmann Inc. este un conglomerat de media privat care operează în 56 de țări. Are interese în companii precum difuzarea TV (RTL), revista (Gruner & Jahr), cărțile (Random House) etc. În 2005, cei 89 000 de angajați ai săi au generat venituri de 18 miliarde EUR.

O preocupare majoră a unei astfel de afaceri diversificate este utilizarea sinergiilor. Conducerea trebuie să se asigure că angajații Random House nu cheltuiesc timp și bani pentru a afla cu ce au venit deja jurnaliștii RTL TV.

Astfel, managementul cunoștințelor bazat pe IT promite economii uriașe de timp. În consecință, Bertelsmann a început în 2002 un proiect numit BeCom. Scopul BeCom a fost de a permite diferitelor companii Bertelsmann să utilizeze aceleași date pentru diferite aplicații media. XML este crucial în acest proiect, deoarece permite separarea datelor (documentului) de prezentare (foaie de stil). Astfel, datele pot fi examinate statistic și pot fi modificate pentru a se potrivi diferitelor medii, cum ar fi televiziunea și ziarele.

Gestionarea datelor statistice XML, de exemplu, permite angajaților să beneficieze de CBR (Case Based Reasoning). CBR permite unui angajat Bertelsmann care caută conținut specific să profite de rezultatele căutărilor anterioare ale altor angajați Bertelsmann, obținând astfel informații care sunt mult mai contextuale decât rezultatele izolate ale cercetării. În afară de gestionarea datelor XML, unitățile Bertelsmann TV și Book pot aplica aceste date optimizate în mediile lor specifice utilizând o varietate de aplicații de layout, cum ar fi 3B2 sau QuarkXPress.

Prolog

  • declarația XML;
  • declarația foii de stil;
  • declarația spațiului de nume;
  • formatul documentului de ieșire.
 <?xml version="1.0" encoding="UTF-8"?>
 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output method="html"/>

Declarația XML

 <?xml version="1.0" encoding="UTF-8"?>

Foaia de stil și declarațiile spațiului de nume

     <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  • identifică documentul ca o foaie de stil XSL;
  • identifică numărul versiunii;
  • se referă la spațiul de nume W3C XSL – adresa URL a site-ului care descrie elementele XML și tipurile de date utilizate în schemă. De fiecare dată când se folosește prefixul xsl: acesta face referire la spațiul de nume dat.

Formatul documentului de ieșire

      <xsl:output method="html"/>

Acest element desemnează formatul documentului de ieșire și trebuie să fie un element secundar al
<xsl:stylesheet>

Șabloane

Elementul <xsl:template> este utilizat pentru a crea șabloane care descriu modul de afișare a elementelor și a conținutului acestora. Mai sus, în introducerea XSL, am menționat că XSL împarte documentul XML în noduri și funcționează pe noduri individuale. Acest lucru se face cu șabloane. Fiecare șablon dintr-un XSL descrie un singur nod. Pentru a identifica ce nod descrie un șablon dat, utilizați atributul „match”. Valoarea dată atributului „match” se numește pattern (model). Amintiți-vă: (arborele nodurilor – o reprezentare ierarhică a întregului document XML. Fiecare nod reprezintă o bucată din documentul XML, cum ar fi un element, un atribut sau un anumit conținut text). Oriunde există ramificare în arborele nodului, există un nod.
<xsl:template>
definește începutul unui șablon și conține reguli de aplicat atunci când un nod specificat este asociat.

Atributul de potrivire

   <xsl:template match="/">

Acest atribut de potrivire a șablonului asociază rădăcina documentului XML (/), întreaga ramură a documentului sursă XML, cu rădăcina documentului HTML. Conținut în acest element șablon este marcajul HTML tipic găsit la începutul oricărui document HTML. Acest HTML este scris la ieșire. XSL caută potrivirea rădăcinii și apoi redă codul HTML, pe care browserul îl înțelege.

   <xsl:template match="tourGuide">

Acest atribut de potrivire a șablonului asociază elementul „tourGuide” cu regulile de afișare descrise în acest element.

Elemente

Elemente specifice XSL:

Element XSL Sens
(din exemplul nostru XSL)
<xsl:text> Tipărește textul real găsit între etichetele acestui element
<xsl:value-of> Acest element este utilizat cu un atribut „select” pentru a căuta valoarea nodului selectat și a-l conecta la ieșire.
<xsl:for-each> Acest element este utilizat cu un atribut „select” pentru a gestiona elementele care se repetă prin buclă prin toate nodurile din setul de noduri selectat.
<xsl:apply-templates> Acest element va aplica un șablon unui nod sau noduri. Dacă folosește un atribut „select”, atunci șablonul va fi aplicat numai nodului (nodurilor) copil selectat(e) și poate specifica ordinea nodurilor copil. Dacă nu se utilizează niciun atribut „select”, atunci șablonul va fi aplicat nodului curent și tuturor nodurilor sale copil, precum și nodurilor de text.

Pentru mai multe elemente XSL => http://www.w3schools.com/xsl/xsl_w3celementref.asp .

Metode de validare și transformare specifice limbajului

Metode PHP de validare XML Dom

Se utilizează DOM (DocumentObjectModel) pentru validarea XML și cu o declarație DTD (DocumentTypeDeclaration) și limbajul PHP pe un server.

Metode pentru browser

Plasați această linie de cod în documentul dvs. .xml după declarația XML (prolog).

 <?xml-stylesheet type="text/xsl" href="tourGuide.xsl"?>

Producția XML PHP

 <?php
 $xmlData = "";
 mysql_connect('localhost','root','')
 or die('Failed to connect to the DBMS');
 // make connection to database
 mysql_select_db('issd')
 or die('Failed to open the requested database');
 $result = mysql_query('SELECT * from students') or die('Query to like get the records failed');
 if (mysql_num_rows($result)<1){
    die ('');
 }
 $xmlString = "<classlist>\n";
 $xmlString .= "\t<student>";
 while ($row = mysql_fetch_array($result)) {
         $xmlString .=  "
          \t<firstName>
              ".$row['firstName']."
           </firstName>\n
            \t<lastName>
              ".$row['lastName']."
          \t</lastName>\n";         
      }
 $xmlString .= "</student>\n";
 $xmlString .= "</classlist>";
 echo $xmlString;
 $myFile = "classList.xml"; //any file
 $fh = fopen($myFile, 'w') or die("can't open file"); //create filehandler
 fwrite($fh, $xmlString); //write the data into the file
 fclose($fh); //ALL DONE!
 ?>

Metode PHP de transformare XSLT

Acesta este bun pentru PHP5 și wampserver (cel mai recent). Vă rugăm să vă asigurați că *xsl* NU este comentat în fișierul php.ini.

 <?php
 // Load the XML source
 $xml = new DOMDocument;
 $xml->load('tourguide.xml');
 $xsl = new DOMDocument;
 $xsl->load('tourguide.xsl');
 // Configure the transformer
 $proc = new XSLTProcessor;
 $proc->importStyleSheet($xsl); // attach the xsl rules
 echo $proc->transformToXML($xml);
 ?>

Exemplul 1: Folosit în PHP (utilizați funcția phpInfo() pentru a verifica extensia XSLT; activați dacă este necesar) Acest exemplu ar putea produce XHTML. Vă rugăm să rețineți că ar putea produce orice este definit de XSL.

 <?php
 $xhtmlOutput = xslt_create();
 $args = array();
 $params = array('foo' => 'bar');
 $theResult = xslt_process(
                         $xhtmlOutput,
                         'theContentSource.xml',
                         'theTransformationSource.xsl',
                         null,
                         $args,
                         $params
                        );
 xslt_free($xhtmlOutput); // free that memory
 // echo theResult or save it to a file or continue processing (perhaps instructions)
 ?>

Exemplul 2:

 <?php
 if (PHP_VERSION >= 5) {
   // Emulate the old xslt library functions
   function xslt_create() {
       return new XsltProcessor();
   }
   function xslt_process($xsltproc,
                         $xml_arg,
                         $xsl_arg,
                          $xslcontainer = null,
                         $args = null,
                         $params = null) {
       // Start with preparing the arguments
       $xml_arg = str_replace('arg:', '', $xml_arg);
       $xsl_arg = str_replace('arg:', '', $xsl_arg);
       // Create instances of the DomDocument class
       $xml = new DomDocument;
       $xsl = new DomDocument;
       // Load the xml document and the xsl template
       $xml->loadXML($args[$xml_arg]);
       $xsl->loadXML($args[$xsl_arg]);
       // Load the xsl template
       $xsltproc->importStyleSheet($xsl);
       // Set parameters when defined
       if ($params) {
           foreach ($params as $param => $value) {
               $xsltproc->setParameter("", $param, $value);
           }
       }
       // Start the transformation
       $processed = $xsltproc->transformToXML($xml);
       // Put the result in a file when specified
       if ($xslcontainer) {
           return @file_put_contents($xslcontainer, $processed);
       } else {
           return $processed;
       }
   }
   function xslt_free($xsltproc) {
       unset($xsltproc);
   }
 }
 $arguments = array(
   '/_xml' => file_get_contents("xml_files/201945.xml"),
   '/_xsl' => file_get_contents("xml_files/convertToSql_new2.xsl")
 );
 $xsltproc = xslt_create();
 $html = xslt_process(
   $xsltproc,
   'arg:/_xml',
   'arg:/_xsl',
   null,
   $arguments
 );
 xslt_free($xsltproc);
 print $html;
 ?>

Cod de scriere a fișierelor PHP

 $myFile = "testFile.xml"; //any file
 $fh = fopen($myFile, 'w') or die("can't open file"); //create filehandler
 $stringData = "<foo>\n\t<bar>\n\thello\n"; // get a string ready to write
 fwrite($fh, $stringData); //write the data into the file
 $stringData2 = "\t</bar>\n</foo>";
 fwrite($fh, $stringData2); //write more data into the file
 fclose($fh); //ALL DONE!

Culori XML

Pentru utilizare în foaia de stil: aceste culori pot fi utilizate atât pentru fundal, cât și pentru font

Include texte traduse și adaptate din Wikibooks

Promovarea afacerilor prin campanii de marketing online
Promovarea afacerilor prin campanii de marketing online

Descoperă cum să-ți promovezi afacerea eficient în era digitală!

Nu a fost votat $4.99$9.91 Citește mai mult
Rolul social media în democrație, noul management public, și guvernanța electronică
Rolul social media în democrație, noul management public, și guvernanța electronică

O resursă esențială pentru oricine dorește să înțeleagă intersecția în evoluție dintre tehnologie și guvernare.

Nu a fost votat $1.99$4.38 Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.
Introducere în Business Intelligence
Introducere în Business Intelligence

O resursă esențială pentru toți cei interesați de analiza datelor și de optimizarea proceselor de afaceri.

Nu a fost votat $2.99$5.37 Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *