2013-06-04 95 views
0

是否可以在下面的XML中使用XPath計算以下TRUE節點(具有不同的名稱)?XPath:計算具有不同名稱的真正的子節點?

<my:templateBase> 
    <my:executive>true</my:executive> 
    <my:seniorManager>false</my:seniorManager> 
    <my:manager>false</my:manager> 
    <my:supervisor>false</my:supervisor> 
    <my:directReport>false</my:directReport> 
</my:templateBase> 

我似乎無法解決XPATH問題,例如, count(templateBase/*[?=true()])

+1

你試過//我:templateBase/COUNT(* [文本()= '真']) ? –

+0

這將返回XPath 2.0中每個元素名稱的個別計數(InfoPath不支持)。在XPath 1.0中,不能在軸步驟中調用函數。 –

回答

1

查找包含文本「true」的所有元素並對它們進行計數。

count(//my:templateBase/*[text() = 'true']) 

確保正確註冊命名空間或使用*代替my作爲通配符命名空間,例如

count(//*:templateBase/*[text() = 'true']) 

我不知道InfoPath中,也許它也只是忽略了命名空間。

如果你也想搜索子節點文本 「真」,用

count(//my:templateBase//*[text() = 'true']) 
-1

的XPath是

count(//my:templateBase/*[. = 'true'] 

請注意,您abviously在你的XML命名空間的一些my。也許你必須讓你的處理器知道這個命名空間。您還可以使用通配符,即*:templateBase

+1

儘管這會返回對此輸入正確的「1」,但您的查詢將不會爲多個真實元素返回除「1」之外的任何內容。 –

+0

@JensErat你是對的,我的壞。我只是改變了這一點,所以現在按預期工作。 – dirkk

相關問題