![]() |
Модераторы: diadiavova |
![]() ![]() ![]() |
|
t77 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Доброе время суток.
Как обычно, считываем данные из хмл файла и все вроде как хорошо. Но вот если в слове, имеется одинарная кавычка, то текст обрубается с того места, где находится кавычка... Например в хмл теге явно вижу слово: son's или don't. При обычном выводе текста, спомощью xsl:value-of select, слово обрубается и выводится ввиде son или don. Пробовал добавить disable-output-escaping="yes", но не помогает. Как быть ? |
|||
|
||||
diadiavova |
|
||||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Ну не знаю, вот специально создал пример
хмл-файл
хслт-файл
результат
Так что, опиши проблему подробнее. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
||||||
|
|||||||
magelan |
|
|||
![]() потерял xPath ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 5.4.2010 Репутация: 7 Всего: 16 |
С помощью чего считываются данные? Java?
Проблемы скорее всего с тем, что неправильно сформирован поток, т.е. он не того типа. |
|||
|
||||
t77 |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Считываю данные с помощью ХСЛТ.
Запрашиваю с сервера хмл документ, затем обрабатываю его с помощью хслт и на выходе получаю чтмл. Дело в том, что если в слове имеется кавычка, то в базе данных, в файле хмл, вместо кавычки устанавливается
То есть если мы имеем текст:
то сохранится он следующим образом:
Ну и как я говорил, при считывании значения тега INPUT1, я получаю:
Вопрос, можно ли, с помощью хслт, распознавать знак-' и заменять его на родную кавычку ? Если да, то как? |
||||||||
|
|||||||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
t77, а мой пример как у тебя работает?
А вообще, с точки зрения хмл это равнозначная замена, так что если какой-то процессор выводит данные так - это не страшно. А вот что означает [quote=t77, 24.5.2010, 12:54, post2157949], при считывании значения тега INPUT1quote] разъясни поподробнее. Чем считываешь то? -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
t77 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
[quote]
А вот что означает Не понимаю, что это означает...? Вы о чем?? т77 это мой ник в форуме и к топику он отношения не имеет.
Ваш пример работает хорошо, без проблем. А считываю значения с помощью ХСЛТ... Все достаточно тривиально. Пробегаюсь по всем тегам ИНПУТ1 в петле ФОРИЧ и вывожу значения в поле таблицы.
|
||||
|
|||||
t77 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Понимаете, если в предложении имеется одинарная кавычка, то текст обрубается и все, что идет после кавычки, просто отбрасывается.
Вопросов несколько: 1. Как распознавать этот самый знак-' ? 2. Как заменять знак-' на одинарную кавычку ? 3. Как сделать так, чтобы предложение не обрывалось, тоесть получить все предложение ? И наконец, как это все реализовать ? Спасибо |
|||
|
||||
magelan |
|
|||
![]() потерял xPath ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 5.4.2010 Репутация: 7 Всего: 16 |
1. ' распознавать не нужно, это валидный синтаксис для XML
2. ' заменять не нужно это и есть одинарная кавычка, валидная для HTML тоже. 3. Для этого надо ответить на простой вопрос, чем считываются данные, перед тем как они попадают к трансформеру? XSL - это язык преобразования, доступа к файлам, базам и прочим хранителям данных он не имеет. Значит вы используете какое-то API и проблема именно с этим API, а вовсе не с XML/XSL По описанию проблемы в голову приходит только Javascript, у которого имеются некоторые проблемы с кавычками. XML поставляется для обработки каким-то вариантом AJAX? |
|||
|
||||
t77 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Уважаемые коллеги, очень важный вопрос, который вы мне задавали:
"чем считываются данные", на который я ответил как чем- хсл.
Спешу с вами поделиться ибо может кому пригодится... Оказывается, проблема именно в методе -"text()", что в принципе и приводило в обрыванию текста. Необходимо обращаться непосредственно к самому тегу для получения значения. Спасибо всем. |
|||
|
||||
diadiavova |
|
||||||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Просто при цитировании поста я выделил текста больше чем надо, и потом вручную удалил лишнее, при удалении случайно убрал квадратную скобку со слешем и в результате вместо цитаты отобразился кусок разметки, так что никакого сакрального смысла в этом не было. Предполагалось, что это будет выглядеть так А что касается считывания тега, то мне не понятно следующее
Выходные данные - это и есть результат работы хслт, какое ещё считываение после этого производится, которое обрубает текст???
То есть после преобразования выполняется ещё одно преобразование что ли?
Ну извиняюсь, что не догадался. Всё никак свой хрустальный шар отыскать не могу. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
||||||||
|
|||||||||
t77 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Понимаете в базе данных имеется хмл файл, кторый я запрашиваю для трансформации. Так вот, в этом файле ХМЛ, имеются теги разных видов... И один из таких тегов - INPUT1, значение которого я пытался считать без обрыва. Именно в этом теге(INPUT1), что находится в файле ХМЛ, который находится в базе данных, сохранялись одинарные кавычки в виде символа -' И все таки, после того как проблема решена, хотелось бы понять, почему метод "text()", не может считывать значения тега хмл. Разве это не прямая обязанность данного метода ? |
|||
|
||||
diadiavova |
|
||||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
XML
XSLT
Результат
![]() -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
||||||
|
|||||||
t77 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Странно...
У меня срезается текст, как я описывал выше. А может быть причина тому:
Так как у меня установленно:
![]() |
||||
|
|||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Нет. Здесь может быть причина или в особенностях процессора, но это можно проверить если запустишь мой пример в том процессоре, который используешь ты, или, если мой пример там отработает нормально, значит проблемы в твоём коде. Вообще выражение, ./text() возвращает не строку, а набор узлов. Чойт в документации я не нашёл как набор узлов должен конвертироваться в строку, но по идее тут проблем быть не должно на сколько я понимаю: каждый узел должен конвертироваться в текст и вся коллекция представляет конкатенацию всех этих строк, но возможно некоторые процессоры действуют иначе. Хотя, по идее, строка, содержащая объекты подстановки должна рассматриваться как один текстовый узел, это яво прописано в спецификации - два текстовых узла соседствовать не могут. Поэтому фиг знает. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
t77 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 27.7.2008 Репутация: нет Всего: нет |
Дело в том, что я не могу запустить ваш пример, так как я работал на удаленной машине, где огромное множество хмл и хсл файлов. К тому же трансформация происходит на сервере, к которому не имею доступа в данное время.
![]() А вообще, как проверить, какой процессор используется ? Тогда я смогу установить его к себе на машину и прогнать ваш пример. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "XML/XSLT" | |
|
Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась. Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение. Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел Желаем удачи в Вашем деле! Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | XML, XSL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |