0

我正在学习 xslt。我试图理解一些 xslt 代码,但没有得到以下代码行的含义:

<xsl:variable name="Product" select="document('ProductList.xml')/node()[1]/node()[2]/node()[2]/node()[2]"/>

我可以理解变量将是“$Product”,但我无法理解选择属性的值,即文档函数之后的“/”和节点()[]。我有 c# 和 java 的编码知识,但我不熟悉这种类型的语法。我想知道这些'/'在选择值中的含义。

4

2 回答 2

5

select属性指示变量的值应由 XPath 表达式确定。

加载名为“ProductList.xml”的document('ProductList.xml')文件以对其执行 XPath 选择。

/node()[1]/node()[2]/node()[2]/node()[2]部分表示应选择第一个元素的第二个孩子的第二个孩子的第二个孩子。换句话说,如果 ProductList.xml 看起来像这样:

<a>              <!-- /node()[1] -->
  <b>            <!-- /node()[1]/node()[1] -->
    <c />        <!-- /node()[1]/node()[1]/node()[1] -->
    <d />        <!-- /node()[1]/node()[1] -->
  </b>
  <e>            <!-- /node()[1]/node()[2] -->
     <f />       <!-- /node()[1]/node()[2]/node()[1] -->
     <g>         <!-- /node()[1]/node()[2]/node()[2] -->
        <h />    <!-- /node()[1]/node()[2]/node()[2]/node()[1] -->
        <i />    <!-- /node()[1]/node()[2]/node()[2]/node()[2] -->
     </g>
  </e>
</a>

然后 XPath 将选择<i>节点,它是 的第二个子节点,它是 的第二个子节点,它是 的第二个子节点,它是<g><e>一个<a>(也是唯一的)根元素。

于 2013-01-23T11:13:18.907 回答
0

向后阅读:-

node()[2],       node()[2],       node()[2],       node()[1],      document('ProductList.xml')           
second child of, second child of, second child of, first child of, ProductList.xml document
于 2013-01-23T11:17:37.687 回答