从子字符串设置输入值

Set input value from substring

这是我的 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>

value="{Item}" 是一个字符串。

item1;item2;item3;item4;

如何得到'item3'唯一?

这将被传递到 JavaScript 以生成条形码。目前条形码可以显示为简单的字符串。

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 &lt; 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>

希望对您有所帮助 如果第三个词不是您每次都需要的,那么您需要数据来告诉您需要哪个词,并相应地更改查找模板中的数字以满足您的需要

您可以使用:

substring-before(substring-after(substring-after(Item, ';'), ';'), ';')

提取分号分隔字符串的第三个值。

或者,如果使用 Xalan-J 处理器(或支持 EXSLT str:tokenize() function 的其他处理器):

str:tokenize(Item, ';')[3]