0

我对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 的这个节点概念。

4

2 回答 2

1

您的 XML 没有a绑定到 URI 的前缀。假设这是固定的。

a:b/a:c/x:d/x:e

当 x 绑定到时将为您提供节点something

于 2013-01-24T08:09:01.947 回答
0

您提供的 XML 当前无效。它已声明默认命名空间,但尚未声明a:命名空间。它需要从这样的事情开始:

<a:b xmlns="something" xmlns:a="somethingElse">

如果在 XSLT 中声明了命名空间并将命名空间与前缀a关联,则可以使用以下命令访问节点:somethingse

/a:b/a:c/s:d/s:e

如果您只想根据节点的位置访问节点,您可以这样做,尽管这通常不是一个很好的做法:

/*[1]/*[1]/*[1]/*[1]

要回答您的问题,XPath 是基于 1 索引的,因此任何选择中的第一项都可以使用 [1] 访问。

于 2013-01-24T08:25:41.207 回答