以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  使用xsl时,如何处理带有名字空间前缀的元素?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=12225)


--  作者:stonewx
--  发布时间:11/22/2004 6:06:00 PM

--  使用xsl时,如何处理带有名字空间前缀的元素?
RSS 2.0中的元素  
- <item>
  <dc:creator>SmartItem</dc:creator>

引用时使用<xsl:value-of select="dc:creator"/>出错,提示

Code:   0x80004005
Reference to undeclared namespace prefix: 'dc'.

我使用的是MSXML的XSL处理引擎.
我该如何引用该元素,如果不加dc,使用<xsl:value-of select="creator"/>,则会被忽略.


--  作者:doubleG
--  发布时间:11/23/2004 9:02:00 AM

--  
在你的XSL中也要声明这个名称空间dc,当然名字叫什么可以改变,但是xmlns=后面的内容不便就行了。
--  作者:stonewx
--  发布时间:11/23/2004 10:20:00 AM

--  
不好意思,搞不掂!
<?xml version='1.0' encoding='GB2312'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="html"/>
<xsl:template match="/rss">
<xsl:value-of select="@xmlns:dc"/> 这句如果写在 <xsl:template match="/rss"> 之前好像无效。

具体该如何写,写在何处?


--  作者:doubleG
--  发布时间:11/23/2004 1:26:00 PM

--  
我不是那个意思啊,是指加在<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
中阿,就是这样
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:dc="....................">然后就那样select就可以了。

--  作者:stonewx
--  发布时间:11/23/2004 2:29:00 PM

--  
这我知道,可是我是要将一个xml转换成html文件,而xml是的定义了几个xmlns。
<xsl:value-of select="@xmlns:dc"/>是从源文件读得名字空间。

如:A.xml
<rss xmlns:dc="www.smartitem.net">
...
<dc:a>test</dc:a>
...
</rss>

要取得dc:a元素,在xsl中该如何处理
使用<xsl:value-of select="dc:a"/>出错,提示
使用<xsl:value-of select="a"/>也不行.


--  作者:doubleG
--  发布时间:11/23/2004 2:45:00 PM

--  
我的意思就是,你在xml中用到了哪些名称空间,你就需要在xsl中也要声明哪些名称空间,如果不声明的话,当遇到诸如dc:creator这样的时候,他就根本不知道dc是哪个名称空间,当然找不到了,如果你直接用creator的话,那么他就会按照默认的名称空间去取,当然也找不到了。你就把你所有用到的名称空间都要在xsl中声明一遍就可以了。
--  作者:stonewx
--  发布时间:11/23/2004 3:29:00 PM

--  
我想的是根据源xml文件动态取得xmlns,而不是在xsl中预定义
--  作者:doubleG
--  发布时间:11/23/2004 4:13:00 PM

--  
但是你这样动态取得的话,原先的xsl还是不知道你的名称空间是什么,那样是行不通的。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
78.003ms