2012-06-27 2 views
0

У меня есть этот ОТД:XML DTD - XPATH 1,0

<!ELEMENT db (obj, prop*)> 
<!ELEMENT obj (obj*)> 
<!ATTLIST obj 
    id ID #REQUIRED 
> 
<!ELEMENT prop (#PCDATA)> 
<!ATTLIST prop 
    objs IDREFS #REQUIRED 
> 

Мне нужно написать XPATH, которые возвращать все "подпирать" с, где "OBJS" содержит от "OBJ" s с детьми. Например:

<db> 
    <obj id="a007"> 
    <obj id="a008"> </obj> 
     <obj id="a009"> 
      <obj id="a011"> </obj> 
     </obj> 
    </obj> 
    <obj id="a011"> </obj> 
    <prop objs="a007 a011"> 
     "first" 
    </prop> 
    <prop objs="a007"> 
     "second" 
    </prop> 
    <prop objs="a009 a007"> 
     "third" 
    </prop> 
</db> 

о покупке он вернется второй и третий.

ответ

1

Попробуйте путь /db/prop[not(id(@objs)[not(obj)])], он выбирает те prop элементы дочерних узлов db корневого элемента, в котором id(@objs) не находит элемент, не имеющим obj ребенка.

+0

Это работает. Спасибо!!! – Michael

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