xQuery, как получить текст из узла с дочерними элементами?

Эта строка:

//div[@id="transactions"]/p

дает этот вывод (из html-контента, который я пытаюсь получить):

введите здесь описание изображения

Как я могу заставить этот запрос возвращать такую ​​​​строку (содержимое, если каждый <p> в своей строке):

contentOfP1
contentOfP2
contentOfP3
...

Обратите внимание, что у каждого p есть дочерние узлы (<strong> и <a>) и текст без тегов. при попытке получить весь текст из определенного <p> выдает следующее:

введите здесь описание изображения


person Enissay    schedule 25.07.2012    source источник


Ответы (1)


Использование:

//div[@id="transactions"]/p/concat(string(.), '&#xA;')

Или, если требуется нормализованное по пространству «содержимое каждого абзаца», как указано в комментарии, используйте:

//div[@id="transactions"]/p/concat(normalize-space(.), '&#xA;')
person Dimitre Novatchev    schedule 25.07.2012
comment
Ваш ответ почти заставил меня плакать :( Я потратил часы на поиски ответа, а он оказался таким простым! Большое спасибо ‹3 - person Enissay; 25.07.2012
comment
Ну, это не работает. Но благодаря вам я наконец-то получил то, что хочу, используя for $p in ($doc//div[@id="transactions"]/p) return concat(normalize-space(string($p)), '&#xA;') :) - person Enissay; 25.07.2012
comment
@ Batis610: Что ты имеешь в виду, говоря, что это не работает? Я рад, что этот ответ был полезен для вас. Не могли бы вы тогда принять его (нажав на галочку рядом с ответом)? - person Dimitre Novatchev; 25.07.2012
comment
Это просто не дало мне ожидаемого результата. Но действительно ваш ответ очень помог. Я новичок здесь, извиняюсь, если я не принял ответ раньше :) - person Enissay; 25.07.2012
comment
@Batis610: Добро пожаловать. Просто обратите внимание, что предложение for не обязательно - я думаю, что второе выражение в обновленном ответе дает то, что вы, вероятно, хотите. - person Dimitre Novatchev; 25.07.2012
comment
Действительно, второе выражение дает мне тот же результат, что и for. Спасибо еще раз :-) - person Enissay; 26.07.2012
comment
@Enissay: Это тема для нового отдельного вопроса - это важный вопрос - второй по частоте часто задаваемых вопросов в XPath. Я могу дать вам ответ сразу, но формат комментариев неудобен для обмена кодом. Также у всех плохо возникает вопрос с N обновлениями, где N -> Бесконечность. Пожалуйста, задайте новый вопрос и сообщите мне через комментарий — я буду рад ответить. - person Dimitre Novatchev; 31.07.2012