![]() |
|
Модераторы: diadiavova |
![]()
|
|
| Compositum |
|
|||
|
Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Доброго времени суток.
К топику прилагаю архив с несколькими файлами. Файлы представляют собой простенький тестовый пример, в котором я пытаюсь к xml-файлу прикрутить xsl и xsd. Суть проблемы в том, что если я из xml-файла удаляю информацию о привязке к xsd, то в браузере получаю корректно отформатированное, верное представление документа (license.xml). Однако при наличии привязки к xsd - в браузере я получаю неверное представление информации (т.е. вместо текста лицензии вижу сообщение о том, что лицензия пуста). Либо я ошибся в коде xsd, либо не правильно пытаюсь привязать xsd к xml. Буду весьма признателен за помощь. С уважением Андрей. Это сообщение отредактировал(а) Compositum - 29.3.2012, 10:33 Присоединённый файл ( Кол-во скачиваний: 4 )
sample.zip 3,91 Kb |
|||
|
||||
| Compositum |
|
|||
|
Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
я обновил архив - нашел в xsd файле несколько опечаток и ошибку (помог IDE MS VS 2010)
|
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Compositum, из того, что бросается в глаза в документе вот это не правильно
Этот атрибут должен содержать набор пар "префикс - пространство имен", а для пространств без префикса используется атрибут xsi:noNamespaceSchemaLocation Ну и главное - это само преобразование, оно совершенно ничего не знает о пространстве имен, описанном в схеме и все выражения xpath оно относит к элементам пустого пространства. Надо подключить к преобразованию пространство схемы (желательно с префиксом) и в выражениях при указании элемента использовать этот префикс. А в корне документа используй атрибут exclude-result-prefixes. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| Compositum |
|
|||
|
Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Спасибо за ответ. Я обновил архив - добавил в xsd-файл определение типа langType.
С помощью этого кода проверил свой xml-файл на предмет его соответствия xsd-схеме. Проверка прошла успешно... Однако в браузере по прежнему депрессия. Используемый мною атрибут (schemaLocation) я срисовал из книги Дига Тидуэлла. С этим атрибутом всё прекрасно работает по указанному мною выше коду. Я не понял насчёт "префикс - пространство имен" - можете пример показать? Я ведь указал у себя своё пространство имён используемым по умолчанию, т.о. путаниц с префиксами возникать не должно. Это сообщение отредактировал(а) Compositum - 29.3.2012, 10:42 |
|||
|
||||
| diadiavova |
|
||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
А причем тут это? Каким образом данное расположение схемы должно с этим пространством ассоциироваться?
Не префикс, а пространство-местоположение http://msdn.microsoft.com/ru-ru/library/ms...28VS.90%29.aspx то есть этот атрибут указывает где надо искать схему для каждого пространства имен и значения его должны быть парными и пробелы должны заменяться последовательностями %20 Но я еще раз повторяю, что это не главная проблема. Главная проблема в файле xslt. Перечитай мой предыдущий пост, я там описал что надо сделать. Добавлено через 1 минуту и 2 секунды и кстати сюда тоже загляни http://msdn.microsoft.com/ru-ru/library/ms...28VS.90%29.aspx -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
||||
|
|||||
| Compositum |
|
||||
|
Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Внёс изменения в XML и XSL файлы...
XML-файл:
XSL-файл:
Результат по прежнему нулевой. Указал в XSL нужные пространства. Что упустил? п.с. по указанной ссылке я не понял - что подразумевается под "исключённым пространством имён"? Т.е. элементы этого пространства не будут видны xsl-схемой? п.с.2 я пробовал и без атрибута exclude-result-prefixes - не помогло. Это сообщение отредактировал(а) Compositum - 29.3.2012, 11:46 |
||||
|
|||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Под преобразованием я конечно же имел в виду XSLT. С первого поста я сказал, что проблема именно в нем. Дальше я это повторил
И тоже безрезультатно. XSD на представление вообще не влияет, его может и не быть в принципе и это никак не отобразится на виде. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| Compositum |
|
|||
|
Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
в предыдущем сообщении я несколько раз опечатался - вместо 'XSL' написал 'XSD'. исправил.
это не так. Посмотри внимательней мой предыдущий пост с исходниками XML и XSL. Пространство имён одно и то же. Это сообщение отредактировал(а) Compositum - 29.3.2012, 11:43 |
|||
|
||||
| diadiavova |
|
||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Я там еще писал, что надо объявлять пространство с префиксом и потом его эксклюдить. Почему не работает для дефолтного пространства - я не знаю, честно говоря просто руки не доходили разобраться в чем дело, но если все делать с префиксом, то должно работать. И схемалокейшн в преобразовании не требуется. По большому счету она и в хмл чаще всего не требуется, все решают пространства имен. Добавлено через 9 минут и 11 секунд Вот так попробуй
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
||||
|
|||||
| Compositum |
|
|||
|
Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
не работает:
а почему ты убрал атрибут, указывающий на нужный xsd-файл? Как по твоему он должен искать схему? |
|||
|
||||
| Compositum |
|
||||||
|
Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
получилось. спасибо за помощь! Ты в коде сделал ошибку:
Здесь не нужны префиксы "p", т.к. это путь к файлу, а не XML-дерево. Рабочий вариант:
Я вот только не пойму, почему он работает несмотря на то, что ты не указал размещение XSD-файла... В моём понимании файл должен быть таким:
причём этот вариант так же работает... п.с. Оба варианта работают даже если удалить XSD-файл. Т.е. получается, что обращения к XSD-файлу для проверки валидности контента не происходит??? Добавлено @ 12:31 Выкладываю работающий результат (см. прикреплённый файл). Правда меня смущает то, что, судя по всему, не происходит проверка на соответствие XSD-схеме, прежде чем отобразить содержимое в браузере... Это сообщение отредактировал(а) Compositum - 29.3.2012, 12:32 Присоединённый файл ( Кол-во скачиваний: 2 )
sample.zip 3,99 Kb |
||||||
|
|||||||
| Compositum |
|
|||
|
Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
правильно ли я понял, что браузеры не занимаются проверкой XML на валидность, несмотря на то, что в нём указана нужная XSD-схема? Или можно как-то указать, чтобы обязательно проверял, прежде чем выполнять отображение в соответствии с XSL?
|
|||
|
||||
| diadiavova |
|
||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
У меня это выглядит так ![]()
Зачем преобразованию искать схему? У меня как только получилось, так я и выложил, нотариально заверенный скриншот тому подтверждение
Я это уже объяснил в предыдущих постах. Ну не влияет схема на отображение -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
||||
|
|||||
| Compositum |
|
|||
|
Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
странно, что у тебя отработало... у меня, пока я не убрал префиксы из пути к файлу, IE 8 выдавал указанную мною ошибку. А как насчёт моего последнего вопроса?
Это сообщение отредактировал(а) Compositum - 29.3.2012, 12:50 |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Я в лисе смотрел, но если это имя файла, то действительно странно. ИЕ9 просто выдает содержимое сплошняком. Я об этом уже писал
И дело не в браузерах. Просто XSLT в принципе пофиг валидность, главное, чтобы документ был well-formed. Можешь выполнять преобразование программно, без помощи браузера и результат будет тем же. В XSLT2 вроде со схемой согласуется, тут была тема как-то, но совсем по другому поводу. В любом случае, сехма для преобразования не нужна и валидность ему тоже пофиг. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
![]()
|
| Правила форума "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. |