Cua*_*ina 5 xml xslt xpath xpath-2.0
我正在进行XSLT转换,我发现了一个我无法回答的有趣问题:
child::*和之间有什么区别child::node()
?
我想创建一个条件,在其中我将children元素的数量分隔为1,在这种情况下:
<xsl:if test="parent[count(child::*) eq 1])">
Run Code Online (Sandbox Code Playgroud)
VS
<xsl:if test="parent[count(child::node()) eq 1])">
Run Code Online (Sandbox Code Playgroud)
有什么区别?
要理解XPath child::*和child::node()XPath 之间的区别,不仅要了解节点测试*与node()节点测试之间的区别,还要了解轴的主节点类型的概念......
规则:如果一个轴可以包含元素,那么它的主节点类型是element; 否则,它是轴可以包含的节点类型.(例如,主要节点类型的attribute轴线是attribute因为它只能包含属性.)
所述child轴可包含的元素,所以主要节点类型子轴的是element.
因此,之间的差child::*和child::node()是
*上节点测试child轴线成功的所有子元素的上下文节点的,这是因为*节点测试成功为主要节点类型的所有节点(element在这里),而node()节点测试成功对所有子节点上下文节点,因为node()节点测试成功的所有节点类型.但请注意,并非所有节点类型都可以在child轴上.以下是七种类型的节点以及它们是否可以出现在子轴上:
因此,child::*匹配上下文节点的所有元素子节点,并child::node()匹配上下文节点的所有元素,文本和处理指令子节点.
| 归档时间: |
|
| 查看次数: |
1680 次 |
| 最近记录: |