|
|
|
XPath в выборке
|
|||
|---|---|---|---|
|
#18+
Пытаюсь сделать выборку из документа MS Word 2003 (сохраненного как XML с оформлением). Файлик находится в бд PostgreSQL 8.3.1. Может я неправильно использую XPath? Вот пример запроса: Код: plaintext 1. 2. 3. Код: plaintext 1. 2. Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Такая ситуация возникает из-за переносов теста в яцейке таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2008, 14:00 |
|
||
|
XPath в выборке
|
|||
|---|---|---|---|
|
#18+
как я понял, проблема в том, что xpath возвращает массив узлов, с которым сервер пытается что-то сделать и такое получается. Проконсультируйся со спецами по mssql. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2008, 14:57 |
|
||
|
XPath в выборке
|
|||
|---|---|---|---|
|
#18+
ой… или это постгря? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2008, 14:59 |
|
||
|
XPath в выборке
|
|||
|---|---|---|---|
|
#18+
Ваше xpath-выражение возвращает набор из нескольких узлов, то все что он (xpath) с ним сможет дальше сделать это разве что применить какие-нть базовые функции типа count. Никаких других функций для работы с nodeset-ами у него нет. Собсно это и не его задача, у xpath-а вполне определенная узкая цель - адресация узлов в xml-документах. Т.е. выбрали вы 6 текстовых узлов - он 6 вернул. И даже если бы вы выбрали 1 узел, все равно это был бы узел (текстовый) документа, а не строковое значение. Поэтому например в Оракле есть просто extract, возвращающий XMLType - набор узлов, и extractValue, возвращающий строковое значение узла (причем он должен быть один). Здесь думается то же самое - то что вы видите как {ст,а,тья,ст,а,тья} это не строка, а строковое представление вашим инструментом постгресовского типа-аналога ораклового XMLType. Но с текстовыми узлами есть такая особенность - при канонической сериализации соседние текстовые узлы объединяются. Т.е. вам надо каким-то образом сериализовать получившийся набор узлов. Например в Оракле я могу это сделать так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. так что вам надо просто порыться в доках по постгресу поискать подобные методы сериализации ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2008, 18:31 |
|
||
|
XPath в выборке
|
|||
|---|---|---|---|
|
#18+
TiGНо с текстовыми узлами есть такая особенность - при канонической сериализации соседние текстовые узлы объединяются.вроде по правилам XPath при преобразовании nodeset в строку остаётся только первый узел. А вот преобразование элемента в строку – это уже конкатенация дочерних текстовых узлов, так что возможно поможет string(//ns0:Vid[1]). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2008, 11:38 |
|
||
|
XPath в выборке
|
|||
|---|---|---|---|
|
#18+
maXmo TiGНо с текстовыми узлами есть такая особенность - при канонической сериализации соседние текстовые узлы объединяются.вроде по правилам XPath при преобразовании nodeset в строку остаётся только первый узел. А вот преобразование элемента в строку – это уже конкатенация дочерних текстовых узлов, так что возможно поможет string(//ns0:Vid[1]). а ведь ты прав, поскольку нужны вообще все дочерние текстовые узлы, то это будет именно то что нужно PS а всего то надо было чуток абстрагироваться от первоначально предлагаемого топикстартером решения PPS хотя нет буду считать что это у меня вчера сказался конец рабочего дня ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2008, 14:47 |
|
||
|
|

start [/forum/topic.php?fid=14&msg=35279335&tid=1333934]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 234ms |
| total: | 386ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...