如何使用xslt从xml文档中获取节点

时间:2013-01-24 08:04:53

标签: xml xslt

我不熟悉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的这个节点概念,可以链接到文章。

2 个答案:

答案 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]访问任何选择中的第一项。