以下代码行在xslt中的含义是什么

时间:2013-01-23 11:02:18

标签: xml xslt

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

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

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

2 个答案:

答案 0 :(得分:5)

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

document('ProductList.xml')加载名为“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>的第二个子节点},这是第一个(也是唯一的)根元素。

答案 1 :(得分: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