Как добавить GUID simpleType в XML-схему?

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

Любые идеи, как это сделать?

Ответ 1

Вы можете определить свой собственный простой тип "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>

Ответ 2

XML в основном содержит только строки, хотя XSD также определяет некоторые другие примитивные типы. Однако GUID не входит в число них.

Вы можете определить свою собственную схему для типа GUID. Многие люди это сделали. Вот как это сделала команда Microsoft OneNote: http://msdn.microsoft.com/en-us/library/aa203890(office.11).aspx.

Ответ 3

Я подозревал это. Иногда это помогает читать документы. Вот как это будет работать.

    <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>