Szukaj…


Uwagi

XSLT (Transformacje XSL, Extensible Stylesheet Language Transformations) to język programowania oparty na XML, którego celem jest manipulacja i transformacja XML. Jest to funkcjonalny język programowania i standard W3C. Za pomocą XSLT możesz przekształcić jeden lub więcej dokumentów XML w wynik, który może mieć różne formaty wyjściowe (XML, HTML, tekst).

Aby zrozumieć XSLT - najlepiej mieć dobrą praktyczną znajomość:

  1. XML
  2. XPath

Bez tych dwóch podstawowych koncepcji miałbyś trudności z nauką XSLT. Po pierwsze dlatego, że dokument XSLT jest dokumentem XML. Po drugie, dokumenty XSLT wykorzystują XPath do przeszukiwania przekształcanego dokumentu XML.

Zalecane lektury: https://en.wikipedia.org/wiki/XSLT

Wersje

Wersja Specyfikacja Status Data wydania
XSLT 1.0 https://www.w3.org/TR/xslt Rekomendacje 1998-08-18
XSLT 2.0 https://www.w3.org/TR/xslt20 Rekomendacje 23.01.2007
XSLT 3.0 https://www.w3.org/TR/xslt-30 Rekomendacja dla kandydatów 2015-11-19

Instalacja lub konfiguracja

XSLT to specjalny język programowania; jest szeroko stosowany do przekształcania dokumentów XML w inny format XML, w HTML lub w formaty tekstowe.

W użyciu są dwie główne wersje XSLT: XSLT 1.0 i XSLT 2.0. XSLT 1.0 jest szerzej wdrażany, ale ma wiele ograniczeń i ograniczeń w porównaniu z XSLT 2.0; musisz zdecydować, której wersji użyć. Jeśli procesor XSLT 2.0 jest dostępny dla wybranego środowiska, prawie zawsze jest to lepszy wybór.

(XSLT 1.0 ukazał się w listopadzie 1999 r., A wiele wdrożeń pojawiło się w ciągu roku lub dwóch, zarówno od głównych dostawców, takich jak Microsoft, IBM, Sun i Oracle, jak i od indywidualnych entuzjastów pracujących w wolnym czasie. XSLT 2.0 ukazał się w styczniu 2007, a wiele oryginalnych procesorów 1.0 nigdy nie zostało uaktualnionych, ponieważ ich twórcy stracili zainteresowanie. Najczęściej stosowanym procesorem XSLT 2.0 jest Sakson, ale nie ma dla siebie pola: inne wolnostojące produkty to RaptorXML (od Altova ), XmlPrime (z CBCL) oraz procesory Exselt i 2.0 są również dostępne osadzone w IBM WebLogic, na serwerze bazy danych XML MarkLogic oraz w akceleratorze XML Intela.)

Specyfikacja XSLT 3.0 jest kompletna pod względem technicznym (proponowane zalecenie z kwietnia 2017 r.), Ale na razie najlepiej ją uznać za najnowocześniejszą: rozważ ją tylko wtedy, gdy potrzebujesz pilnie nowych funkcji, takich jak przesyłanie strumieniowe, pakiety, obsługa JSON lub spróbuj / catch. Istnieją trzy znane implementacje: Saxon, Exselt i RaptorXML.

Aby rozpocząć pracę z XSLT, masz kilka opcji:

  • Użyj internetowego narzędzia XSLT. Istnieje kilka dostępnych (szukaj „internetowego narzędzia XSLT”), bardzo niezawodnym internetowym IDE jest http://xsltransform.net/ . Jest to dobry sposób na wstępne zaznajomienie się z językiem, ale nie będziesz chciał go kontynuować, gdy zaczniesz naprawdę rozwijać.

  • Użyj silnika XSLT wbudowanego w każdą przeglądarkę. Podobnie jak w przypadku narzędzi internetowych, mają one tę zaletę, że nie trzeba niczego instalować; ale przeglądarki obsługują tylko XSLT 1.0, obsługują tylko konwersję XML-do-HTML i mają bardzo słabą obsługę debugowania. Najnowszym - ale wciąż eksperymentalnym - opracowaniem jest Saxon-JS, który umożliwia wykonanie XSLT 2.0 (i części XSLT 3.0) w przeglądarce.

  • Zainstaluj procesor XSLT (taki jak Saxon lub xsltproc). Większość tych produktów można wywołać za pomocą wiersza polecenia systemu operacyjnego lub interfejsu API dla określonych języków programowania, takich jak Java, C, C # lub Python.

  • Zainstaluj środowisko programistyczne XML, takie jak Altova XML Spy, oXygen z SyncroSoft lub Stylus Studio. Chociaż jest to droższa opcja, daje znacznie bogatsze wsparcie programistyczne i możliwości debugowania.

Niezależnie od wybranej opcji, najpierw musisz zdecydować, czy chcesz używać XSLT 1.0, czy XSLT 2.0.

Prosty przykład XSLT

Oto prosty przykład, w którym XSLT przekształca dane w pliku XML w tabelę w pliku HTML. Możesz go użyć do eksperymentowania z prostymi transformacjami XSLT.

Wymaganie wstępne: zainstaluj środowisko Java Runtime Environment i dodaj lokalizację środowiska JRE do zmiennej PATH. (W systemie Windows większość instalatorów doda Java do Twojej ścieżki). Jeśli to zadziała, powinieneś być w stanie otworzyć okno wiersza poleceń i uruchomić polecenie java -version i uzyskać wydruk informacji o swoim środowisku JRE.

  1. Pobierz tutaj procesor Saxon-HE XSLT dla Java: saxon.sourceforge.net i rozpakuj go w dowolnym miejscu na swoim komputerze.
  2. W edytorze tekstu utwórz plik o nazwie pets.xml z następującym kodem:
  <pets>
  <petType name="Dogs">
    <pet id="123" name="Sparky" vaccineStatus="vaccinated" healthStatus="healthy"/>
    <pet id="234" name="Sadie" vaccineStatus="unvaccinated" healthStatus="sick"/>
    <pet id="345" name="Herman" vaccineStatus="unvaccinated" healthStatus="unknown"/>
  </petType>
  <petType name="Cats">
    <pet id="456" name="Cleo" vaccineStatus="vaccinated" healthStatus="healthy"/>
    <pet id="567" name="Janet" vaccineStatus="unvaccinated" healthStatus="healthy"/>
    <pet id="678" name="Furry" vaccineStatus="vaccinated" healthStatus="sick"/>
  </petType>
</pets>
  1. W edytorze tekstu utwórz plik o nazwie petTransform.xsl z następującym kodem:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="2.0">

<!-- handle the root XML element -->
<xsl:template match="/">
<html><head>
  <title>Pets that are available for adoption</title>
</head>
<body>
  <xsl:apply-templates/>
</body>
</html>
</xsl:template>

<xsl:template match="pets">
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="petType">
<h2><xsl:value-of select="@name"/></h2>
<table id="{@name}">
   <tr>
     <th colname="id">ID</th>
     <th colname="name">Name</th>
     <th colname="vaccinated">Vaccine status</th>
     <th colname="health">Health status</th>
   </tr>
   <tbody>
     <!-- add a row for each pet in this category -->
     <xsl:for-each select="pet">
       <tr>
         <td colname="id"><xsl:value-of select="@id"/></td>
         <td colname="name"><xsl:value-of select="@name"/></td>
         <td colname="vaccinated"><xsl:value-of select="@vaccineStatus"/></td>
         <td colname="health"><xsl:value-of select="@healthStatus"/></td>
       </tr>
     </xsl:for-each>
   </tbody>
 </table>
</xsl:template>

<!-- ignore the content of other tags because we processed them elsewhere -->
<xsl:template match="*">
<!-- do nothing -->
</xsl:template>

</xsl:stylesheet>
  1. Otwórz okno wiersza polecenia i przejdź do folderu z plikami XML i XSLT.
  2. Uruchom następującą komendę, gdzie path_to_saxon.jar jest pełną ścieżką do pliku saxon9he.jar :
java -jar "path_to_saxon.jar" -o
petOutput.html -s:pets.xml -xsl:pettransform.xslt

Na przykład:

java -jar "C:\Program Files\SaxonHE9-7-0-7J\saxon9he.jar" -o
petOutput.html -s:pets.xml -xsl:pettransform.xslt

Pamiętaj, aby uruchomić to polecenie w jednym wierszu.

  1. Otwórz plik wyjściowy petOutput.html w edytorze tekstu. To powinno wyglądać tak:
<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>Pets that are available for adoption</title>
   </head>
   <body>
      
      <h2>Dogs</h2>
      <table id="Dogs">
         <tr>
            <th colname="id">ID</th>
            <th colname="name">Name</th>
            <th colname="vaccinated">Vaccine status</th>
            <th colname="health">Health status</th>
         </tr>
         <tbody>
            <tr>
               <td colname="id">123</td>
               <td colname="name">Sparky</td>
               <td colname="vaccinated">vaccinated</td>
               <td colname="health">healthy</td>
            </tr>
            <tr>
               <td colname="id">234</td>
               <td colname="name">Sadie</td>
               <td colname="vaccinated">unvaccinated</td>
               <td colname="health">sick</td>
            </tr>
            <tr>
               <td colname="id">345</td>
               <td colname="name">Herman</td>
               <td colname="vaccinated">unvaccinated</td>
               <td colname="health">unknown</td>
            </tr>
         </tbody>
      </table>
      
      <h2>Cats</h2>
      <table id="Cats">
         <tr>
            <th colname="id">ID</th>
            <th colname="name">Name</th>
            <th colname="vaccinated">Vaccine status</th>
            <th colname="health">Health status</th>
         </tr>
         <tbody>
            <tr>
               <td colname="id">456</td>
               <td colname="name">Cleo</td>
               <td colname="vaccinated">vaccinated</td>
               <td colname="health">healthy</td>
            </tr>
            <tr>
               <td colname="id">567</td>
               <td colname="name">Janet</td>
               <td colname="vaccinated">unvaccinated</td>
               <td colname="health">healthy</td>
            </tr>
            <tr>
               <td colname="id">678</td>
               <td colname="name">Furry</td>
               <td colname="vaccinated">vaccinated</td>
               <td colname="health">sick</td>
            </tr>
         </tbody>
      </table>
      
   </body>
</html>
  1. Otwórz plik wyjściowy petOutput.html w przeglądarce internetowej. Powinien pokazywać dane w prostej tabeli.


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow