【发布时间】:2015-12-14 09:09:30
【问题描述】:
我想使用一个模式来强制执行我的 ID/IDRefs。下面的代码完美运行,但我想对其进行一些优化,因为除了模式中的前 3 个字符之外,所有不同的类型都是相同的。是否可以有一个泛型类型,它将前缀(SEG,ITI,...)作为参数?
<xsd:complexType name="SegmentIDRefs">
<xsd:complexContent>
<xsd:restriction base="common:IDRefs">
<xsd:attribute name="Id">
<xsd:simpleType>
<xsd:restriction base="xsd:ID">
<xsd:pattern value="SEG_[\da-fA-F]{8}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="GUID" type="common:external.GUID"/>
<xsd:attribute name="RefId">
<xsd:simpleType>
<xsd:restriction base="xsd:IDREF">
<xsd:pattern value="SEG_[\da-fA-F]{8}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ItineraryIDRefs">
<xsd:complexContent>
<xsd:restriction base="common:IDRefs">
<xsd:attribute name="Id">
<xsd:simpleType>
<xsd:restriction base="xsd:ID">
<xsd:pattern value="ITI_[\da-fA-F]{8}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="GUID" type="common:external.GUID"/>
<xsd:attribute name="RefId">
<xsd:simpleType>
<xsd:restriction base="xsd:IDREF">
<xsd:pattern value="ITI_[\da-fA-F]{8}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
【问题讨论】:
-
您可以使用 XSD 1.1 吗?
-
这应该不是问题。 XSD 1.1 是否提供了可能性?
-
可以使用断言来完成,但是这个解决方案并没有完全实现参数类型。