Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)

« Escape XML en XSLT » : différence entre les versions

De AJLSM
Aller à la navigation Aller à la recherche
Ctate (discussion | contributions)
Aucun résumé des modifications
mAucun résumé des modifications
 
(Une version intermédiaire par un autre utilisateur non affichée)
Ligne 1 : Ligne 1 :
Si tu veut escape XML un element XML dans XSLT comme texte pour voir tous les attributs, les nœuds et les textes, voici un template pour le faire:
Ci-dessous un template XSLT pour encoder des arbres XML en HTML (grâce au entités). Cela permet de voir les nœuds, les attributs et le textes de l'arbre XML.
 
=== Template ===
<syntaxhighlight lang="xml"> <xsl:template match="*" mode="escape">
<syntaxhighlight lang="xml">
<xsl:template match="*" mode="escape">
<xsl:value-of select="concat('&lt;', name())" />
<xsl:value-of select="concat('&lt;', name())" />
<xsl:for-each select="@*">
<xsl:for-each select="@*">
Ligne 7 : Ligne 8 :
</xsl:for-each>
</xsl:for-each>
<xsl:value-of select="'&gt;'" />
<xsl:value-of select="'&gt;'" />
<xsl:apply-templates select="@*|node()" mode="escape" />
<xsl:apply-templates select="node()" mode="escape" />
<xsl:value-of select="concat('&lt;/', name(), '&gt;')" />
<xsl:value-of select="concat('&lt;/', name(), '&gt;')" />
</xsl:template>
</xsl:template>
<xsl:template match="text()" mode="escape">
<xsl:value-of select="."/>
</xsl:template>
</syntaxhighlight>
=== Invocation ===
<syntaxhighlight lang="xml">
<xsl:apply-templates select="current()" mode="escape" />
</syntaxhighlight>


<xsl:template match="@*|text()" mode="escape">
[[category:XSLT]]
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="escape" />
</xsl:copy>
</xsl:template></syntaxhighlight>

Dernière version du 23 novembre 2012 à 10:52

Ci-dessous un template XSLT pour encoder des arbres XML en HTML (grâce au entités). Cela permet de voir les nœuds, les attributs et le textes de l'arbre XML.

	<xsl:template match="*" mode="escape">
		<xsl:value-of select="concat('&lt;', name())" />
		<xsl:for-each select="@*">
			<xsl:value-of select="concat(' ', name(), '=&quot;', ., '&quot;')" />
		</xsl:for-each>
		<xsl:value-of select="'&gt;'" />
		<xsl:apply-templates select="node()" mode="escape" />
		<xsl:value-of select="concat('&lt;/', name(), '&gt;')" />
	</xsl:template>
	
	<xsl:template match="text()" mode="escape">
		<xsl:value-of select="."/>
	</xsl:template>
	<xsl:apply-templates select="current()" mode="escape" />