差別是最佳實踐當結果不是一個序列? (如果是,那麼前者基本上不能使用)
任何我忘記的或者他們在這種情況下是完全可以交換的嗎?
差別是最佳實踐當結果不是一個序列? (如果是,那麼前者基本上不能使用)
任何我忘記的或者他們在這種情況下是完全可以交換的嗎?
在XPath 2.0此表達式引發錯誤如果參數到name()
功能是與一個以上的項目的序列:
name(/Data/element1/element2)
在XPath 1.0這不是錯誤和name()
使用節點集中的第一個節點作爲它的參數。
兩者同樣沒用,因爲一眼就知道結果必須是"element2"
。
當結果不是序列(如果是的話, 然後前者基本上不能使用),這是最好的做法?
此作品在這兩種情況下的XPath 2.0/XQuery的:
/Data/element1/element2/name()
確定不同的是,沒有任何區別,因爲它是相同的功能,因爲名稱()等於名稱( ),所以它不是一個不同的語法。它發生的是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)可以有利的,因爲我們可以爲我們的假設添加一個額外的驗證步驟,但替代也具有強點,我們可以準備處理表達式(數組)的多個輸入的地形,如果有一天數據發生變化並且這是有效的和預期的
對於零件「結果在元素2中已知」,我更改了一個有點這個想法的例子。我的意思是動力選擇,也許我做得太簡單了 – Whimusical 2012-07-16 14:36:07