从子字符串设置输入值



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

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

相关内容

  • 没有找到相关文章