XML/Przekształcanie dokumentów XML
Podstawy XSLT i XPath
[edytuj]XSLT (Extensible Stylesheet Language Transformations) to język służący do przekształcania dokumentów XML do innych formatów, takich jak HTML lub zwykły tekst. XSLT używa XPath (XML Path Language) do lokalizowania i manipulowania elementami w dokumencie XML. XPath to składnia służąca do wybierania węzłów w dokumencie XML, podobna do sposobu, w jaki selektory CSS są używane do wybierania elementów w dokumentach HTML.
Wyrażenia XPath mogą być używane do wybierania węzłów na podstawie ich nazwy elementu, atrybutów, zawartości lub pozycji w hierarchii dokumentu. Na przykład wyrażenie XPath „/księgarnia/książka[cena>35]” spowoduje wybranie wszystkich elementów książki z ceną większą niż 35.
XSLT używa szablonów do zdefiniowania, w jaki sposób dokument XML powinien zostać przekształcony. Szablon składa się z wyrażenia XPath, które pasuje do określonego zestawu węzłów, oraz zestawu instrukcji opisujących, w jaki sposób należy przekształcić pasujące węzły. Na przykład poniższy arkusz stylów XSLT przekształciłby dokument XML zawierający elementy książki w tabelę HTML:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <table> <xsl:for-each select="bookstore/book"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="author"/></td> <td><xsl:value-of select="price"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
Ten arkusz stylów utworzy tabelę HTML z trzema kolumnami (tytuł, autor i cena) i jednym wierszem dla każdego elementu książki w wejściowym dokumencie XML.
Przekształcanie XML za pomocą arkuszy stylów XSLT
[edytuj]Aby przekształcić dokument XML za pomocą arkusza stylów XSLT, można użyć procesora XSLT, takiego jak ten wbudowany w większość przeglądarek internetowych, lub autonomicznego procesora, takiego jak Saxon lub Xalan. Procesor XSLT pobiera jako dane wejściowe dokument XML i arkusz stylów XSLT i generuje jako dane wyjściowe przekształcony dokument w żądanym formacie.
Na przykład, jeśli masz dokument XML o nazwie „books.xml” i arkusz stylów XSLT o nazwie „books.xsl”, możesz przekształcić dokument XML w plik HTML o nazwie „books.html” za pomocą następującego polecenia:
xsltproc books.xsl books.xml > books.html
Spowodowałoby to użycie narzędzia wiersza poleceń xsltproc do zastosowania arkusza stylów „books.xsl” do dokumentu „books.xml” i przekierowania danych wyjściowych do pliku o nazwie „books.html”.
Używanie XPath do wysyłania zapytań i wybierania danych XML
[edytuj]Oprócz użycia w arkuszach stylów XSLT, XPath może być również używany do wysyłania zapytań i wybierania danych XML w innych kontekstach, na przykład w językach programowania, takich jak Java lub Python.
Na przykład w Javie można użyć pakietu javax.xml.xpath do oceny wyrażeń XPath w dokumencie XML. Oto przykład, który wybiera wszystkie tytuły książek z dokumentu XML:
import javax.xml.xpath.*; import org.w3c.dom.*; XPath xpath = XPathFactory.newInstance().newXPath(); InputSource inputSource = new InputSource("books.xml"); NodeList titleNodes = (NodeList) xpath.evaluate("//book/title", inputSource, XPathConstants.NODESET); for (int i = 0; i < titleNodes.getLength(); i++) { System.out.println(titleNodes.item(i).getTextContent()); }
Ten kod tworzy obiekt XPath przy użyciu XPathFactory, a następnie go używa