concat, les guillemets et les apostrophes combinaison de problèmes
J'ai essayé différentes manières et aussi regarda autour de lui mais ne peut pas obtenir ce fonctionnement.
J'ai besoin de concat suivantes:
"concat(
'this is; \"a sample',
//XML_NODE,
'\"; \"using an apostrophe',
''',
'in text\"'
)"
une version en ligne:
"concat( 'this is; \"a sample', //XML_NODE, '\"; \"using an apostrophe', ''', 'in text\"' )"
La sortie doit être:
this is "a sample XML_NODE_VALUE"; "using an apostrophe ' in text"
Le problème, c'est le " dans le texte. concat l'utiliser à la fin d'une chaîne et d'en attendre une suite ; ou à la fin de concat. S'échapper ou entités HTML tous semble ne pas fonctionner.
Toute aide est très apprécié.
Merci!
Vous avez essayé
ouais et aussi ' ordinaire ' et \' et aussi sans une nouvelle chaîne
Vous pouvez être intéressé par une solution qui n'utilise pas de variable.
'
?ouais et aussi ' ordinaire ' et \' et aussi sans une nouvelle chaîne
Vous pouvez être intéressé par une solution qui n'utilise pas de variable.
OriginalL'auteur Talisin | 2012-01-09
Vous devez vous connecter pour publier un commentaire.
En XML/XSLT vous n'avez pas les caractères d'échappement avec une barre oblique inverse.
Le problème avec l'apostrophe à l'intérieur de votre la concaténation de chaînes de caractères, c'est que l'analyseur XML chargement du XSLT développer avant la concat obtient évalué par le moteur XSLT; si vous ne pouvez pas utiliser une entité de référence pour le caractère apostrophe, sauf si il est enveloppé dans des guillemets doubles (ou les références d'entité pour les guillemets doubles, comme Dimitre Novatchev la réponse de la montre).
"
pour le double devis"
.Appliquée dans le cadre d'une transformation XSLT:
Si vous avez besoin d'un 100% XPath solution qui permet d'éviter l'utilisation de variables XSLT, puis Dimitre la réponse serait mieux.
Si vous êtes préoccupé par la façon dont il est facile à lire, à comprendre et à maintenir, puis Michael Kay suggestion: utiliser des variables XSLT pour la citation et de l'apostrophe pourrait être la meilleure.
Hansen: Vous pouvez être intéressé par une solution qui n'utilise pas de variable.
Hansen: s'il vous Plaît, de corriger la fausse déclaration dans cette réponse, "si vous ne pouvez pas utiliser une entité de référence pour le caractère apostrophe.". La chaîne être réalisée avec un simple appel à
concat()
qui ne fait pas appel à des références à des variables.OriginalL'auteur Mads Hansen
Aucune variable est nécessaire:
Voici un exemple de la façon de produire la sortie de deux façons:
Lorsque cette transformation est appliquée sur n'importe quel document XML (non utilisé), la sortie est produite:
Je travaille avec un dosen'de différentes XSLT XSLT 1.0 et 2.0 processeurs -- tous produisent le même résultat. Vous utilisez peut-être un ne respectant pas le processeur XSLT.
Ouais je ne pense pas que le problème est le processeur. Je suis assez sûr que c'est mon environnement PHP qui crée le XSL et ne peut pas gérer ce cas. Devez exécuter une unité de test pour voir ce qu'il se passe. Merci pour votre aide. Vraiment apprécié.
En fait, il n'est même pas le processeur XSLT -- c'est l'analyseur que le processeur XSLT utilise.
OriginalL'auteur Dimitre Novatchev
J'ai trouver la solution la plus simple est de déclarer les variables:
OriginalL'auteur Michael Kay