我使用百叶帘模式来设计我的XML模式,它要求所有类型都在全局级别声明,并且所有元素都使用全局范围中定义的类型。
我的问题是:
如果我想声明2个简单字符串而没有其他限制的元素,我应该在全局范围内声明它们然后使用它们吗?或者我可以在元素本身内直接声明一个简单类型吗?我是否在下面列出的第二种情况中打破了隐形百叶窗?
例如,我可以选择其中之一:
<xsd:schema>
<xsd:simpleType name="ApplicantName">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="ApplicantCountry">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:element name="Application">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ApplicantName" type="ApplicantName"/>
<xsd:element name="ApplicantCountry" type="ApplicantCountry"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
或者我可以使用它。
<xsd:schema>
<xsd:element name="Application">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ApplicantName" type="xsd:string"/>
<xsd:element name="ApplicantCountry" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
答案 0 :(得分:3)
那么,你为什么选择遵循这种模式?哪个选项提供了模式承诺的好处?回答这些问题,我想你有答案。
在我看来,这种模式需要第一种方法。模式是否实际具有价值,或者是否应该如此严格地遵循该模式是由您决定的。问题的核心是你首先要通过使用模式来实现的目标。
答案 1 :(得分:1)
我会说:这取决于。威尼斯百叶窗的目标是重用类型,但除非你的某些元素共享一个共同的限制,例如,后端数据库强加的字段长度,你不会从宗教上遵循这个模式获得任何东西。