Я пытаюсь создать XML-схему, которая позволяет сохранить значение атрибута в качестве GUID в собственном формате. Я мог бы установить его как строку, но было бы неплохо сохранить его как настоящий GUID.
Любые идеи, как это сделать?
Я пытаюсь создать XML-схему, которая позволяет сохранить значение атрибута в качестве GUID в собственном формате. Я мог бы установить его как строку, но было бы неплохо сохранить его как настоящий GUID.
Любые идеи, как это сделать?
Вы можете определить свой собственный простой тип "GUID", ограничив строку с помощью регулярного выражения следующим образом:
<xs:simpleType name="GUID">
<xs:restriction base="xs:string">
<xs:pattern value="([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})|(\{[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\})"/>
</xs:restriction>
</xs:simpleType>
XML в основном содержит только строки, хотя XSD также определяет некоторые другие примитивные типы. Однако GUID не входит в число них.
Вы можете определить свою собственную схему для типа GUID. Многие люди это сделали. Вот как это сделала команда Microsoft OneNote: http://msdn.microsoft.com/en-us/library/aa203890(office.11).aspx.
Я подозревал это. Иногда это помогает читать документы. Вот как это будет работать.
<xs:simpleType name="GUID">
<xs:restriction base="xs:string">
<xs:pattern value="([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})|(\{[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\})"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="ruleident">
<xs:complexType>
<xs:attribute name="ruleGuid" >
<xs:simpleType>
<xs:restriction base ="GUID"/>
</xs:simpleType>
</xs:attribute >
</xs:complexType >
</xs:element>