Comment puis-je sélectionner les nœuds précédents d'un nœud de texte à partir d'un nœud spécifique dont je connais l'identifiant au lieu d'obtenir les nœuds de texte à partir du nœud racine? Lorsque j'appelle la pièce ci-dessous à partir d'une correspondance de modèle de noeud de texte, j'obtiens tous les nœuds de texte précédents à partir de la racine. Je veux modifier la pièce au-dessus du code pour ne sélectionner que les nœuds de texte qui apparaissent après le nœud ayant un identifiant spécifique dire quelque chose comme 123.-à-dire // * [@ id = « 123 »]Comment puis-je sélectionner les nœuds précédents d'un nœud de texte à partir d'un nœud spécifique et non le nœud racine?
<xsl:template match="text()[. is $text-to-split]">
<xsl:variable name="split-index" as="xsd:integer"
select="$index - sum(preceding::text()/string-length(.))"/>
<xsl:value-of select="substring(., 1, $split-index - 1)"/>
<xsl:copy-of select="$new"/>
<xsl:value-of select="substring(., $split-index)"/>
</xsl:template>
<xsl:variable name="text-to-split" as="text()?"
select="descendant::text()[sum((preceding::text(), .)/string-length(.)) ge $index][1]"/>
Comment j'inclus la condition dans les endroits où j'utilise previous :: text inorder pour sélectionner les noeuds de texte précédents par rapport à l'identifiant du noeud spécifique que je connais?
Bonne question (+1). Voir ma réponse pour trois solutions différentes. :) –
@DimitreNovatchev Avez-vous oublié de réellement +1? ;) – Izkata
+1 de moi parce que la question a donné des idées sur la façon de résoudre mon propre problème ... – Izkata