以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  [求助]如何在父节点中取其子节点的名称作为自己的一个属性值???  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=58511)


--  作者:wangyongshan
--  发布时间:1/25/2008 10:14:00 AM

--  [求助]如何在父节点中取其子节点的名称作为自己的一个属性值???
兄弟们,
      我想问大家一个问题:如何在父节点中取其子节点的名称作为自己的一个属性值???
      比如:
   

   <?xml version="1.0"?>
   <root>
       <item>
            <item_http url="...."/>
       </item>
   </root>  

现在我写XSL转换语句:

<xsl:template match="/">
    <root>
        <xsl:apply-templates select="//item"/>
   </root>
</xsl:template>

<xsl:template match="item">
    <xsl:element name="ITEM">
        <xsl:attribute name="type"><xsl:value-of select="*** name() "/></xsl:attribute>
   </xsl:element>
</xsl:template>



我想获取 item 的孩子节点 item_http 的名称作为属性 type的属性值,我们知道 name() 函数可以获取节点的名称,但是好像 name() 函数的前面不能加任何的XPath路径符,那么就出现了如何在父节点中使用 name() 函数获取其孩子节点的名称???
就像上面xsl中的<xsl:attribute name="type"><xsl:value-of select="*** name() "/></xsl:attribute>中的<xsl:value-of select="*** name() "/>该怎么写,才能获取到其子节点 item_http 的名称??



--  作者:Qr
--  发布时间:1/25/2008 11:30:00 AM

--  
name(*)
--  作者:wangyongshan
--  发布时间:1/25/2008 3:20:00 PM

--  
顺便在请教一下:如何获取孙子节点的名称??

这么说吧:name()函数中的XPath路径如何书写啊(这样就可以获取想要的层次的节点的名称了)??

谢谢,Qr 大哥。。。我是一个新手,麻烦Qr 大哥了



--  作者:Qr
--  发布时间:1/25/2008 3:58:00 PM

--  
1、descendant::*可以取所有后代元素
2、不明白。
如果想取任意节点名称,可以用通用模板,取不带select,如<xsl:apply-templates/>

<xsl:template match="*">
<xsl:value-of select="name() /">
</xsl:template>
即可输出所用节点名,具体还得按须修改,仅供参考。


--  作者:wangyongshan
--  发布时间:1/25/2008 7:09:00 PM

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