Sobes.tech
Junior

Czym jest XSLT?

sobes.tech AI

Odpowiedź od AI

XSLT (eXtensible Stylesheet Language Transformations) — język transformacji dokumentów XML. Służy do konwersji XML na inne formaty, np. HTML, inny XML lub tekst prosty, stosując reguły opisane w arkuszu stylów XSLT.

Główne koncepcje:

  • Arkusz stylów XSLT: Dokument XML zawierający reguły transformacji.
  • Szablony (Templates): Główne bloki reguł. Dopasowują elementy lub atrybuty źródłowego XML i określają, jak je przekształcić.
  • XPATH: Język zapytań do wyboru węzłów w dokumencie XML. Używany w XSLT do określenia, które części XML mają zastosować reguły.
  • Procesor XSLT: Program wykonujący transformację, czytający źródłowy XML i arkusz stylów XSLT, generujący wynik.

Java ma wbudowane wsparcie dla XSLT przez JAXP (API Java do przetwarzania XML).

Przykład prostej transformacji XML do HTML za pomocą XSLT:

Źródłowy XML:

<książki>
  <książka id="1">
    <tytuł>Pan i Margarita</tytuł>
    <autor>Bulgakov M.</autor>
  </książka>
  <książka id="2">
    <tytuł>Wojna i pokój</tytuł>
    <autor>Tolstoj L.</autor>
  </książka>
</książki>

Arkusz stylów XSLT (np. książka.xsl):

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/książki">
    <html>
      <head>
        <title>Lista książek</title>
      </head>
      <body>
        <h1>Lista książek</h1>
        <ul>
          <xsl:apply-templates select="książka"/>
        </ul>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="książka">
    <li>
      <b><xsl:value-of select="tytuł"/></b>, Autor: <xsl:value-of select="autor"/>
    </li>
  </xsl:template>
</xsl:stylesheet>

Kod Java do wykonania transformacji za pomocą JAXP:

import javax.xml.transform.*;
import javax.xml.transform.stream.*;
import java.io.*;

public class XSLTExample {

    public static void main(String[] args) {
        try {
            // Utwórz TransformerFactory
            TransformerFactory factory = TransformerFactory.newInstance();

            // Załaduj arkusz stylów XSLT
            Source xslt = new StreamSource(new File("książka.xsl"));
            Transformer transformer = factory.newTransformer(xslt);

            // Załaduj źródłowy XML
            Source xml = new StreamSource(new File("książki.xml"));

            // Określ strumień wyjściowy
            Result result = new StreamResult(new File("output.html"));

            // Wykonaj transformację
            transformer.transform(xml, result);

            System.out.println("Transformacja zakończona. Wynik zapisano w output.html");

        } catch (TransformerConfigurationException e) {
            e.printStackTrace();
        } catch (TransformerException e) {
            e.printStackTrace();
        }
    }
}

XSLT jest szeroko stosowany w rozwoju stron internetowych (generowanie HTML z XML do wyświetlenia), integracji danych i przetwarzaniu komunikatów XML.