我需要知道使用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;的最后一个字符。我该怎么办?
答案 0 :(得分:1)
你在这里犯的一个明显的错误是将字符串函数应用于preceding-sibling::text()
而不是preceding-sibling::text()[1]
- 这将隔离立即前面的文本节点。