我需要在类型上暗示限制和属性。我知道可以这样做
<xs:simpleType name="Name">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="15"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="MyCustomeName">
<xs:simpleContent>
<xs:extension base="mc:Name">
<xs:attribute name="MyTypeOfName" fixed="MCN"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
有没有办法在一行“内联”
中完成所有操作我可以添加内联限制,但是我无法在
中添加属性<xs:simpleType name="MyCustomName">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="15"/>
<xs:attribute name="MyTypeOfName" fixed="MCN"/> --> This gives an error
</xs:restriction>
</xs:simpleType>
我想要这样做的原因是...我们将XSD暴露给第三方,他们对类型的继承存在问题,因此我想做所有内联。
答案 0 :(得分:1)
无法将限制和扩展合并到XML架构中的一个块中。您使用<simpleType>
和<complexType>
恕我直言显示的解决方案是这样做的。
如果您不想定义<complexType>
,则可以直接定义<element>
,但它与您正在进行的基本相同,但没有可能重复使用<complexType>
:
<xs:simpleType name="Name">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="15"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="MyCustomeName">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="Name">
<xs:attribute name="MyTypeOfName" fixed="MCN"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
希望得到这个帮助,