Где добавить версию в схему XSD?
В приложении, в котором я работаю, есть выход XML, который соответствует схеме XSD. По мере добавления функций в приложение XSD изменяется, и я хотел бы отметить версию схемы в XSD файле.
Возможно, мне что-то не хватает, но я не нашел встроенного способа пометить версию схемы.
Как вы это делаете?
Ответы
Ответ 1
Вы можете использовать пространство имен вашего документа xsd
<xs:schema targetNamespace="http://yourcompany/yourapp/1.0" ... >
...
</xs:schema>
В качестве примера рассмотрим xsd, определенный w3.org, вот как они это делают. Обратите внимание, что изменение номера версии здесь, по определению, будет критическим изменением для любого потребителя вашего xsd (независимо от того, насколько маленьким было реальное изменение или какая часть номера версии вы изменили).
Для менее влиятельного управления версиями, похоже, существует соглашение о добавлении атрибута версии в ваш корневой элемент:
<xs:schema version="1.0.0" ...>
...
</xs:schema>
Ответ 2
В соответствии с элементом schema
сам имеет атрибут version
:
<schema
attributeFormDefault = (qualified | unqualified) : unqualified
blockDefault = (#all | List of (extension | restriction | substitution)) : ''
elementFormDefault = (qualified | unqualified) : unqualified
finalDefault = (#all | List of (extension | restriction | list | union)) : ''
id = ID
targetNamespace = anyURI
version = token
xml:lang = language
{any attributes with non-schema namespace . . .}>
Content: ((include | import | redefine | annotation)*, (((simpleType | complexType | group | attributeGroup) | element | attribute | notation), annotation*)*)
</schema>
См. http://www.w3.org/TR/xmlschema-1/#key-schema, "3.15.2 XML-представления схем"
Однако, если вы опубликовали схему, я думаю, что лучший способ справиться с ней - использовать целевое пространство имен. Это обеспечит использование правильной версии (но нарушает совместимость)