factograf
DA
Sign in

programmeringssprog

XSLT

XSLT, Extensible Stylesheet Language Transformations er et XML-baseret sprog til transformering af XML-dokumenter og en del af W3C-standarden XSL.

XSLT 1.0 blev en W3C web standard den 16. november 1999, XSLT 2.0 den 23. januar 2007 og XSLT 3.0 den 8. juni 2017.

Eksempler

Renderet XHTML-outputfil genereret fra en XML-inputfil og en XSLT-transformationsfil.
Renderet XHTML-outputfil genereret fra en XML-inputfil og en XSLT-transformationsfil.

Disse eksempler bruger følgende indgående XML-dokument:

<?xml version="1.0" ?>
<persons>
  <person username="JS1">
    <name>John</name>
    <family-name>Smith</family-name>
  </person>
  <person username="MI1">
    <name>Morka</name>
    <family-name>Ismincius</family-name>
  </person>
</persons>

Eksempel 1 (transformering fra XML til XML)

Dette XSLT-stilark indeholder skabeloner til at transformere XML-dokumentet:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="/persons">
    <root>
      <xsl:apply-templates select="person"/>
    </root>
  </xsl:template>

  <xsl:template match="person">
    <name username="{@username}">
      <xsl:value-of select="name" />
    </name>
  </xsl:template>

</xsl:stylesheet>

Evalueringen resulterer i et nyt XML-dokument med en anden struktur:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <name username="JS1">John</name>
  <name username="MI1">Morka</name>
</root>

Eksempel 2 (transformering fra XML til XHTML)

Dette XSLT-stilark indeholder skabeloner til at transformere XML-dokumentet:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
  version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns="http://www.w3.org/1999/xhtml">

  <xsl:output method="xml" indent="yes" encoding="UTF-8"/>

  <xsl:template match="/persons">
    <html>
      <head> <title>Testing XML Example</title> </head>
      <body>
        <h1>Persons</h1>
        <ul>
          <xsl:apply-templates select="person">
            <xsl:sort select="family-name" />
          </xsl:apply-templates>
        </ul>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="person">
    <li>
      <xsl:value-of select="family-name"/><xsl:text>, </xsl:text><xsl:value-of select="name"/>
    </li>
  </xsl:template>

</xsl:stylesheet>

Med XML-inputfilen vist ovenfor resulterer det i følgende XHTML (Whitespace-tegn) er justeret her for klarhedens skyld):

<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head> <title>Testing XML Example</title> </head>
  <body>
    <h1>Persons</h1>
      <ul>
        <li>Ismincius, Morka</li>
        <li>Smith, John</li>
      </ul>
  </body>
</html>

Denne XHTML genererer outputtet nedenfor, når den gengives i en webbrowser.

For at en webbrowser kan anvende en XSL-transformation på et XML-dokument, der vises, kan en XML-stilarkbehandlingsinstruktion indsættes i XML. Så hvis stylesheetet i eksempel 2 ovenfor fx var tilgængeligt som "example2.xsl", kunne følgende instruktion tilføjes til den oprindelige indgående XML:

<?xml-stylesheet href="example2.xsl" type="text/xsl" ?>

I dette eksempel er text/xsl teknisk set forkert i henhold til W3C-specifikationerne (som siger, at typen skal være application/xslt+xml), men det er den eneste medietype, der er bredt understøttet på tværs af browsere fra 2009, og situationen er uændret i 2021.

Read next

In 41 languages

Text from Wikipedia, CC BY-SA 4.0 · Source article