Как выбрать предшествующие узлы текстового узла, начиная с определенного узла, чей идентификатор я знаю, вместо получения текстовых узлов из корневого узла?
Когда я вызываю следующий фрагмент из шаблона соответствия текстового узла,
Я получаю все предыдущие текстовые узлы из корня. Я хочу изменить приведенный выше фрагмент кода, чтобы выбрать только те текстовые узлы, которые появляются после узла, имеющего определенный идентификатор, скажем, 123. То есть что-то вроде // * [@ id = '123']
<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]"/>
Как включить условие в тех местах, где я использую предикат :: text, чтобы выбрать предшествующие текстовые узлы относительно идентификатора конкретного узла, который я знаю?