以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  问个很简单的XML的小问题~~~~~~~~~  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=11934)


--  作者:ffshow
--  发布时间:11/9/2004 5:36:00 PM

--  问个很简单的XML的小问题~~~~~~~~~
我有个XML文件

里面有一句

<document title="我的留言版" allrecord="101" page="25">
</document>

然后我在XSL文件里面,应该怎么引用title的值呢?

我用命名空间
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

然后<xsl:value-of select="document/@title"/>

但是就出错了


如果把命名空间换成

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

就没问题

但是由于某些原因,我只能使用
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

所以<xsl:value-of select="document/@title"/> 这句应该怎么改?


--------------------------------------------------------------------------------


--  作者:mailtolily
--  发布时间:11/9/2004 5:43:00 PM

--  
你的xml中<document>这个节点前面是不是还有父结点呢?如果有的话,你试试:
<xsl:value-of select="./document/@title"/>
--  作者:ffshow
--  发布时间:11/9/2004 5:53:00 PM

--  
以下是引用mailtolily在2004-11-9 17:43:51的发言:
你的xml中<document>这个节点前面是不是还有父结点呢?如果有的话,你试试:
<xsl:value-of select="./document/@title"/>

还是不行

我估计是这个命名空间不支持好像@这样的引用
-------------------------------------------------------------------------------
无法显示 XML 页。
使用 XSL 样式表无法查看 XML 输入。请更正错误然后单击 刷新按钮,或以后重试。

'value' 不是一个有效的 XSLT 或 XPath 函数。 document/@page[-->value()<-->1]

----------------------------------------------------------------------------------------------


--  作者:ffshow
--  发布时间:11/9/2004 5:59:00 PM

--  
举个详细例子:

XML文件:

<?xml version='1.0' encoding='gb2312'?>
<document title="我的留言版" allrecord="101" page="25">
<record>
<id>93</id>
<live>上海</live>
<city>1111</city> 
<name>111</name> 
<name2>111</name2> 
<msg><![CDATA[ 111]]></msg> 
<times>2004-7-25 10:46:22</times> 
</record>
</document>

=========正确的XSL======
<?xml version='1.0' encoding='gb2312'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<TITLE><xsl:value-of select="document/@title"/></TITLE>
</html>
</xsl:template>
</xsl:stylesheet>

=======错误的XSL=========
<?xml version='1.0' encoding='gb2312'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<TITLE><xsl:value-of select="document/@title"/></TITLE>
</html>
</xsl:template>
</xsl:stylesheet>


--  作者:doubleG
--  发布时间:11/9/2004 6:09:00 PM

--  
<?xml version='1.0' encoding='gb2312'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<TITLE></TITLE>
<body>
 <xsl:value-of select="document/@title"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
没有问题啊
--  作者:ffshow
--  发布时间:11/9/2004 6:50:00 PM

--  
问题终于解决了,原来不是<xsl:value-of select="document/@title"/>的问题

而是2个问题:

在新的命名空间<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">里面,一些语法简化了:

1.<xsl:when test="document/@page[value()>1]"> 这样的语句是错误的,应该改成
<xsl:when test="document/@page[.>1]">

2.MSXML3里面,废除了<xsl:eval>这个语法
所以index.aspx?page=<xsl:eval>parseInt(this.lastChild.attributes(2).text)+1</xsl:eval>是错误的

应该改成

index.aspx?page=parseInt(this.lastChild.attributes(2).text)+1

呵呵,浪费了我一个下午的时间~~~~~


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