我不熟悉xml。我有一个xml文档结构如下:
<?xml version="1.0" encoding="UTF-8"?>
<a:b xmlns="something">
<a:c>
<d>
<e>
<item>item1</item>
<item>item1</item>
<item>item1</item>
</e>
</d>
<a:c>
<a:b>
我想让节点“e”在我的xslt中检索其子项,如下所示:
<xsl:variable name="Product" select="document('itemList.xml')/node()[1]/node()[0]/node()[0]/node()[0]"/>
但它不起作用。请建议正确的方法。此外,第一个节点是由node()[0]还是node()[1]引用的?为了更好地理解xml的这个节点概念,可以链接到文章。
答案 0 :(得分:1)
您的XML没有绑定到URI的前缀a
。假设这是固定的。
a:b/a:c/x:d/x:e
当x绑定到something
时,将为您提供节点
答案 1 :(得分:0)
您提供的XML目前无效。它声明了一个默认命名空间,但尚未声明a:
命名空间。它需要从这样的事情开始:
<a:b xmlns="something" xmlns:a="somethingElse">
如果在XSLT中声明了a
命名空间并将something
命名空间与前缀s
相关联,则可以使用以下命令访问e
节点: p>
/a:b/a:c/s:d/s:e
如果你想根据他们的位置访问节点,你可以这样做,虽然这通常不是一个很好的做法:
/*[1]/*[1]/*[1]/*[1]
要回答您的问题,XPath是基于1索引的,因此使用[1]访问任何选择中的第一项。