【发布时间】:2018-04-06 16:49:01
【问题描述】:
给定一个 XML 文档,例如:
<SESSION NAME ="TEST" REUSABLE ="NO" SORTORDER ="Binary" VERSIONNUMBER ="1">
<SESSIONEXTENSION DSQINSTNAME ="TEST_SQ" DSQINSTTYPE ="Source Qualifier" NAME ="Relational Reader" SINSTANCENAME ="TEST_SQ" SUBTYPE ="Relational Reader" TRANSFORMATIONTYPE ="Source Definition" TYPE ="READER"/>
<SESSIONEXTENSION DSQINSTNAME ="TEST_TG" DSQINSTTYPE ="Source Qualifier" NAME ="Relational Reader" SINSTANCENAME ="TEST_TG" SUBTYPE ="Relational Reader" TRANSFORMATIONTYPE ="Source Definition" TYPE ="WRITER"/>
<ATTRIBUTE NAME ="General Options" VALUE =""/>
</SESSION>
我希望为满足以下所有条件的SESSION 元素提取SESSION 元素的NAME 属性:
- 子
SESSIONEXTENSION元素的TYPE属性值等于"READER", - 子
ATTRIBUTE元素的NAME属性值等于"General Options"和 - 子
ATTRIBUTE元素的VALUE属性值等于""。
XPath 表达式
/SESSION/SESSIONEXTENSION[@TYPE='READER']
返回一个包含所寻找的NAME 属性值的SESSION 元素。
但是,我尝试使用 XPath 表达式指定上述SESSION 元素要求列表中的所有三个
/SESSION/SESSIONEXTENSION[@TYPE='READER']/ATTRIBUTE[@NAME="General Options" and VALUE =""]
没有按预期工作。
如何在 XPath 表达式中声明多个条件,其中条件适用于父元素 (SESSION) 的单独子元素 (SESSIONEXTENSION、ATTRIBUTE)?
【问题讨论】:
-
尝试使用
@VALUE=...而不是VALUE=... -
/SESSION[SESSIONEXTENSION[@TYPE='READER'] and ATTRIBUTE[@NAME="General Options" and @VALUE =""]]