在XSLT1.0中,选择元素前面/后面的字符



我需要知道使用XSLT1.0的某个元素前面的字符。

示例XML:

<p>Das <hi>Konzert</hi> brachte die „<hi>Sinfonie</hi>“ von Gassmann-<hi>Kröger</hi>.</p>

我需要检查此文档中的所有元素,并希望我的XSLT返回"、"one_answers"."作为前面的字符,以及"、"one_answers"-"作为后面的字符。

我试过这个:

<xsl:template match="hi">
    <xsl:text>[</xsl:text>
    <xsl:value-of select="substring(preceding-sibling::text(),string-length(preceding-sibling::text()))"/>
    <xsl:text>|</xsl:text>
    <xsl:value-of select="substring(following-sibling::text(),1,1)"/>
    <xsl:text>]</xsl:text>
</xsl:template>

这适用于后面的字符,但不适用于前面的字符。它总是返回",在这种情况下,它似乎总是"达斯"的最终字符。我能做什么?

您在这里犯的明显错误是将字符串函数应用于preceding-sibling::text()而不是preceding-sibling::text()[1],这将立即隔离前面的文本节点

相关内容

  • 没有找到相关文章