2012-07-16 58 views
1

差別是最佳實踐當結果不是一個序列? (如果是,那麼前者基本上不能使用)

任何我忘記的或者他們在這種情況下是完全可以交換的嗎?

回答

1

在XPath 2.0此表達式引發錯誤如果參數到name()功能是與一個以上的項目的序列:

name(/Data/element1/element2) 

在XPath 1.0這不是錯誤name()使用節點集中的第一個節點作爲它的參數。

兩者同樣沒用,因爲一眼就知道結果必須是"element2"

當結果不是序列(如果是的話, 然後前者基本上不能使用),這是最好的做法?

此作品在這兩種情況下的XPath 2.0/XQuery的

/Data/element1/element2/name() 
+0

對於零件「結果在元素2中已知」,我更改了一個有點這個想法的例子。我的意思是動力選擇,也許我做得太簡單了 – Whimusical 2012-07-16 14:36:07

1

確定不同的是,沒有任何區別,因爲它是相同的功能,因爲名稱()等於名稱( ),所以它不是一個不同的語法。它發生的是name(X)應該總是包含一個不超過1次輸出的表達式。

,所以我們可以使用:

/Data/name(./element1/element2) = /Data/name(element1/element2) 
* element2, if a single occurrence in the whole data 

/Data/element1/name(./element2) = /Data/element1/name(element2) 
* element2, if a single occurrence per any element1, for each element1 

/Data/element1/element2/name() = /Data/element1/element2/name(.) 
* element2, no matter num of occurrences, we print them all 

因此,當我們希望只有一個出現,名稱(complete_expression)可以有利的,因爲我們可以爲我們的假設添加一個額外的驗證步驟,但替代也具有強點,我們可以準備處理表達式(數組)的多個輸入的地形,如果有一天數據發生變化並且這是有效的和預期的

相關問題