Проверка типа XSD по одному значению атрибута - PullRequest
2 голосов
/ 16 июня 2011

Как я помню, некоторое время назад у меня был похожий кусок XML:

<item type="Person" name="Pawel" Surname="Wu" />
<item type="Address" city="Sample town" address="Sample street etc." />

и я хочу подтвердить это с помощью XSD. Однако в последний раз, когда я делал это (около 2 лет назад у меня была такая задача), было невозможно указать тип элемента в соответствии со значением атрибута ( type в этом примере). Поэтому я был вынужден изменить структуру XML на что-то вроде этого:

<person name=..... />
<address city=..... />

и писать XSD было просто.

Сегодня у меня похожая проблема. В качестве входных данных я получаю XML-документ с общими элементами item , которые имеют атрибут type attriibute, и последний, в зависимости от значения этого атрибута, разрешает / требует другие атрибуты или нет. Документы в этой форме все еще создаются в системе вручную, поэтому я хотел бы иметь документ XSD, который уменьшит / устранит ошибки (легко забыть, что элемент item с type = "personalDetails" должен иметь определенный набор атрибутов).

Возможно ли написать XSD-схему для проверки таких документов сейчас?

Спасибо, Pawel

Ответы [ 2 ]

2 голосов
/ 16 июня 2011

Вы не можете проверить на основе значения атрибута.Однако вы можете использовать xsi:type, чтобы указать тип элемента в экземпляре XML. Нажмите , нажмите .

1 голос
/ 16 июня 2011

Это можно сделать с помощью XSD 1.1, который в настоящее время реализован в Xerces и Saxon (то есть пока еще не очень широко).

Один из способов справиться с проверкой общего словаря, подобного этому, - преобразовать его перед проверкой,то есть.конвертировать <attribute name="size" value="23"> в <size>23</size>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...