在许多属性中重复使用 simpleType
Reuse a simpleType in many attributes
我试图在其中一个属性中重用 serverType
,但它似乎根本无法验证或使用它。 XSD 文件没有错误。
我不确定是否需要在文件中的特定位置插入 <xs:simpleType name="serverType">
。我四处移动但没有运气。
这是片段集:
<xs:element minOccurs="0" maxOccurs="unbounded" name="servers">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="server">
<xs:simpleType name="serverType">
<xs:restriction base="xs:string">
<xs:enumeration value="IIS"/>
<xs:enumeration value="Exchange"/>
<xs:enumeration value="Sharepoint"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType>
<xs:attribute name="id">
<xs:simpleType>
<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:attribute>
<xs:attribute name="type" type="serverType" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
这有效,但没有重复使用代码:
<xs:attribute name="type">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="IIS"/>
<xs:enumeration value="Sharepoint"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
这是 XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup type="Contoso.ConfigurationSectionGroup, Contoso" name="atc">
<section name="siteManager" type="Contoso.SiteManagerConfigurationSection, Contoso.Dashboard" />
</sectionGroup>
</configSections>
<atc>
<siteManager>
<sites version="1.0.0">
<site id="007F10AB-E6E2-4F47-989E-3F946B454CBE" name="SITE001 (Central)">
<servers>
<server id="76883A93-99EE-4571-B9FA-C4AE6D2A3ED1" name="SERVER001" type="IIS" fqdn="SERVER001.CONTOSO.COM" ipAddress="10.10.10.10" />
</servers>
</site>
</sites>
</siteManager>
</atc>
</configuration>
要重新使用 xs:simpleType
,您必须为其命名(检查)并使其成为全局的(见下文):
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="serverType">
<xs:restriction base="xs:string">
<xs:enumeration value="IIS"/>
<xs:enumeration value="Exchange"/>
<xs:enumeration value="Sharepoint"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="servers">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="server">
<xs:complexType>
<xs:attribute name="id">
<xs:simpleType>
<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:attribute>
<xs:attribute name="type" type="serverType" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
则以下XML有效:
<servers>
<server id="76883A93-99EE-4571-B9FA-C4AE6D2A3ED1" type="IIS"/>
</servers>
而下面的XML将无效:
<servers>
<server id="76883A93-99EE-4571-B9FA-C4AE6D2A3ED1" type="BAD"/>
</servers>
我试图在其中一个属性中重用 serverType
,但它似乎根本无法验证或使用它。 XSD 文件没有错误。
我不确定是否需要在文件中的特定位置插入 <xs:simpleType name="serverType">
。我四处移动但没有运气。
这是片段集:
<xs:element minOccurs="0" maxOccurs="unbounded" name="servers">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="server">
<xs:simpleType name="serverType">
<xs:restriction base="xs:string">
<xs:enumeration value="IIS"/>
<xs:enumeration value="Exchange"/>
<xs:enumeration value="Sharepoint"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType>
<xs:attribute name="id">
<xs:simpleType>
<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:attribute>
<xs:attribute name="type" type="serverType" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
这有效,但没有重复使用代码:
<xs:attribute name="type">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="IIS"/>
<xs:enumeration value="Sharepoint"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
这是 XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup type="Contoso.ConfigurationSectionGroup, Contoso" name="atc">
<section name="siteManager" type="Contoso.SiteManagerConfigurationSection, Contoso.Dashboard" />
</sectionGroup>
</configSections>
<atc>
<siteManager>
<sites version="1.0.0">
<site id="007F10AB-E6E2-4F47-989E-3F946B454CBE" name="SITE001 (Central)">
<servers>
<server id="76883A93-99EE-4571-B9FA-C4AE6D2A3ED1" name="SERVER001" type="IIS" fqdn="SERVER001.CONTOSO.COM" ipAddress="10.10.10.10" />
</servers>
</site>
</sites>
</siteManager>
</atc>
</configuration>
要重新使用 xs:simpleType
,您必须为其命名(检查)并使其成为全局的(见下文):
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="serverType">
<xs:restriction base="xs:string">
<xs:enumeration value="IIS"/>
<xs:enumeration value="Exchange"/>
<xs:enumeration value="Sharepoint"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="servers">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="server">
<xs:complexType>
<xs:attribute name="id">
<xs:simpleType>
<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:attribute>
<xs:attribute name="type" type="serverType" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
则以下XML有效:
<servers>
<server id="76883A93-99EE-4571-B9FA-C4AE6D2A3ED1" type="IIS"/>
</servers>
而下面的XML将无效:
<servers>
<server id="76883A93-99EE-4571-B9FA-C4AE6D2A3ED1" type="BAD"/>
</servers>