XSLT Remplacer la fonction introuvable
Je suis en train d'écrire une transformation XSLT dans lequel je souhaite utiliser la fonction Remplacer de faire une regex match et de le remplacer.
Toutefois, Visual Studio 2008 rapports que
'replace()' est un inconnu de la fonction XSLT.
Le code lui-même est:
<xsl:otherwise>
<td style="border: solid 1px black; background-color:#00CC66;">
<xsl:variable name="FeatureInfo" select="Text" />
<xsl:value-of select="replace($FeatureInfo,'Feature=','TESTING')"/>
</td>
</xsl:otherwise>
Est-il quelque chose que je fais mal?
Merci 🙂
Edit: je suis en utilisant cette version de XSLT, mais il semble que c'est Visual Studio version qui est un problème...je vais devoir essayer de trouver une solution de contournement.
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
source d'informationauteur Fiona - myaccessible.website
Vous devez vous connecter pour publier un commentaire.
La
replace
fonction n'est disponible que dans la version de XSLT 2.0, pas dans la version 1.0 qui est ce que Visual Studio utilise. Juste parce que vous avez spécifiéversion="2.0"
ne veut pas dire que Visual Studio prend en charge.Voici un modèle sur codesling qui met en œuvre la chaîne de remplacer en XSLT 1.0. Vous devriez être en mesure de l'utiliser mais je ne peux pas se porter garant de son efficacité.
(Prises à partir du lien ci-dessus)
Vous souhaitez appeler comme ceci:
Remplacer n'est pas valide en XSLT 1.0. Vous avez "translate()", qui pourrait fonctionner pour vous, mais remplacez-la() est XSLT 2, et ne fait pas partie de la MME .NET XML de la base de code. Vous pouvez vous le procurer à un tiers XML bibliothèques.
Pour la simple chaîne de caractères de remplacement de la fonction de traduction (disponible en xslt 1.0) a bien fonctionné pour moi.
Je l'ai utilisé pour dépouiller les espaces pour les valeurs numériques.
Comment intégrer une c# script pour faire le remplacement?
Ajoutez les lignes suivantes au bas de votre feuille de style:
<msxsl:script language="C#" implements-prefix="scr">
<![CDATA[ public string Replace(string stringToModify, string pattern, string replacement) { return stringToModify.Replace(pattern, replacement); } ]]>
</msxsl:script>
Ajouter un attribut d'espace de noms à la feuille de style de l'élément:
xmlns:scr="urn:scr.this"
Puis mettre en œuvre....
vous devriez avoir placé la Feature= chaîne de caractères entre guillemets comme suit
Autant que je sache,
replace()
a été introduit dans XLST 2.0. Quelle est la version de la définition de votre document? Peut-être que vous avez à régler VS 2008 pour utiliser XLST 2.0 (si possible).