以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  请教Xpath  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=7022)


--  作者:brook
--  发布时间:4/26/2004 1:35:00 PM

--  请教Xpath
如何用Xpath判断一个元素中是否含有特定子元素?Xpath的表达式改如何写?
谢谢

--  作者:robert
--  发布时间:4/26/2004 3:57:00 PM

--  
使用 <xsl:template match="元素[特定子元素]"即可这个特定的元首可以在DTD里声明为枚举型的
--  作者:KAI
--  发布时间:4/26/2004 4:21:00 PM

--  
楼上你那是“对比样式”而不是“XPath 表达式”,虽然这两者都包含有位置路径,但仍然很有区别的。建议看看书籍《xslt从入门到精通》第10章对比样式。

对比样式用于
1,xsl:template定层组件的match属性
2,xsl:number命令的count 和 from属性
3,xsl:key定层组件的match属性

如果自由xml文档(无DTD或Shema模型限制)结构如下
<root><a/><b/></root>
判断a元素节点(element)是否包含b(node)元素节点
楼主的问题用XPath算就是
<xsl:choose>
<xsl:when test="count(/a[b]) = 0">a节点不包含b节点</xsl:when>
<xsl:otherwise>a节点包含b节点</xsl:otherwise>
</xsl:choose>


--  作者:brook
--  发布时间:4/27/2004 8:56:00 AM

--  
对,就是这个意思。多谢了!
因为元素中有很多特殊子元素要分别处理,而且不保证他们都存在。普通的模版调用不再适合,所以我用的是命名模版。这样,就需要有Xpath的定位步骤来选定要处理的节点;另外,还需要断言来跳出递归。说得不太清楚,等我做好了,把代码贴上来……
再次感谢两位
--  作者:robert
--  发布时间:4/27/2004 9:22:00 AM

--  
谢谢,相互学习中


--  作者:brook
--  发布时间:4/27/2004 2:06:00 PM

--  
对不起,还得问一下"/a[b]"的意思是取所有名字为b的a的子节点吗?跟“/a/b”有什么不同呢?
如何验看count函数中的值呢?
另外:《xslt从入门到精通》有没有电子版?



--  作者:sam
--  发布时间:4/28/2004 12:17:00 PM

--  
以下是引用KAI在2004-4-26 16:21:19的发言:
楼上你那是“对比样式”而不是“XPath 表达式”,虽然这两者都包含有位置路径,但仍然很有区别的。建议看看书籍《xslt从入门到精通》第10章对比样式。

对比样式用于
1,xsl:template定层组件的match属性
2,xsl:number命令的count 和 from属性
3,xsl:key定层组件的match属性

如果自由xml文档(无DTD或Shema模型限制)结构如下
<root><a/><b/></root>
判断a元素节点(element)是否包含b(node)元素节点
楼主的问题用XPath算就是
<xsl:choose>
<xsl:when test="count(/a[b]) = 0">a节点不包含b节点</xsl:when>
<xsl:otherwise>a节点包含b节点</xsl:otherwise>
</xsl:choose>



有没有《xslt从入门到精通》电子版下载呀?3x


--  作者:KAI
--  发布时间:5/1/2004 3:14:00 AM

--  
sorry,好像还没发现电子版,我是2003年6月在书店买的书~中国铁道出版社


to brook:你可以看看msxml 4.0 sdk~



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