English | >> Français << | Deutsch | Magyar | 中文 | Polski ZVON > Tutorials > XSLT Tutorial
>> Page 64 << | Précédent | Suivant | Contenu | Index des éléments

L'élément xsl:copy peut comporter un attribut use-attribute-sets. De cette manière, vous pouvez spécifier des attributs pour l'élément copié. Feuille de style XSLT 2 ne fonctionne pas de la manière attendue (paramétrage de use-attribute-sets avec la fonction name()), car les expressions des attributs référençant des objets XSLT nommés ne sont pas évaluées.

Feuille de style XSLT 1

Source XML
<source>

<h1>GREETING</h1>
<p>Hello, world!</p>

</source>

Sortie
<h1 align="center" style="color:red">GREETING</h1>
<p align="left" style="color:blue">Hello, world!</p>

Vue HTML

GREETING

Hello, world!

Feuille de style XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <xsl:apply-templates select="/source/*"/>
</xsl:template>

<xsl:template match="h1">
     <xsl:copy use-attribute-sets="H1">
          <xsl:value-of select="."/>
     </xsl:copy>
</xsl:template>

<xsl:template match="p">
     <xsl:copy use-attribute-sets="P ">
          <xsl:value-of select="."/>
     </xsl:copy>
</xsl:template>

<xsl:attribute-set name="H1">
     <xsl:attribute name="align">center</xsl:attribute>
     <xsl:attribute name="style">color:red</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="P">
     <xsl:attribute name="align">left</xsl:attribute>
     <xsl:attribute name="style">color:blue</xsl:attribute>
</xsl:attribute-set>

</xsl:stylesheet>


Feuille de style XSLT 2

Source XML
<source>

<h1>GREETING</h1>
<p>Hello, world!</p>

</source>

Sortie
Failed to compile stylesheet. 1 error detected.
javax.xml.transform.TransformerConfigurationException: Failed to compile stylesheet. 1 error detected.
at com.icl.saxon.PreparedStyleSheet.prepare(PreparedStyleSheet.java:136)
at com.icl.saxon.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:127)
at Main$TransformerThread.transform(Main.java:105)
at Main$TransformerThread.run(Main.java:80)
at java.lang.Thread.run(Thread.java:595)

Vue HTML
Failed to compile stylesheet. 1 error detected. javax.xml.transform.TransformerConfigurationException: Failed to compile stylesheet. 1 error detected. at com.icl.saxon.PreparedStyleSheet.prepare(PreparedStyleSheet.java:136) at com.icl.saxon.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:127) at Main$TransformerThread.transform(Main.java:105) at Main$TransformerThread.run(Main.java:80) at java.lang.Thread.run(Thread.java:595)
Feuille de style XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <xsl:apply-templates select="/source/*"/>
</xsl:template>

<xsl:template match="*">
     <xsl:copy use-attribute-sets="{name(.)}">
          <xsl:value-of select="."/>
     </xsl:copy>
</xsl:template>

<xsl:attribute-set name="H1">
     <xsl:attribute name="align">center</xsl:attribute>
     <xsl:attribute name="style">color:red</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="P">
     <xsl:attribute name="align">left</xsl:attribute>
     <xsl:attribute name="style">color:blue</xsl:attribute>
</xsl:attribute-set>

</xsl:stylesheet>