1
如何找到包含另一個節點名稱的節點?查找其文本值與另一個節點匹配的節點
例如,如果<a>
存在,<b>
包含文本「一」那麼我希望選擇<b>
但如果給出的名稱不存在。
<root>
<a /> <!-- Do not care what is in this for now -->
<b>a</b> <!-- Find this node only -->
<b>c</b> <!-- This node is unwanted -->
</root>
我知道我可以有效地比較name()
和text()
值,下面發現其自身引用節點,並排除他人:
*[name() = text()]
我試圖找到其他的引用失敗,因爲text()
在此查詢是錯誤的背景:
b[../*[name() = text()]]
以上只是返回所有<b>
至少有一個包含它自己的名字的兄弟姐妹,如果有<a>a</a>
。
我需要一個節點的文本比較a collection of names。我相信這應該是我所期待的,但*/name()
拋出一個語法錯誤:
b[text() = ../*/name()]
這就解釋了爲什麼PHP提供了一個語法錯誤,它還不支持2.0。我別無選擇,只能遍歷每個參考並明確檢查它們。 – clockworkgeek
@clockworkgeek,是的,是不是可以使用其他XSLT處理器,如Saxon,Altova或XQSharp? –
與我正在開發的應用程序不同,它已經在使用SimpleXML。 – clockworkgeek