【问题标题】:xsl adding a dynamic id for a span into a for eachxsl 为每个跨度添加一个动态 id
【发布时间】:2011-08-08 20:45:16
【问题描述】:

嗨,我从我的 xsl 生成 html,我想为标签生成一个唯一的 id,这是为了在需要这个 id 的 xsl 内调用 js 中的函数... 这是我的 xsl 的简化示例

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"             xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
  <xsl:template match="/">
      <xsl:for-each select="data/item">
        <xsl:sort select="position()" data-type="number" order="descending"/>
             <span id="spanDescription"/>
      </xsl:for-each>
    </div>
  </xsl:template>
</xsl:stylesheet>

【问题讨论】:

    标签: xslt


    【解决方案1】:

    你可以使用generate-id()函数:

    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"             xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
      <xsl:template match="/">
          <xsl:for-each select="data/item">
            <xsl:sort select="position()" data-type="number" order="descending"/>
                 <span id="{generate-id()}"/>
          </xsl:for-each>
      </xsl:template>
    </xsl:stylesheet>
    

    【讨论】:

    • 感谢 Kowalski 这正是我所需要的,但不幸的是我不知道如何将生成的 id 传递给 javascript 函数......这是代码:
    • 没问题 ;) 我认为您应该编辑您的原始问题并更多地描述您的问题。我不明白你是用 XSLT 还是其他东西生成 javascript。
    【解决方案2】:

    使用变量和concat():

        <xsl:variable name="id" select="generate-id()"/>
        <span id="{$id}"/>
        <script type="text/javascript">
         <xsl:value-of select="concat('replaceAll(',$id,');')"/>
        </script>
    

    【讨论】:

    • 无论在哪里刷新或刷新多少次,它会是随机的还是总是相同的ID? stackoverflow.com/questions/26809765/…
    • 我在控制台中也收到此错误:Uncaught ReferenceError: replaceAll is not defined
    猜你喜欢
    • 2014-05-25
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 2015-12-16
    相关资源
    最近更新 更多