xslt Samouczek
Rozpoczęcie pracy z xslt
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ść:
- XML
- 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.
- Pobierz tutaj procesor Saxon-HE XSLT dla Java: saxon.sourceforge.net i rozpakuj go w dowolnym miejscu na swoim komputerze.
- W edytorze tekstu utwórz plik o nazwie
pets.xmlz 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>
- W edytorze tekstu utwórz plik o nazwie
petTransform.xslz 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>
- Otwórz okno wiersza polecenia i przejdź do folderu z plikami XML i XSLT.
- Uruchom następującą komendę, gdzie
path_to_saxon.jarjest pełną ścieżką do plikusaxon9he.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.
- Otwórz plik wyjściowy
petOutput.htmlw 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>
- Otwórz plik wyjściowy
petOutput.htmlw przeglądarce internetowej. Powinien pokazywać dane w prostej tabeli.