首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XSL数字generate id()

XSL数字generate id()
EN

Stack Overflow用户
提问于 2010-04-22 01:44:15
回答 2查看 6.9K关注 0票数 6

XSL如何使用id必须是数字的XSL为XML文档中的每个元素生成惟一的id属性?下面的XLS可以工作,除了生成的I是字母数字的,而我需要数字?

代码语言:javascript
复制
<?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:output method='xml' indent='yes'/>  
    <xsl:template match='*'>  
      <xsl:copy>  
        <xsl:attribute name='ElementID'>  
          <xsl:value-of select='generate-id()'/>  
        </xsl:attribute>  
        <xsl:apply-templates/>  
      </xsl:copy>  
    </xsl:template>    
</xsl:stylesheet>  

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2010-04-22 21:17:50

你可以随时使用

代码语言:javascript
复制
     concat(count(ancestor::node()),
           '00000000',
           count(preceding::node()))

Michael Kay等见多识广的人警告说, <xsl:number/> 不是有效的(有时是O(N^2)),如果可能,应该避免使用。

票数 7
EN

Stack Overflow用户

发布于 2010-04-22 02:17:20

在level和count中使用number()进行切换似乎已经完成了这一任务。

谢谢

代码语言:javascript
复制
<?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:output method='xml' indent='yes'/>
    <xsl:template match='*'>
      <xsl:copy>
        <xsl:attribute name='ElementID'>
          <xsl:number level='any' count='*' />
        </xsl:attribute>
        <xsl:copy-of select="@*"/><!--copy of existing all attributes-->
        <xsl:apply-templates/>
      </xsl:copy>
    </xsl:template>  
</xsl:stylesheet>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2685250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档