如何将GUID simpleType添加到XML模式中?

时间:2009-06-21 19:52:52

标签: xml types xsd guid

我正在尝试创建XML架构,该架构允许将属性值存储为本机格式的GUID。我可以将它设置为字符串,但将它存储为真正的GUID会很好。

任何想法怎么做?

3 个答案:

答案 0 :(得分:14)

您可以通过使用正则表达式限制字符串来定义自己的自定义简单类型“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>

答案 1 :(得分:4)

XML基本上只包含字符串,但XSD也定义了某些其他基本类型。然而,GUID不在其中。

您可以为GUID类型定义自己的架构。很多人都这样做了。以下是Microsoft OneNote团队的工作方式:http://msdn.microsoft.com/en-us/library/aa203890(office.11).aspx

答案 2 :(得分:1)

我已经把它搞砸了。有时阅读文档会有所帮助。这是它的工作方式。

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