最近一直在用xlst语言翻译xml文件,当然,是把xml文件转换成html文件,在转换的过程中遇到了好多问题,其中之一就是遇到如下所示的xml代码:
<action id=“s1”>这是项目一!</action>
<action id=“s2”>这是项目二!</action>
<action id=“s3”>这是项目三!</action>
<action id=“s4”>这是项目四!</action>
<action id=“s5”>这是项目五!</action>
用xslt翻译这段xml代码,而且是要有序号,当然最简单的方法就是使用<xsl:for-each>,可以这么写:
<ul>
<xsl:for-each select="action">
<li style="list-style-type:decimal">
<xsl:value-of select="child::text()"/>
</li>
</xsl:for-each>
</ul>
但是这样翻译出来的html文件中,丢失了id属性,要知道很多时候我们是要用id属性进行操作,实现一些交互效果的,例如:页内跳转等。
那么如何给其加id属性呢?------<xsl:attribute>
<xsl:attribute name="id">id值</xsl:attribute> OK!
所以上述的XSLT就可以这么写:
<ul>
<xsl:for-each select="action">
<xsl:variable name="myid" select="@id"/>
<div> //此处的<div>也可以换成别的东东,你懂得!
<xsl:attribute name = "id"><xsl:value-of select="$myid"/></xsl:attribute>
<li style="list-style-type:decimal">
<xsl:value-of select="child::text()"/>
</li>
</div>
</xsl:for-each>
</ul>
这么一来转换出来的html中的标签就会含有和xml文件中对应的id属性了!Thank you for consulting!