2015-10-09 3 views
0

Я пытаюсь выбрать первое появление предка с текстовым атрибутом. Например, учитывая xml ниже, мне нужно выбрать только узлы с комментарием.XPath. Как найти первое появление предка

<root> 
<referenceNode name="att"> 
    <a> 
     <b> 
      <referenceNode name="att"> 
       <a> 
        <b> 
         <referenceNode name="att"> <!-- OK --> 
         </referenceNode> 
        </b> 
        <referenceNode name="att"> <!-- OK --> 
        </referenceNode> 
       </a>    
      </referenceNode> 
     </b> 
     <referenceNode name="att"> <!-- OK --> 
     </referenceNode> 
    </a> 
</referenceNode> 

Я пытаюсь выбрать без ребенка с этим:

//referenceNode[@name='att' and not(child::referenceNode)] 

, но он не работает.

+0

'referenceNode' никогда не является дочерним элементом' referenceNode', это ** потомок **. – choroba

ответ

1

Насколько я понимаю xpath, вы должны поменять местами descendants на child, так как ни один из referenceNode s не является прямым ребенком другого.

+0

Спасибо, это работает: // referenceNode [not (descendant :: referenceNode)] – SLuceri

Смежные вопросы