XSL和XML - 设置div ID以区分它们

时间:2014-01-14 10:13:42

标签: xml xslt xslt-1.0 xslt-2.0

我有以下内容:

<xsl:template match="MapSet">
    <div class="mapset" id="position()">
         <Content of div here>
    </div>  
</xsl:template> 

我想在position()中使用不同的id。我希望一次只能看到一个div。 ids会帮助我。

我想有这样的输出:

    <div class="mapset" id="id1">
         <Content of div1 here>
    </div>  
    <div class="mapset" id="id2">
         <Content of div2 here>
    </div>  
    <div class="mapset" id="id3">
         <Content of div3 here>
    </div>  

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我使用以下代码来解决问题:

 <div class="mapset">
    <xsl:attribute name="id">mapset<xsl:number/></xsl:attribute>
 </div>

现在输出:

<div class="mapset" id="mapset1">
     <Content of div1 here>
</div>  
<div class="mapset" id="mapset2">
     <Content of div2 here>
</div>  
<div class="mapset" id="mapset3">
     <Content of div3 here>
</div>  

答案 1 :(得分:1)

你已经成功回答了你的问题,这很好!但是你知道Attribute Value Templates,它提供了另一种方法。

试试这个,例如

<div class="mapset" id="mapset{position()}">
     <Content of div here>
</div>  

属性值模板由大括号表示。它们表示要评估的表达式,而不是字面输出。这也应该为您提供所需的输出。

属性值模板通常是首选,因为它们比编写 xsl:attribute 更简洁,并且语法非常接近最终输出的内容。