2017-04-11 132 views
0

我有XML,我希望选择具有minOccur =“1”的节点,但所有子节点都没有这样的属性。XPATH:选择具有特定属性和子节点的节点没有特定属性

我XPATH:

//xnode[@type="parent" and @minOccurs="1" and ./child[not(@minOccurs)] and ./child[not(@or)] and ./not(ors) ] 

XML:

<root> 
<xnode type="parent" id="1" name="Date" maxOccurs="1" minOccurs="1"> 
    <Othertags id="2" language="FR" name="Date"/> 
    <child id="3" name="dateone" maxOccurs="1" value="DONE"> 
     <def id="4" language="EN" value="this is date one"/> 
    </child> 
    <child id="5" name="datetwo" maxOccurs="1" minOccurs="1" value="DTWO"> 
     <def id="6" language="EN" value="this is date two"/> 
    </child> 
</xnode> 
<xnode type="parent" id="7" name="Time" maxOccurs="1" minOccurs="1"> 
    <Othertags id="8" language="FR" name="time"/> 
    <child id="9" name="timeone" maxOccurs="1" value="TONE"> 
     <def id="10" language="EN" value="this is time one"/> 
    </child> 
    <child id="11" name="timetwo" maxOccurs="1" value="TTWO"> 
     <def id="12" language="EN" value="this is time two"/> 
    </child> 
</xnode> 
</root> 

我预计只有第二点:ID = “7” 返回,但事实证明,两个节点返回。 XPath出了什么问题?谢谢,

回答

3

我有XML,我想选择节点与但所有的子节点没有这样的属性。

我想你的意思:

//xnode[@type="parent" and @minOccurs="1" and not(child/@minOccurs)] 

什么not(child/@minOccurs)表示:“有一个@minOccurs属性没有孩子。”

什么child[not(@minOccurs)]是指:“有一个孩子没有@minOccurs属性。”

+0

是的,辉煌! – dellair

相关问题