проверка xsd, предоставление информации об идентификаторах, содержащихся в перечислении

Я использую xsd для проверки моего xml. Один из элементов AddressType должен содержать только одно из значений (1,2,3).

          <AddressType>1</AddressType>

Я хотел бы предоставить информацию об этом идентификаторе. например 1 соответствует дому, 2 соответствует работе и т. д.

Я думал об использовании такого перечисления:

                <xs:enumeration value="1" id="Home"/>

но это не удастся, если любое другое перечисление имеет тот же идентификатор. Есть ли способ, которым мы можем предоставить значение, а также информацию об идентификаторе.


person Punit    schedule 27.09.2012    source источник


Ответы (2)


Мое первое предложение — не использовать идентификаторы в XML (XML читается человеком ;-)). Если вам нужно, вы можете использовать xsd:annotation/xsd:documentation, чтобы указать, что означает каждый из идентификаторов.

person Aravind Yarram    schedule 27.09.2012

Это зависит от ваших ожиданий от приложения, которое проверяет ваш XML, и что именно вы подразумеваете под provide information about these ids. Чтобы улучшить сообщения об ошибках? Использовать его при создании форм ввода данных из XSD?

Один из способов сделать это — использовать механизм аннотаций XML-схемы.

  • Валидаторы обычно дают вам доступ к конкретному объекту схемы, связанному с узлом XML, и в этом случае вы можете извлечь дополнительную информацию из аннотаций.

  • Другие инструменты, которые создают формы ввода данных из XSD, могут отображать раскрывающийся список, в котором текст берется из аннотации, а значение — из значения перечисления. Обычно они уже содержат рекомендуемую разметку и способы ее вставки в XSD.

        <xs:enumeration value="1">
            <xs:annotation>
                <xs:documentation>Home</xs:documentation>
                <xs:appinfo>
                    <something:proprietary>Home</something:proprietary>
                </xs:appinfo>
            </xs:annotation>
        </xs:enumeration>
    
person Petru Gardea    schedule 27.09.2012