這將取決於您的實施。使用xpath 1,您選擇的方式將是唯一可以工作的方法(除了使用您可以編寫擴展函數的實現)。 XPath 1無法自行處理。
但是,我們可以使用
/nodes/*[local-name()='first' or local-name()='second']
或
/nodes/*[self::first or self::second]
,或者如果你想有一個範圍的位置,我們可以簡化這
/nodes/*[position()<3]
選擇所有相關節點
,然後使用我們的實現來進行連接。
例如,XSLT,我可能會做
<xsl:for-each select="/nodes/*[position()<3]">
<xsl:value-of select="."/>
</xsl:for-each>
或使用的編程語言的XPath功能,我們可以遍歷結果並連接它。例如,與Python和LXML文庫(其中,根是一個lxml.etree物體保持文檔),我們可以這樣做(使用基於位置的選擇器)
"".join(root.xpath("/nodes/*[position()<3]/text()"))
使用XPath 2,這是可能直接與
string-join(/nodes/*[position()<3],'')
事實上,如果我們需要通過名稱來選擇,XPath的2使我們能夠簡化列出的第一個XPath表達式,並做
string-join(/nodes/*[local-name()=('first','second')])
爲什麼這個問題是downvoted?請提供一個理由,我可以解決它。 –