XSL
XSL (e X tensible S tylesheet Language ) este o familie de recomandări de la consorțiul W3C care descrie limbaje pentru transformarea și redarea documentelor XML . Constă din trei părți:
- XSL Transformations ( XSLT ) este un limbaj pentru transformarea documentelor XML.
- XSL Formatting Objects ( XSL-FO ) este un limbaj de marcare pentru machete tipografice și alte materiale pretipărite.
- XPath este un limbaj de cale și expresie utilizat în XSLT pentru a accesa părți individuale ale unui document XML.
Principalele diferențe față de CSS
- CSS și XSL sunt tehnologii fundamental diferite. Domeniile lor de aplicare se suprapun doar parțial.
- Formatarea CSS a unui document HTML este aplicată de browser pe partea clientului, în timp ce transformarea XSL poate fi efectuată atât în browser, cât și pe server.
- Limbajul de bază al XSL este XML , ceea ce înseamnă că XSL este mai flexibil, mai versatil, iar dezvoltatorii au capacitatea de a controla corectitudinea compilării unor astfel de liste de stil (folosind DTD-uri sau scheme de date).
Familia XSL
Transformare XSL
Cu XSL, puteți transforma un document XML în orice formă, fie că este HTML , WML , RTF , PDF , SQL sau chiar SWF (flash runner), precum și XSL. XSL conține informații despre modul în care va fi formatat documentul, unde și cum ar trebui să fie localizate datele.
Pentru a procesa un document XML folosind XSL, este necesar să scrieți următoarea declarație în documentul XML:
<?xml-stylesheet type="text/xsl" href="my-style.xsl"?>
XSLT
Limbajul XSLT este format din 35 de instrucțiuni, toate având o formă comună:
<prefix:instruction-name [ attribute= "value" [ attribute= "value" ]] >
</prefix:instruction-name> ,
unde префиксeste de obicei „xsl”, dar pot fi folosite altele.
Un document XSLT este întotdeauna un document XML bine format ( sau valid ) și are următoarea structură:
<?xml version="1.0"?>
<xsl:stylesheet version= "1.0" xmlns:xsl= "http://www.w3.org/1999/XSL/Transform" >
<xsl:template match= "/" >
<!-- set de instrucțiuni -->
</xsl:template>
<!-- ... -->
</xsl:stylesheet>
xsl:stylesheeteste elementul rădăcină pentru orice document XSL. Poate imbrica etichete de nivel superior ( xsl:transformeste un sinonim învechit pentru xsl:stylesheet).
În prezent, cel mai disponibil procesor XSLT pentru Microsoft Windows este MSXML (livrat cu Internet Explorer începând cu versiunea 4.5), pentru sistemele bazate pe GNU este xsltproc.
XSL-FO
Un exemplu de document XSL-FO (luat din Tutorialul de formatare a obiectelor XSL ):
<?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- pagină" >
<fo:region-body margin= "1in" />
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference= "my-page" >
<fo:flow flow-name= "xsl-region-body" >
<fo:block> Bună, lume! </fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
Exemple
Bucla recursiva
XML:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="for.xsl"?>
<root/>
pentru.xsl:
<?xml version="1.0"?>
<xsl:stylesheet version= "1.0" xmlns:xsl= "http://www.w3.org/1999/XSL/Transform" >
<xsl:template match= "rădăcină" >
<HTML>
<CORP>
<xsl:call-template name= "pentru" >
<xsl:with-param name= "i" select= "1" />
<xsl:with-param name= "n" select= "5" />
</xsl:call-template>
</CORP>
</HTML>
</xsl:template>
<xsl:template name= "pentru" >
<xsl:paramname = "i" />
<xsl:paramname = "n" />
<xsl:value-of select= "$i" />
<xsl:if test= "$i < $n" >
<xsl:text> , </xsl:text>
<xsl:call-template name= "pentru" >
<xsl:with-param name= "i" select= "$i+1" />
<xsl:with-param name= "n" select= "$n" />
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Rezultat:
1, 2, 3, 4, 5
Gruparea și sortarea valorilor
XML:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="years.xsl"?>
<root>
<object year= "2003" />
<object year= "2001" />
<object year= "2005" />
<object year= "2005" />
<object year= "2003" />
<object year= "2006" />
<object year= "2006" /> < object year = "2006" /> <object year= "2006" />
= "2006" /> <object year= "2005" /> <object year= "2001" /> </root>
ani.xsl:
<?xml version="1.0"?>
<xsl:stylesheet version= "1.0" xmlns:xsl= "http://www.w3.org/1999/XSL/Transform" >
<xsl:key name= "ani" match= "/root/object" use= "@year" />
<xsl:template match= "root" priority= "-1" >
<HTML>
<BODY>
<xsl:for-each select= "obiect[generate -id()=generate-id(key('years',@year))]" >
<xsl:sort select= "@year" order= "descendent" />
<xsl:value-of select= "@year" " />
<xsl:if test= "position()!=last()" >
<xsl:text> , </xsl:text>
</xsl:if>
</xsl:for-each>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
Rezultat:
2006, 2005, 2003, 2001
Vezi și
Link -uri
- Pagina oficială XSL
- Tutoriale pentru XSL-FO și XSLT (germană)