XML/Przekształcanie dokumentów XML

< 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