Dans mon fichier XSL, avec cette commande, je obtenir à la fois le contenu de balise1 et les contenu de tag2 imprimé:
<xsl:value-of select="tag1"/>
Comment puis-je obtenir que la première, plus niveau, chaîne?
Votre code produit la valeur de chaîne de l'élément tag1
, qui par définition est la concaténation de tous les textes-nœuds-descendants de l'élément.
Produire juste
le "Imprimer cette" chaîne
vous devez spécifier une expression XPath qui sélectionne uniquement le nœud texte respectif:
/tag1/text()[1]
La spécification [1]
est nécessaire pour s élire uniquement le premier enfant de nœud de texte, sinon deux nœuds de texte peuvent être sélectionnés (il s'agit uniquement d'un problème dans XSLT 2.0 où <xsl:value-of>
produit les valeurs de chaîne de tous les nœuds spécifiés dans l'attribut select
).
En outre, l'expression ci-dessus sélectionne le nœud de texte entier et sa valeur de chaîne n'est pas "Print this"
.
La valeur de chaîne est en fait:
"
Print this
"
et exactement ce serait sortie si vous entourez le <xsl:value-of>
entre guillemets.
Pour produire exactement la chaîne désirée "Print this"
utilisation:
"<xsl:value-of select="normalize-space(/tag1/text()[1])"/>"
copie exacte [Sortie première chaîne, pas des chaînes pour tous les enfants] (http: // stackoverflow.com/questions/4227720/chaîne-première chaîne-pas-tous-enfants-cordes) –
Bonne question, +1. Voir ma réponse pour une explication et pour une solution correcte et plus précise que celle actuellement acceptée. –