正如@Michael Kay所解釋的,XPath 1.0和XPath 2.0都沒有XPath數據模型(XDM)支持的數組數據結構。
然而,也可以使用類似陣列的語法如下:
在XPath 1.0/2.0可以定義一個變量包含特定的一組節點的,並且這些可以通過它們的位置被訪問(按文檔順序),在謂詞中指定此位置。
下面是一個例子:
<xsl:variable name="vTransfers" select="/*/transfer"/>
定義了一個名爲vTransfers
與值的所有元素transfer
其中的每一個是XML文檔的頂部元素的子的節點集的變量。
然後:
$vTransfers[1]
選擇被包含在$vTransfers
第一個元素。
$vTransfers[2]
選擇被包含在$vTransfers
第二元件,...
$vTransfers[position() = $k]
選擇來自$vTransfers
其位置,按文檔順序節點,等於包含在變量$k
的值。
此外,XPath 2.0支持序列的概念。一個序列就像一個項目列表。一個項目可以是任何類型 - 不僅是節點。序列中的項目按照它們出現(已定義)的順序進行排序。如果序列中的兩個項目是節點,它們的順序仍然是順序中定義的順序,這可能與它們的文檔順序不同。
例:
<xsl:variable name="vNumList" as="xs:integer*" select="3, 5, 7"/>
然後當像這樣引用:
$vNumlist[2]
生產:
5
記住:雖然這些synthactic構建體類似於SELEC來自陣列的項目,節點集和序列是而不是陣列。特別是,它們通常缺乏數組對其元素的快速訪問O(1)。在節點集和序列的情況下,訪問隨機位置處的項目的效率通常是O(N)。這意味着當使用數組時,O(N)的算法在使用帶有節點集或序列的數組式符號時可能爲O(N^2)。
XSLT沒有數組。你有什麼需求? – 2011-12-14 10:42:53
我需要枚舉這些值,並根據特定條件從它們中構建一個麪包屑。 – 2011-12-14 10:47:24