добавление атрибутов в документ XML - PullRequest
2 голосов
/ 22 февраля 2009

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


12

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

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


12

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

У меня вопрос: есть ли какой-нибудь способ «расширить» исходную схему в новой схеме, не меняя ее? Или же добавление таких атрибутов всегда допустимо при условии, что они действительны в соответствии со своей собственной схемой?

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

1 Ответ

1 голос
/ 22 февраля 2009

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

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

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

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

...