Sobes.tech
Junior

Какво е XSLT?

sobes.tech AI

Отговор от AI

XSLT (eXtensible Stylesheet Language Transformations) е език за преобразуване на XML документи. Използва се за преобразуване на XML във други формати, например HTML, друг XML или прост текст, като прилага правила, описани в XSLT таблица със стилове.

Основни концепции:

  • XSLT таблица със стилове: XML документ, съдържащ правила за преобразуване.
  • Шаблони (Templates): Основни блокове с правила. Съпоставят елементи или атрибути на оригиналния XML и определят как да бъдат преобразувани.
  • XPATH: Език за заявки за избор на възли в XML документ. Използва се в XSLT за определяне към кои части на XML да се приложат правилата.
  • XSLT процесор: Програма, която изпълнява преобразуването, като чете оригиналния XML и XSLT таблицата със стилове и генерира резултата.

Java има вградена поддръжка за XSLT чрез JAXP (Java API for XML Processing).

Пример за прост XSLT преобразуване на XML в HTML:

Оригинален XML:

<книги>
  <книга id="1">
    <заглавие>Майстор и Маргарита</заглавие>
    <автор>Булгаков М.</автор>
  </книга>
  <книга id="2">
    <заглавие>Война и мир</заглавие>
    <автор>Толстой Л.</автор>
  </книга>
</книги>

XSLT таблица със стилове (например, книга.xsl):

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/книги">
    <html>
      <head>
        <title>Списък с книги</title>
      </head>
      <body>
        <h1>Списък с книги</h1>
        <ul>
          <xsl:apply-templates select="книга"/>
        </ul>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="книга">
    <li>
      <b><xsl:value-of select="заглавие"/></b>, Автор: <xsl:value-of select="автор"/>
    </li>
  </xsl:template>
</xsl:stylesheet>

Java код за изпълнение на преобразуването с използване на JAXP:

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

public class XSLTExample {

    public static void main(String[] args) {
        try {
            // Създаване на TransformerFactory
            TransformerFactory factory = TransformerFactory.newInstance();

            // Зареждане на XSLT таблицата със стилове
            Source xslt = new StreamSource(new File("книга.xsl"));
            Transformer transformer = factory.newTransformer(xslt);

            // Зареждане на оригиналния XML
            Source xml = new StreamSource(new File("книги.xml"));

            // Определяне на изходния поток
            Result result = new StreamResult(new File("output.html"));

            // Изпълнение на преобразуването
            transformer.transform(xml, result);

            System.out.println("Преобразуването е завършено. Резултатът е в output.html.");

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

XSLT е широко използван в уеб разработката (генериране на HTML от XML за показване), интеграция на данни и обработка на XML съобщения.