2015-07-10 2 views
0

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

<FIELD Name="ID" value="non-empty"> 

    </FIELD> 

    <FIELD Name="DATE" value ""> 

    </FIELD> 

Я хотел бы быть в состоянии описать в XSD, что эти атрибуты значения «ID» и «ДАТА» находятся внутри моего XML.

Возможно ли это?

+0

Целью будет описание точного упорядоченного списка значений атрибутов. – Deunz

ответ

2

Вы имеете в виду, что вы хотите ограничить первое поле с именем = "ID", второе - именем = "DATE" и т. Д.?

Вы не можете сделать это напрямую с помощью XSD 1.0 (существует правило, что если два элемента с тем же именем являются братьями и сестрами, они должны иметь один и тот же тип, что означает, что вы не можете применять к ним различные ограничения).

Два возможных решения: (a) используют другую технологию проверки, например. XSD 1.1 с утверждениями или Schematron, или (б) создать трубопровод проверки, в котором стадия 1 преобразует структуру к чему-то, как

<ID>non-empty</ID> 
<DATE/> 

и шаг 2 проверяет эту преобразованную структуру против схемы.

Побочный эффект этого второго подхода заключается в том, что преобразованный XML намного проще работать, чем ваш оригинал.

+0

Это было именно намерение. Спасибо за эти 2 варианта. Я попробую 1-го, так как структура XML действительно заморожена ... – Deunz