Xml XPath中的缩写语法
Xml XPath中的缩写语法,xml,xpath,Xml,Xpath,//olist/items返回什么 嗯,/是后代或self::node()/的缩写,因此它返回一组节点,这些节点是我的上下文节点的后代。在此之后,它的路径中必须有olist item表示child::item,因此它返回我的上下文节点的子节点(即//olist/)。因此,最后它返回项目节点,即我的起始上下文节点的所有子节点的子节点,或其路径中有olist的一个descndant的子节点 对吗?//olist/items 此XPath将返回名为项的元素集合,这些元素是名为olist的元素的子节点,
//olist/items
返回什么
嗯,/
是后代或self::node()/
的缩写,因此它返回一组节点,这些节点是我的上下文节点的后代。在此之后,它的路径中必须有olist
item
表示child::item
,因此它返回我的上下文节点的子节点(即//olist/
)。因此,最后它返回项目节点,即我的起始上下文节点的所有子节点的子节点,或其路径中有olist
的一个descndant的子节点
对吗?
//olist/items
此XPath将返回名为项的元素集合,这些元素是名为olist
的元素的子节点,这些元素是您正在查询的XML文档根节点的后代
在此示例XML中:
<root>
<olist>
<test/>
<items value="A"/>
</olist>
<other>
<inside>
<items value="B"/>
<olist>
<items value="C"/>
</olist>
</inside>
</other>
</root>
//olist/items
XPath将选择items
元素,其值属性为A和C,因为它们是olist
元素的子元素
它将不会选择具有value
属性B的items
元素,因为该元素没有所需的父元素olist
在语法上,/
表示it状态上的/后代或self::node()/
子体或自轴表示上下文节点及其所有子体。不包括属性和命名空间节点-属性节点的父节点是元素节点,但属性节点不是其父节点的子节点
/olist
表示child::olist
-子轴的定义为
子轴表示上下文节点的子节点。如果XPath表达式未指定轴,则默认情况下理解子轴。因为只有根节点或元素节点有子节点,所以任何其他使用都不会选择任何内容
//olist/items
此XPath将返回名为项的元素集合,这些元素是名为olist
的元素的子节点,这些元素是您正在查询的XML文档根节点的后代
在此示例XML中:
<root>
<olist>
<test/>
<items value="A"/>
</olist>
<other>
<inside>
<items value="B"/>
<olist>
<items value="C"/>
</olist>
</inside>
</other>
</root>
//olist/items
XPath将选择items
元素,其值属性为A和C,因为它们是olist
元素的子元素
它将不会选择具有value
属性B的items
元素,因为该元素没有所需的父元素olist
在语法上,/
表示it状态上的/后代或self::node()/
子体或自轴表示上下文节点及其所有子体。不包括属性和命名空间节点-属性节点的父节点是元素节点,但属性节点不是其父节点的子节点
/olist
表示child::olist
-子轴的定义为
子轴表示上下文节点的子节点。如果XPath表达式未指定轴,则默认情况下理解子轴。因为只有根节点或元素节点有子节点,所以任何其他使用都不会选择任何内容
item表示child::item,因此它返回我的上下文节点(即//olist/)的子节点。因此,最后它返回项节点,即我的起始上下文节点的所有子节点的子节点或其子节点中路径中包含olist的子节点
对吧?
这几乎是正确的-不仅结果集中的项
元素“olist
在其路径中”(我理解为:必须是olist
的后代),它们还必须是olist
的直接子元素
然后让我们澄清关于“根节点”的混淆:
Matt Jones在解释/
时使用了“根节点”,这并不是指XML示例中最外层的元素。只有经过证实,最外层的元素也被称为根
“根节点”或“文档节点”不同于XML文档的最外层元素。最外层的元素实际存在于文档中,所有XML元素和属性都在其中
文档节点在文档中不可见,它是表示整个XML文档的抽象概念。XML文档中的所有节点都是文档节点的后代
另一方面,并非所有节点都是最外层元素的后代:例如,最外层元素之外可能有处理指令或注释。但这些处理指令和注释包含在文档节点中
现在,/
表示上下文节点或其任何子节点,如您所知。在这种情况下,文档节点将是路径表达式的上下文(如果不是您想要的,请在其前面加上
:/
)
因此表达式//item
表示/genderant或self::node()/child::item
,意思是
选择名称为item
的任何元素节点,该节点是XML结构中任意节点的子节点
此类项
元素的父元素将是文档节点(在本例中,项
元素将是最外层的元素)或任何元素节点
在XPath1.0中,XML文档的抽象容器