我似乎有很多XPath谓词开始的例子 - 显示作为最终过滤器,但没有使用starts-with谓词来过滤然后返回姐妹值。
例如,这里是示例XML:
<myXML>
<InputAssumptions>
<Data>
<General>
<GeneralTable>
<GeneralMethod>PGR</GeneralMethod>
<vData>
<vEntry>
<EffectiveDate RelativeTo="Absolute">2015-06-01</EffectiveDate>
<Percentage>0.01</Percentage>
</vEntry>
<vEntry>
<EffectiveDate RelativeTo="Absolute">2016-06-01</EffectiveDate>
<Percentage>0.02</Percentage>
</vEntry>
<vEntry>
<EffectiveDate RelativeTo="Absolute">2017-06-01</EffectiveDate>
<Percentage>0.03</Percentage>
</vEntry>
<vEntry>
<EffectiveDate RelativeTo="Absolute">2018-06-01</EffectiveDate>
<Percentage>0.04</Percentage>
</vEntry>
<vEntry>
<EffectiveDate RelativeTo="Absolute">2019-06-01</EffectiveDate>
<Percentage>0.05</Percentage>
</vEntry>
</vData>
</GeneralTable>
</General>
</Data>
</InputAssumptions>
</myXML>
我想要的是能够提供一年并返回该年份的百分比。数据的生成方式是每年只有一个条目。所以只需返回第一个条目即可。
所以,我可以返回以&#34; 2016&#34;开头的第一个DATE。 (例如)使用以下XPath:
/myXML/InputAssumptions/Data/General/GeneralTable/vData/vEntry/EffectiveDate[starts-with(.,"2016")]
返回:
<EffectiveDate RelativeTo="Absolute">2016-06-01</EffectiveDate>
并且...我可以返回第一个完全匹配的PERCENTAGE&#34; 2016-06-01&#34;使用以下XPath:
/myXML/InputAssumptions/Data/General/GeneralTable/vData/vEntry[EffectiveDate="2016-06-01"]/Percentage
返回:
<Percentage>0.02</Percentage>
但是,我似乎无法弄清楚如何将两者结合使用并使用应用于EffectiveDate的姐妹条目的starts-with谓词函数来显示相应的PERCENTAGE。
我想这是可能的,看起来很简单,但我无法在任何地方找到它,或者至少无法弄清楚如何搜索它......
任何帮助?
答案 0 :(得分:2)
你真是太近了!只需用starts-with test替换相等测试:
/myXML/InputAssumptions/Data/General/GeneralTable/
vData/vEntry[starts-with(EffectiveDate,"2016-06-01")]/Percentage
答案 1 :(得分:0)
以这种方式尝试:
//vEntry[EffectiveDate[starts-with(., '2016')]]/Percentage
它选择<Percentage>
个<vEntry>
个元素的元素,这些元素还包含至少一个以<EffectiveDate>
开头的2016
元素子元素。