我有一个只能有两个值的属性.使用它更好吗?模式? xsd:attribute name="sex" xsd:simpleType xsd:restriction base="xsd:string" xsd:pattern value="male|female" / /xsd:restriction /xsd:simpleType/xsd:attribute 还是枚举?
<xsd:attribute name="sex"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:pattern value="male|female" /> </xsd:restriction> </xsd:simpleType> </xsd:attribute>
还是枚举?
<xsd:attribute name="sex"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="male"></xsd:enumeration> <xsd:enumeration value="female"></xsd:enumeration> </xsd:restriction> </xsd:simpleType> </xsd:attribute>
如果没有差异,我将使用模式(少一行)
两者都是合法的XSD,似乎都不会对XSD简单类型的任何符合甚至部分符合的实现造成问题,并且我预计它将需要大量数据和非常精确的测量来检测它们之间的任何速度差异.所以问题“哪个更好?”基本上相当于“对那些阅读架构的人来说哪一个更容易理解?”这个问题.这是一个只有你能回答的问题.
对于它的价值,我会观察到使用枚举的公式可以提供关于每个值的含义或预期用法的文档;这可能是因为我通常在这种情况下使用枚举. (“男性”和“女性”这两个值似乎很简单,但在某些模式中,像这样的枚举还需要包含“未知”和“拒绝状态”的值,用户可能需要指导什么时候到使用哪个值.)