XSLT子字符串和哈希标记

时间:2011-08-15 16:02:51

标签: xslt substring

有人可以告诉我为什么这不起作用吗?

在我的整个文档中,我有几个分栏标记如下:<cb ed="#S" n="45rb"/> 哈希标记用于引用标识源文档的另一个元素。

现在我想在以下文档中显示分栏符。所以它看起来像这样: | S45rb |。我以为我可以使用简单的substring函数来摆脱哈希标记。

<xsl:template match="TU:cb">
    <xsl:variable name="hashms"><xsl:value-of select="//TU:cb/@ed"/></xsl:variable>
    <xsl:variable name="ms"><xsl:value-of select="substring($hashms,1,1)"/></xsl:variable>      

    <span>| <xsl:value-of select="$ms"/> <xsl:value-of select="//TU:cb/@n"/> |</span>
</xsl:template>

当我这样做时,我得到以下结果:|#75ra |。参数中的第一个1不应该引用字符串的第一个字符,然后第二个1告诉它移动一个字符并留下我想要的S吗?相反,我没有得到S,只有哈希标签。哈希标签和字符串有什么我不知道的吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

XSL不是0 base,如果你想从第二个字符开始(在#之后),它应该是2而不是1.

http://www.w3schools.com/Xpath/xpath_functions.asp

substring($hashms,2,1) = S

您也可以省略长度,这可能有利于以后的可扩展性。特别是如果#是标识符之后的任何内容,为什么要限制你的代码呢?

substring($hashms,2) = S
substring('#S2',2) = S2