XSL

XSL (e X tensible S tylesheet Language ) er en familie af anbefalinger fra W3C-konsortiet , der beskriver sprog til transformation og gengivelse af XML - dokumenter. Består af tre dele:

Vigtigste forskelle fra CSS

XSL-familien

XSL-transformation

Med XSL kan du transformere et XML - dokument til enhver form, det være sig HTML , WML , RTF , PDF , SQL eller endda SWF (flash runner) såvel som XSL. XSL indeholder information om, hvordan dokumentet vil blive formateret, hvor og hvordan dataene skal placeres.

For at behandle et XML-dokument ved hjælp af XSL, er det nødvendigt at skrive følgende sætning i XML-dokumentet:

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

XSLT

XSLT - sproget består af 35 udsagn, som alle har en fælles form:

<præfiks:instruktionsnavn [ attribut= "værdi" [ attribut= "værdi" ]] > </præfiks:instruktionsnavn> ,

hvor префиксer normalt "xsl", men andre kan bruges.

Et XSLT-dokument er altid et veludformet ( eller gyldigt ) XML-dokument og har følgende struktur:

<?xml version="1.0"?> <xsl:stylesheet version= "1.0" xmlns:xsl= "http://www.w3.org/1999/XSL/Transform" > <xsl:template match= "/" > <!-- instruktionssæt --> </xsl:template> <!-- ... --> </xsl:stylesheet>

xsl:stylesheeter rodelementet for ethvert XSL-dokument. Det kan indlejre tags på øverste niveau ( xsl:transformer et forældet synonym for xsl:stylesheet).

I øjeblikket er den mest tilgængelige XSLT-processor til Microsoft Windows MSXML (leveret med Internet Explorer siden version 4.5), for GNU -baserede systemer er det xsltproc.

XSL-FO

Et eksempel på et XSL-FO- dokument (taget fra XSL Formatting Objects Tutorial ):

<?xml version="1.0" encoding="iso-8859-1"?> <fo:root xmlns:fo= "http://www.w3.org/1999/XSL/Format" > <fo:layout-master-set> <fo:simple-page-master master-name= "my- page" > <fo:region-body margin= "1in" /> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference= "min-side" > <fo:flow flow-name= "xsl-region-body" > <fo:block> Hej verden! </fo:block> </fo:flow> </fo:page-sequence> </fo:root>

Eksempler

Rekursiv loop

XML:

<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="for.xsl"?> <root/>

for.xsl:

<?xml version="1.0"?> <xsl:stylesheet version= "1.0" xmlns:xsl= "http://www.w3.org/1999/XSL/Transform" > <xsl:skabelon match= "rod" > <HTML> <BODY> <xsl:call-template name= "for" > <xsl:with-param name= "i" select= "1" /> <xsl:with-param name= "n" select= "5" /> </xsl:opkaldsskabelon> </BODY> </HTML> </xsl:skabelon> <xsl:skabelonnavn = "for" > <xsl:paramname = "i" /> <xsl:paramname = "n" /> <xsl:value-of select= "$i" /> <xsl:if test= "$i < $n" > <xsl:text> , </xsl:text> <xsl:call-template name= "for" > <xsl:with-param name= "i" select= "$i+1" /> <xsl:with-param name= "n" select= "$n" /> </xsl:opkaldsskabelon> </xsl:if> </xsl:skabelon> </xsl:stylesheet>

Resultat:

1, 2, 3, 4, 5

Gruppering og sortering af værdier

XML:

<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="years.xsl"?> <root> <object year= "2003" /> <object year= "2001" /> <objektår = "2005" /> <objektår = "2005" /> <objektår = "2003" /> <objektår = "2006" /> <objektår = "2006" /> < objektår = "2006" /> <object year= "2005" /> <object year= "2001" /> </root>

år.xsl:

<?xml version="1.0"?> <xsl:stylesheet version= "1.0" xmlns:xsl= "http://www.w3.org/1999/XSL/Transform" > <xsl:nøglenavn = "år" match= "/root/object" use= "@year" /> <xsl:template match= "root" priority= "-1" > <HTML> <BODY> <xsl:for-each select= "objekt[generer -id()=generate-id(key('years',@year))]" > <xsl:sort select= "@year" order= "faldende" /> <xsl:value-of select= "@år " /> <xsl:if test= "position()!=last()" > <xsl:text> , </xsl:text> </xsl:if> </xsl:for-each> </BODY> </HTML> </xsl:template> </xsl:stylesheet>

Resultat:

2006, 2005, 2003, 2001

Se også

Links