|
XSD и namespace. Не могу пройти валидацию.
|
|||
---|---|---|---|
#18+
Есть XML c таким содержанием: Код: plaintext 1. 2. 3. 4.
а вот схема к нему: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
При валидации получается ошибка: "Элемент 'xsoDocument' в пространстве имен 'xxx' имеет недопустимый дочерний элемент 'soPayload' в пространстве имен 'xxx'. Список ожидаемых элементов: 'soPayload'.". Чувствую что, что-то не так с пространствами имен, а что именно ХЗ. И в схеме и в экземпляре ХМЛ прописано пространство имен "ххх". Спасибо за помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2010, 16:19 |
|
XSD и namespace. Не могу пройти валидацию.
|
|||
---|---|---|---|
#18+
PlayerDNЕсть XML c таким содержанием: Код: plaintext 1. 2. 3. 4.
а вот схема к нему: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
При валидации получается ошибка: "Элемент 'xsoDocument' в пространстве имен 'xxx' имеет недопустимый дочерний элемент 'soPayload' в пространстве имен 'xxx'. Список ожидаемых элементов: 'soPayload'.". Чувствую что, что-то не так с пространствами имен, а что именно ХЗ. И в схеме и в экземпляре ХМЛ прописано пространство имен "ххх". Спасибо за помощь. Схема под Ваш документ другая: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2010, 17:15 |
|
XSD и namespace. Не могу пройти валидацию.
|
|||
---|---|---|---|
#18+
Edkonst2008 спасибо за ответ, но не взлетело :( ошибка при загрузке схемы: "Значение xmlns не может использоваться в качестве имени для объявления атрибута.". Попутно хочу спросить: 1. Вы объявили в схеме вложенный элемент soPayload на самом верхнем уровне, а затем сослались на него из объявления xsoDocument . В чем отличие от того как сделал я (объявил вложенный элемент внутри родительского)? Так более правильно или это просто один из вариантов? 2. Я начал недавно разбираться с XML и XSD (надо сделать формат сохранения данных своей проге, ну и схему для его проверки), вроде бы все понял но стопорнулся на namespace'ах. По уму, как я понял, требуется иметь свой неймспейс для экземпляра XML, по дефолту он задается в атрибуте xmlns корневого элемента XML. Для того, чтобы сопоставить схему и экземпляр (т.е. что этот xml-файл надо проверять этой схемой) в схеме задаётся атррибут targetNamespace который должен совпадать с нейспейсом из XML-файла (иначе процедуру валидации проходят даже кривые XML-файлы). Вроде бы так. Правильно или я ошибаюсь? Нужны ли вообще мне неймспейсы (без них все работает как надо), будут ли у меня проблемы в будущем если я их не буду использовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2010, 11:50 |
|
XSD и namespace. Не могу пройти валидацию.
|
|||
---|---|---|---|
#18+
У меня получилось провалидировать вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Код: plaintext 1. 2. 3. 4.
По поводу необходимости использования namespaces описано тут: Я использую dot net для валидации и описание ошибки при использовании namespaces более удобен для анализа: The element 'xsoDocument' in namespace 'http://www.mberegovoy.ru' has invalid child element 'soPayload' in namespace 'http://www.mberegovoy.ru'. List of possible elements expected: 'soPayload'. без namespaces: The element 'xsoDocument' has invalid child element 'soPayload1'. List of possible elements expected: 'soPayload'. В первом случае легче определить в чем ошибка, поскольку namespace ясно определяет схему, по которой производится валидация ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2010, 16:39 |
|
XSD и namespace. Не могу пройти валидацию.
|
|||
---|---|---|---|
#18+
PlayerDN1. Вы объявили в схеме вложенный элемент soPayload на самом верхнем уровне, а затем сослались на него из объявления xsoDocument . В чем отличие от того как сделал я (объявил вложенный элемент внутри родительского)? Так более правильно или это просто один из вариантов? 2. Я начал недавно разбираться с XML и XSD (надо сделать формат сохранения данных своей проге, ну и схему для его проверки), вроде бы все понял но стопорнулся на namespace'ах. По уму, как я понял, требуется иметь свой неймспейс для экземпляра XML, по дефолту он задается в атрибуте xmlns корневого элемента XML. Для того, чтобы сопоставить схему и экземпляр (т.е. что этот xml-файл надо проверять этой схемой) в схеме задаётся атррибут targetNamespace который должен совпадать с нейспейсом из XML-файла (иначе процедуру валидации проходят даже кривые XML-файлы). Вроде бы так. Правильно или я ошибаюсь? Нужны ли вообще мне неймспейсы (без них все работает как надо), будут ли у меня проблемы в будущем если я их не буду использовать? Чё-то ответ какой-то непонятный тут Вам был дан, мне он не помог. Однако, при дальнейшем гуглении сам ответы нашёл, напишу для последователей: В доке вон оказывается пишут в соответствующей табличке: http://www.w3.org/TR/xmlschema-1/ If form is present and its ·actual value· is qualified, or if form is absent and the ·actual value· of elementFormDefault on the <schema> ancestor is qualified, then the ·actual value· of the targetNamespace [attribute] of the parent <schema> element information item, or ·absent· if there is none, otherwise ·absent·. Это значит, что если не задать у схемы атрибут elementFormDefault="qualified", то элементы корневого уровня, объявленные непосредственно внутри элемента <xsd:schema>, к targetNamespace схемы отнесены будут, а элементы, объявленные вложенными - на любом более глубоком уровне, если они сделаны не через ref на корневые элементы и не имеют собственного form="qualified", будут отнесены к нему, а к незаданному пространству имён, то есть к xmlns="". Если дочерний элемент объявлен через ref на элемент корневой, то он имеет свойства корневого, то есть к targetNamespace схемы относится. В общем, пишите elementFormDefault="qualified" схеме. Вот такая вот неожиданная особенность. Пол дня на неё сегодня убил ( ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2017, 19:36 |
|
|
start [/forum/topic.php?fid=14&msg=36582856&tid=1331997]: |
0ms |
get settings: |
15ms |
get forum list: |
7ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
50ms |
get topic data: |
2ms |
get forum data: |
1ms |
get page messages: |
199ms |
get tp. blocked users: |
0ms |
others: | 393ms |
total: | 669ms |
0 / 0 |