以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  xsl:for-each 时如何得到下级标签中的属性?<xsl:element name[已解决]  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=58285)


--  作者:benly
--  发布时间:1/21/2008 10:21:00 AM

--  xsl:for-each 时如何得到下级标签中的属性?<xsl:element name[已解决]
各位大虾,请看:
在下面的XML文件里,id、grade、sex、fristName等都是动态生成的,并不是固定生成的,例如,有时可能student下面就一个id的标签
<?xml version="1.0" encoding="UTF-8"?>
<DATA>
<student >
    <id type="int">5</id>
    <grade type="string">02</grade>
    <sex type="string">m</sex>
    <firstName type="string">zhang</firstName>
    <lastName type="string">san</lastName>
    <address type="string">beijing</address>
    <stuId type="string">0805</stuId>
</student>
</DATA>

因此我在XSL里面打算用xsl:for-each把这些标签给遍历出来,这样就可以不用考虑XML里student下级有多少个了,不知我的思路是否正确,如果正确的话:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="/">
    <data>
      <xsl:for-each select="//student">
         <xsl:element name=???>
           <xsl:value-of select="."/>
         </xsl:element>
      </xsl:for-each>
    </data>
  </xsl:template>
</xsl:stylesheet>

这里<xsl:element name=???>的值怎么得到呢?也就是说,我怎么得到不同的标签中的name呢?


本人新手,如果问的小白的话,请各位指出,谢谢大家


[此贴子已经被作者于2008-1-21 13:56:38编辑过]

--  作者:benly
--  发布时间:1/21/2008 10:25:00 AM

--  
如果我没讲清楚的话,请指出,谢谢各位
--  作者:Qr
--  发布时间:1/21/2008 1:18:00 PM

--  
xsl:element 的作用是增加一个元素,而不是取标签名称,取标签名用name(),如<xsl:value-of select="name()"/>
<xsl:for-each select="//student"> 只能遍历所用的student节点,而不能遍历其子节点。如果student改为为*号则不同。


--  作者:wangyongshan
--  发布时间:1/21/2008 1:27:00 PM

--  
你可以这样写,就OK了。。。。

<xsl:for-each select="//student/*">
         <xsl:element name="{name()}">
           <xsl:value-of select="."/>
         </xsl:element>
</xsl:for-each>



--  作者:benly
--  发布时间:1/21/2008 1:50:00 PM

--  
嗯,解决了,谢谢两位,呵呵
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
78.125ms