2013-04-05 5 views
0

Возможно ли протестировать определенный XML-код не с определенным контентом и атрибутами, принадлежащими другому узлу XML?Текст XSLT для определенного дочернего элемента XML

, например:

<a> 
    <node/> 
    <node> 
     <node attr="attr1"> 
     <d>test</d> 
     </node> 
    </node> 
    <node> 
     <c attr="attr2"> 
     <d>test</d> 
     </c> 
    </node> 
</a> 

здесь мне нужно выбрать только <node> узлы, где содержание ребенка точно

<node> 
    <c attr="attr1"> 
     <d>test</d> 
    </c> 
</node> 
+0

вам необходимо проверить два узла значения ех Do: тест тест и получить только один ? – Octonaut

+0

Мне нужно проверить все узлы и получить только те, у которых есть точный предопределенный контент. – Egor4eg

+0

как насчет '// d [. = 'Test'] /../../ node' даст вам точный' 'Вы можете поместить это' //d[.='test']'equals true в условие 'xsl: if' для достижения ваших потребностей. Надеюсь, я правильно понял ваше требование – Octonaut

ответ

1
node[c[@attr = 'attr1'][d = 'test']] 

будет выбрать узлы, которые содержат по крайней мере, что содержание, вам 'd должен добавить дополнительные ограничения, если вы хотите только , что содержание, например

node[count(@*) = 0][count(node()) = 1] 
    [c[count(@*) = 1][count(node()) = 1][@attr = 'attr1'][d[. = 'test'][not(*)]] 

(это предполагает, что таблица стилей имеет <xsl:strip-space elements="*"/> поэтому пробельные только текстовые узлы могут быть проигнорированы)

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