选择XSLT 1.0中元素之前/之后的字符

时间:2015-03-02 12:18:43

标签: xml xslt xslt-1.0

我需要知道使用XSLT 1.0在某个元素之前的字符。

示例XML:

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

我需要检查本文档中的所有元素,并期望我的XSLT返回&#34; &#34;,&#34;“&#34;和&#34;。&#34;作为前面的字符,&#34; &#34;,&#34;“&#34;和&#34; - &#34;如下面的字符。

我试过了:

<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>

这适用于以下字符,但不适用于前面的字符。它总是回归&#34; &#34;,在这种情况下,似乎总是&#34; Das&#34;的最后一个字符。我该怎么办?

1 个答案:

答案 0 :(得分:1)

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