close

XSL

Mergi la navigare Mergi la căutare

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