2009-02-22 6 views
2

У меня есть XML-схема и экземпляр документа, который я получаю от клиента. Например, документ может быть:Добавление атрибутов в документ xml

< док >
    <carId/carId>
</DOC >

И действительно, согласно схеме.

Я хотел бы, чтобы комментировать это с моими атрибутами:

<DOC>
    < carId myns: действительный = "истинный"/carId >
</док >

Я хотел бы, чтобы аннотированный документ был действительным в соответствии с какой-то схемой - я не знаю Не волнуй, какая схема, я думаю, она будет основана на оригинальной.

Вопрос в том, есть ли способ «расширить» исходную схему в новой схеме без ее изменения? Альтернативно, добавление таких атрибутов всегда законно, если они действительны по их собственной схеме?

Я не могу ничего предположить о исходной схеме, то есть не обязательно объявлять, что xsd: anyAttribute разрешен для своих элементов.

ответ

1

Это будет объявлено с использованием xsd:anyattribute. Он может быть либо оставлен открытым для любого атрибута вообще, ограниченным определенным пространством имен, либо (чаще всего), разрешенным для любого пространства имен, отличного от того, которое определено сейчас).

Один простой ответ, если вы просто хотите проверить правильность и не нуждаетесь в данных схемы во время выполнения, заключается в том, чтобы удалить ваши атрибуты из копии и проверить это.

Было бы довольно легко создать схему с необходимыми объявлениями anyAttribute для каждого complexType, получая расширение, если у complexTypes есть имена, а исходная схема не использовала final, чтобы запретить это.

Но если у вас действительно нет контроля над схемой ввода, я не вижу никаких параметров, кроме как изменять его.

Смежные вопросы