这是我的 XSL (XSLT 1.0)
<tr>
<td align="center" height="60">
<input type="hidden" id="imageA" value="{Item}"/>
<div id="barcode" class="barcode"></div>
</td>
</tr>
值="{项目}" 是一个字符串。
item1;item2;item3;item4;
如何仅获取"item3"?
这将被传递到 JavaScript 中以生成条形码。目前条形码能够显示简单的字符串。
您可以使用:
substring-before(substring-after(substring-after(Item, ';'), ';'), ';')
提取分号分隔字符串的第三个值。
或者,如果使用 Xalan-J 处理器(或支持 EXSLT str:tokenize() 函数的其他处理器):
str:tokenize(Item, ';')[3]
>XSLT 1.0 只允许不可变变量。您可以对包含"value"属性数据的变量使用递归。
<xsl:template match="/*">
<root>
<xsl:variable name="data" select="td/input/@value"/>
<xsl:call-template name="find">
<xsl:with-param name="count" select="1"/>
<xsl:with-param name="data" select="substring-after($data,';')"/>
<xsl:with-param name="prevData" select="substring-before($data,';')"/>
</xsl:call-template>
</root>
</xsl:template>
<xsl:template name="find">
<xsl:param name="count"/>
<xsl:param name="data"/>
<xsl:param name="prevData"/>
<xsl:if test="$count=3">
<data>
<xsl:value-of select="$prevData"/>
</data>
</xsl:if>
<xsl:if test="$count < 3">
<xsl:call-template name="find">
<xsl:with-param name="count" select="$count+1"/>
<xsl:with-param name="data" select="substring-after($data,';')"/>
<xsl:with-param name="prevData" select="substring-before($data,';')"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
希望这有帮助如果第三个是单词不是您每次都需要的,那么您需要告诉您需要哪个单词的数据,并相应地更改查找模板中的数字以满足您的需求