有人可以告诉我为什么这不起作用吗?
在我的整个文档中,我有几个分栏标记如下:<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
,只有哈希标签。哈希标签和字符串有什么我不知道的吗?
感谢您的帮助。
答案 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