0 votes

En XSLT, comment sélectionner/copier une partie du document sous forme de texte uniquement ?

En XSLT, comment sélectionner/copier une partie du document sous forme de texte uniquement ?

La modification que je souhaite apporter consiste à prendre une partie de l'arbre (balises et valeurs) et à la restituer sous forme de texte uniquement (de préférence avec des crochets codés en HTML).

J'ai essayé de mettre un CDATA autour de mon copy-of, mais cela a simplement placé la commande copy-of à l'intérieur de mon document.

Edit : Voir le commentaire ci-dessous

1voto

Pavel Minaev Points 60647

Essayez ceci, mais notez que cela ne gérera pas correctement les CDATA imbriqués :

<xsl:text disable-output-escaping="yes">&lt;</xsl:text>
<xsl:text>![CDATA[</xsl:text>

<xsl:copy-of select="..." />

<xsl:text>]]</xsl:text>
<xsl:text disable-output-escaping="yes">&gt;</xsl:text>

1voto

ddaa Points 19102

C'est une exigence étrange.

Comme XSLT travaille sur un modèle de document analysé, vous ne pouvez pas le faire de manière fiable. En particulier, la distinction entre les notations équivalentes sera nécessairement perdue. Les notations équivalentes incluent des choses comme <tag></tag> par rapport à <tag/> ou &eacute; par rapport à é .

Cela dit, une approche générale qui pourrait fonctionner consisterait à utiliser la fonction mode attribut de xsl:template y xsl:apply-template pour passer à un mode qui rend explicitement tous les éléments sous forme de texte. En fait, vous écririez un sérialiseur XML en XSLT.

Un problème se pose cependant : il faut alors faire une double incrustation des caractères spéciaux tels que <>"' lorsqu'il est présent dans les valeurs d'attributs et les nœuds de texte. Et XSLT est assez inefficace pour ce type de broyage de chaînes.

Un autre problème serait de rendre les préfixes d'espace de noms raisonnables. Vous pouvez très certainement le faire, mais ce serait assez horrible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X