如何在运行时获取xslt标记的长度?
我的代码:
<Footer xtt:startTag="COUNT" xtt:align="left" xtt:separator="|">
<Count xtt:align="right" xtt:fixedLength="5"><xsl:value-of select="ws:Worker_Sync/ws:Header/ws:Worker_Count"/></Count>
</Footer>
我想做的是:
<Footer xtt:startTag="COUNT" xtt:align="left" xtt:separator="|">
<Count xtt:align="right" xtt:fixedLength="10 - string-length( X )"><xsl:value-of select="ws:Worker_Sync/ws:Header/ws:Worker_Count"/></Count>
</Footer>
所以我想要包含开始标记的长度&#34; COUNT&#34;代替X.我不想对值进行硬编码5.如何使用开始标记代替&#34; X&#34;?
答案 0 :(得分:0)
通常,您可以使用XPath函数name()
和local-name()
来确定节点的名称,然后使用string-length()
来获取长度。
但是,引用结果树的当前上下文节点不是标准的XSLT功能,因此如果您创建这样的元素,则无法引用结果树的<Count/>
元素。 / p>
我知道解决此限制的两种可能性:
<xsl:element/>
在结果树中创建元素,引用元素名称的变量以及确定字符串长度。答案 1 :(得分:0)
一步到位:
<Footer xtt:startTag="COUNT" xtt:align="left" xtt:separator="|">
<Count xtt:align="right" xtt:fixedLength="{10 - string-length(ws:Worker_Sync/ws:Header/ws:Worker_Count)}"><xsl:value-of select="ws:Worker_Sync/ws:Header/ws:Worker_Count"/></Count>
</Footer>
或者缩短代码并确保在更改时只需编辑一个表达式使用变量:
<xsl:variable name="count" select="ws:Worker_Sync/ws:Header/ws:Worker_Count"/>
<Footer xtt:startTag="COUNT" xtt:align="left" xtt:separator="|">
<Count xtt:align="right" xtt:fixedLength="{10 - string-length($count)}"><xsl:value-of select="$count"/></Count>
</Footer>