Comment accéder à une variable dans CDATA de XSLT?
Je suis en utilisant XSLT Transformation et de la nécessité de mettre certaines données dans la section CDATA, et que vale est présent dans une variable.
Requête: Comment accéder à une variable dans CDATA ?
Exemple Donné Ci-Dessous:
<xsl:attribute name ="attributeName">
<![CDATA[
I need to access some variable here like
*<xsl:value-of select ="$AnyVarible"/>*
]]>
</xsl:attribute>
Comment puis-je utiliser varibale dans CDATA ?
Note: je ne peux pas utiliser --> <![CDATA[<xsl:value-of select ="$AnyVarible"/>]]>
Merci à l'avance.
Il n'est pas CDATA dans les valeurs d'attribut.
Les sections CDATA sont un moyen de simplifier l'édition du texte--ils vous permettent d'utiliser sans échappement de caractères où vous auriez autrement besoin de références d'entité.
Les sections CDATA sont un moyen de simplifier l'édition du texte--ils vous permettent d'utiliser sans échappement de caractères où vous auriez autrement besoin de références d'entité.
<p>call AT&T</p>
et <p>call <![CDATA[AT&T]]></p>
sont sémantiquement équivalents. Les sections CDATA peuvent ne pas apparaître dans les valeurs d'attribut. (En SGML, vous pouvez déclarer un attribut de type CDATA, qui indique au processeur pour traiter de balisage en tant que texte brut; XML n'a pas cette capacité). Vous pouvez préciser ce que vous essayez d'atteindre avec votre CDATA-en-attribut en question.OriginalL'auteur Amit | 2010-02-15
Vous devez vous connecter pour publier un commentaire.
J'ai la solution pour cela...pour info pour tout le monde...
disable-output-escaping
attribut.pouvez-vous retrouver avec XML non valide? À moins que la variable contient
]]>
de cours.dans ce cas, exactement avec la
]]>
cas. Cependant, mon commentaire était plus orienté vers l'utilisation dedisable-output-escaping
en général.Merci de répondre à l'essentiel de la question au lieu d'en acheter à part.
Il faut être conscient que cet extrait ne produit que du XML valide si l'aller-retour à travers la représentation de chaîne. Si le processeur XSLT retourne un XML DOM arbre que le résultat (comme, par exemple Python
lxml.etree
ne) de l'élément XML de cet extrait produit contient un nœud de texte contenant<![CDATA[
, un ensemble de "réel" des éléments XML produit par<xsl:value-of ...>
et de suivi nœud de texte contenant]]>
. Donc, si l'on pourrait s'attendre à un seul élément XML avec un seul nœud de texte contenant ce qui est enveloppé avec CDATA, cette attente sera un échec.OriginalL'auteur Amit
CDATA n'est qu'un texte comme n'importe quel autre élément de contenu...
Mais à l'aide de la
xsl:output
élément, vous devriez être en mesure de préciser les éléments qui doivent être écrits comme CDATA avec lecdata-section-elements
attribut.EDIT:
Maintenant qu'il y a d'un échantillon valable, je suppose que tu veux dire ceci:
Le
CDATA
ne peut pas contenir de balises. Par conséquent, vous à la fin de laCDATA
l'article, ajoutez le tag, et de commencer un autreCDATA
section.conformément à la spécification d'un processeur XML doit gérer les sections CDATA de la même manière qu'ils traitent de texte simple. Donc si certains outil accepte uniquement les données à l'intérieur CDATA, alors que l'outil est cassé.
Pour faire toute sorte de logique, vous devez déclarer
disable-output-escaping="yes"
dans une section CDATA. Il n'est pas CDATA dans une valeur d'attribut, autant que je sache.OriginalL'auteur Lucero
Si vous souhaitez inclure des sections CDATA de votre sortie, vous devez utiliser la cdata-section-éléments attribut de xsl:output. C'est une liste de noms d'éléments. Ces éléments auront leur contenu texte enveloppé dans CDATA.
OriginalL'auteur Lachlan Roche