Как добавить GUID simpleType в схему XML? - PullRequest
11 голосов
/ 21 июня 2009

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

Есть идеи как это сделать?

Ответы [ 3 ]

14 голосов
/ 22 июня 2009

Вы можете определить свой собственный простой тип "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>
4 голосов
/ 22 июня 2009

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

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

1 голос
/ 22 июня 2009

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

<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:restriction>
         </xs:simpleType>
      </xs:attribute >
    </xs:complexType >
  </xs:element>
...