Comment puis-je trouver, avec XSLT, le mot avant et après un autre mot connu dans un nœud de texte?XSLT trouver un mot près d'un autre mot
1
A
Répondre
0
I. Dans XSLT 2.x 2.x/XPath, on peut utiliser les fonctions tokenize() et index-of() pour produire les résultats désirés avec une XPath-liner expressions:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:param name="pWord" select="'three'"/>
<xsl:template match="text()">
<xsl:sequence select=
"tokenize(., ',\s*')
[index-of(tokenize(current(), ',\s*'), $pWord) -1]"/>
<xsl:sequence select=
"tokenize(., ',\s*')
[index-of(tokenize(current(), ',\s*'), $pWord) +1]"/>
</xsl:template>
</xsl:stylesheet>
Lorsque cette transformation est appliqué sur le document XML suivant:
<t>One, two, three, four</t>
le résultat recherché, correct produit:
two four
II. XSLT 1.0 solution
Il est possible de résoudre la même tâche dans XSLT 1.0 à l'aide du modèle strSplit-to-Words
de FXSL.
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ext="http://exslt.org/common"
>
<xsl:import href="strSplit-to-Words.xsl"/>
<xsl:output method="text"/>
<xsl:param name="pWord" select="'three'"/>
<xsl:template match="/">
<xsl:variable name="vrtfwordNodes">
<xsl:call-template name="str-split-to-words">
<xsl:with-param name="pStr" select="/"/>
<xsl:with-param name="pDelimiters"
select="', 	 '"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="vwordNodes"
select="ext:node-set($vrtfwordNodes)/*"/>
<xsl:variable name="vserchWordPos" select=
"count($vwordNodes
[. = $pWord]/preceding-sibling::*
) +1"/>
<xsl:value-of select=
"concat($vwordNodes[$vserchWordPos -1],
' ',
$vwordNodes[$vserchWordPos +1]
)
"/>
</xsl:template>
</xsl:stylesheet>
Lorsque cette transformation est appliquée sur le même document XML:
<t>One, two, three, four</t>
le résultat recherché, correct est produit:
two four
Questions connexes
- 1. Comment trouver un mot non précédé d'un autre mot spécifique?
- 2. Syntaxe incorrecte près du mot-clé 'select'
- 3. Syntaxe incorrecte près du mot-clé UNION
- 4. Excel 2007 - Trouver un mot
- 5. XSLT: Append espaces "long" mot
- 6. Trouver un mot qui n'est pas une sous-chaîne d'un autre mot
- 7. mot subsitute de regex à un autre mot
- 8. Algorithme pour trouver un mot sur Boggle
- 9. trouver le mot dans UIwebview
- 10. SQL Server 2000 « syntaxe incorrecte près du mot-clé « CASE » »
- 11. Syntaxe incorrecte près du mot-clé 'avec' (SQL)
- 12. Erreur SQL: syntaxe incorrecte près du mot clé 'End'
- 13. Comment améliorer 'Syntaxe incorrecte près du mot-clé' select '.'
- 14. une syntaxe incorrecte près du mot clé 'AS'
- 15. ms erreur SQL: syntaxe incorrecte près du mot-clé «on»
- 16. Un code qui est un mot en avant et un autre mot en arrière
- 17. Comment remplacer un mot dans un fichier texte par un autre mot et une action?
- 18. Comment trouver un mot similaire pour un mot mal orthographié en PHP?
- 19. lire un fichier mot par mot
- 20. JS - Vérifiez si une position de tableau contient un mot, puis retourner un autre mot
- 21. Expression régulière javascript simple - ajouter un autre mot-clé
- 22. Grep grep un mot
- 23. C# Trouver si un mot est dans un document
- 24. comment remplacer toutes les occurrences d'un mot dans une chaîne avec un autre mot dans java?
- 25. Comment trouver un mot dans un texte en utilisant XSLT 2.0 et REGEX (qui n'a pas de limite de mot \ b)?
- 26. Comment trouver les fautes d'orthographe courantes d'un mot donné en utilisant aspell ou un autre outil
- 27. 'row_number' n'est pas un nom de fonction reconnu. Syntaxe incorrecte près du mot-clé 'AS'
- 28. Expression régulière, trouver un mot entre deux mots
- 29. Comment trouver un mot inclus dans les balises HTML?
- 30. trouver un mot-clé dans une collection et le retourner
Bonne question (1). Voir ma réponse pour une solution complète XSLT 1.0 et XSLT 2.x. :) –