Xpath получает отдельные узлы, используя предыдущий брат и сестра

Мне нужно получить отдельные значения //имя() без различных значений(//*/имя())

Я пытался сделать так, но это не работает.

//*/name()[.!=//preceding-sibling::*]

Как я могу его отремонтировать?


person Yuliya Sokhrannaya    schedule 04.04.2013    source источник
comment
Пожалуйста, не могли бы вы предоставить образец вашего вклада и более четкое описание того, чего вы хотите достичь?   -  person MattH    schedule 04.04.2013
comment
отличные значения (//*/имя()) мне нужно получить те же результаты без этой функции   -  person Yuliya Sokhrannaya    schedule 04.04.2013
comment
Юлия, взгляните на этот вопрос и убедитесь, насколько проще ответить на этот вопрос.   -  person MattH    schedule 04.04.2013
comment
@MattH, я посмотрел на этот пост, но я не знаю, как изменить свой xpath (   -  person Yuliya Sokhrannaya    schedule 04.04.2013
comment
Это должно было показать вам, как задавать вопрос. Я попросил вас включить образец вашего ввода и вывода. Я также указал вам на пример хорошо заданного вопроса. Как насчет того, чтобы прочитать это, а затем обновить свой вопрос?   -  person MattH    schedule 04.04.2013


Ответы (1)


Использование XPath 1.0 для получения различных значений

Для атрибута имени

/*/*[not(@name = preceding::*/@name)]

Для имени узла

/*/*[not(name() = preceding::*/name())]

Мой образец XML:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <friend1 name="abc"/>
    <friend2 name="def"/>
    <friend3 name="abc"/>
    <friend1 name="abcd"/>
    <friend5 name="abcd"/>
    <friend6 name="xyz"/>
    <friend8 name="789"/>
    <friend0 name="pqr"/>
    <friend9 name="lmn"/>
    <friend2 name="lmn"/>
    <friend5 name="123"/>
    <friend7 name="456"/>
    <friend12 name="789"/>
</root>
person Siva Charan    schedule 08.04.2013