我正在使用具有XPath返回匹配節點信息的應用程序在VBscript中工作。XPath translate()與contains()中的動態變量
爲了使其不區分大小寫,我正在使用translate函數。有一個變量可以保存要搜索的值(比如v_Search)。在我實現了translate()
之後,它不返回匹配節點,而是返回XML中的所有節點。
下面XPath返回正確的信息,但區分大小寫; -
//*[contains(., '"& v_search &"')]/ancestor-or-self::*/*[local-name()='name' and @locale='en']
爲了使它不區分大小寫我實現translate()
但它不能檢查匹配結果。下面是表達: -
//*[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') , v_search)]/ancestor-or-self::*/*[local-name()='name' and @locale='en']
我無法弄清楚什麼是錯的..
該表達式返回了從XML文檔。
我已經試過
'"& v_search &"'
在這種情況下,它不會給出任何結果。
編輯還是搞清楚問題
//*[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), translate('"& v_search &"', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'))]/ancestor-or-self::*/*[local-name()='name' and @locale='en']
後它不會只返回匹配的節點。但是它現在不會返回整個xml節點。
編輯: -示例XML
<root xmlns="https://jlkjsdlfjl/">
<name>Accounts</name>
<property name="included" type="hidden">true</property>
<locales>
<locale>en</locale>
<locale>de</locale>
</locales>
<defaultLocale>en</defaultLocale>
<searchspace>
<name locale="en">Accounts</name>
<name locale="de">Accounts</name>
<lastChanged>2014-03-05T18:47:30</lastChanged>
<lastChangedBy>userx</lastChangedBy>
<property name="included" type="hidden">true</property>
<searchspace>
<name locale="en">Database L</name>
<name locale="zw">Database L</name>
<searchSubject status="valid">
<name locale="en">SName1</name>
<name locale="zw">qskxyz</name>
<searchItem>
<name locale="en">IName1</name>
<name locale="zw">qixyz</name>
<hello>v_search</hello>
</searchItem>
<searchItem>
<name locale="en">IName2</name>
<name locale="zw">abc</name>
v_search
</searchItem>
<searchItem>
<name locale="en">IName3</name>
<name locale="zw">def</name>
<hello>something else</hello>
</searchItem>
</searchSubject>
</searchspace>
</searchspace>
<searchspace>
<name locale="en">Names</name>
<lastChanged>2016-01-12T12:42:46</lastChanged>
<searchspace>
<name locale="en">Database Layer</name>
<name locale="zw">Database Layer</name>
<searchSubject status="valid">
<name locale="en">SName2</name>
<searchItem>
<name locale="en">IName4</name>
<hello>...Hi there..</hello>
</searchItem>
</searchSubject>
</searchspace>
</searchspace>
</root>
樣品結果:
賬戶,數據庫L,SName1,INAME 1
-------- - ---------,-------,IName 2
這兩個hir archy包含v_search文本....別人不應該來。
您加入後翻譯,以前我不正確的「祖先或自身」明白你爲什麼做「//」。這將讓你所有的孩子都符合條件和每個人的祖先。 – derloopkat
這是一個錯誤......仍然有問題..我正在編輯這個問題。 –
在你的xml中沒有主節點,但xpath正在過濾器中查找它們。 (local-name()='home') – derloopkat