可能有更好的方法可以做到这一点,如果有请分享。我有一个id列表,我想用它来选择某些元素。例如,假设我有以下XML
<ANSWER calculatedValue="8917.51"
type="DECIMAL"
desc="Additional Features"
id="ADDTL" />
<ANSWER calculatedValue="1997.16"
type="DECIMAL"
desc="Appliances"
id="APP" />
<ANSWER calculatedValue="6988.94"
type="DECIMAL"
desc="Electrical"
id="ELE" />
<ANSWER calculatedValue="21184.22"
type="DECIMAL"
desc="Exterior Finish"
id="EXT" />
我想得到计算值的总和,其中ID是ADDTL,APP和ELE。我能做到这一点:
sum(ANSWER[@id = 'ADDTL' or @id = 'APP' or @id = 'ELE']/@calculatedValue)
有没有办法做这样的事情:
sum(ANSWER[@id in ('ADDTL,APP,ELE')]/@calculatedValue)
在实际使用中,此列表大约为15个ID。我可能会使用tokenize和index-来做这个,但我想知道是否有像XPATH的SQL“IN”之类的东西。思想,想法。如果情况变得更糟,我会使用“或”。
答案 0 :(得分:3)
几乎。使用此XPath 1.0表达式:
sum(
ANSWER[
contains(
',ADDTL,APP,ELE,',
concat(
',',
@id,
','
)
)
]/@calculatedValue
)
或者这个XPath 2.0表达式:
sum(ANSWER[@id = ('ADDTL','APP','ELE')]/@calculatedValue)
答案 1 :(得分:0)