與30K +文件的數據庫上工作,每個水果單獨的.xml有點比這更復雜的內:結合的XPath /無法施展的xs:untypedAtomic類型節點
<Fruit>
<Node1 name="papaya"><Childnode1 skincolor="YELLOW"></Childnode1></Node1>
<Node2 color="red"></Node2>
</Fruit>
<Fruit>
<Node1 name="apple"><Childnode1 skincolor="red"></Childnode1></Node1>
<Node2 color="Yellow"></Node2>
</Fruit>
<Fruit>
<Node1 name="banana"><Childnode1 skincolor="yELLOW"></Childnode1></Node1>
<Node2 color="yellow"></Node2>
</Fruit>
我找了相同的字符串兩不同的屬性:
/Fruit/Node1/Childnode1[matches(@skincolor,'yellow','i')/data(Fruit/Node1/@name) /Fruit/Node2[matches(@color,'yellow','i')]/data(Fruit/Node1/@name)
一些結果是重複的(僅在該實例中香蕉),所以我試圖兩個路徑改寫成一個單一的表達:
/Fruit/Node1/Childnode1[matches(@skincolor,'yellow','i')/data(Fruit/@name) | /Fruit/Node2[matches(@color,'yellow','i')]/data(Fruit/@name)
出現錯誤:「無法將xs:untypedAtomic轉換爲節點()」。我的意圖是將它們結合起來,然後只保留不同的值。 我是新來的XML /編程/ SO,所以請解釋我喜歡5(和學習代碼)。
請注意,您的第一個XPath無效。如果您在將查詢提交給Stack Overflow之前檢查了它們,這對讀者會有所幫助。 –
對混淆抱歉。我的筆記本電腦處於不良狀態,所以簡單的查詢花了半個小時。下次會更加小心。 – wlwy