Przejdź do zawartości

XML/Przekształcanie dokumentów XML

Z Wikibooks, biblioteki wolnych podręcznikó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