2009-11-10 4 views
2

J'écris une transformation XSL dans Visual Studio. Il rapporte que le point-virgule dans ce qui suit est un « jeton inattendu »:Comment faire pour échapper un point-virgule dans xsl: param?

<xsl:param name="delimiters" select=";#" /> 

Est-ce que quelqu'un sait comment échapper à la virgule? Il n'a pas apparu sur les listes de personnages que j'ai trouvées jusqu'à présent.

Répondre

4

Vous voulez sans doute le d'avoir param la chaîne ;# comme sa valeur, étant donné que ce n'est pas une expression XPath valide? Si c'est le cas, vous devez indiquer la valeur de l'attribut:

<xsl:param name="delimiters" select="';#'" /> 

Notez que la valeur est désormais entourée de guillemets simples; cela provoque l'interprétation de la valeur de l'attribut sous la forme d'une expression XPath qui renvoie une chaîne.

+1

Ceci est aussi une alternative possible '; #'. Ceci est parfois plus clair chez certains éditeurs qui fusionnent ensemble citation et apostrophe. –

+1

Dans ce cas, la valeur de la variable est en fait un fragment d'arbre de résultat contenant un seul nœud de texte, plutôt qu'une chaîne. Bien sûr, cela ne fait absolument aucune différence dans la plupart des cas, mais il vaut la peine de le noter. http://www.w3.org/TR/1999/REC-xslt-19991116#section-Result-Tree-Fragments – NickFitz

+0

@NickFitz: Merci, je ne le savais pas. Maintenant que vous le dites, c'est absolument logique. :) – Tomalak

1

Essayez l'entité suivante (point-virgule est le caractère ASCII 59) ...

&#59; 
4

Avez-vous essayé?

<xsl:param name="delimiters" select="';#'"/> 
+0

+1 Une erreur fréquente et souvent plus difficile à repérer que celle-ci. – Ishmael

0

wallenborn a raison. La raison en est qu'un attribut select dans XSL attend toujours une expression XPath. Si vous voulez mettre un littéral de chaîne là, vous devez le citer.

Questions connexes