如何使多个枚举的属性?架构 XSD

How to make an attribute of multiple enumerations? schema XSD

我正在尝试建立一个数据库,其中包含一些产品在日本、北美和欧盟的发布日期。 我想让它成为这样,如果在同一产品中重复某个日期,我可以将区域分组在一个元素中,如下所示:

<releasedate>
     <zone zone="JP">30/08/1987</zone>
     <zone zone="NA|EU">22/11/1987</zone>
</releasedate>

在架构中我有以下代码:

<xsd:attribute name="zone">
 <xsd:simpleType>
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="JP"/>
    <xsd:enumeration value="NA"/>
    <xsd:enumeration value="EU"/>
   </xsd:restriction>
  </xsd:simpleType>
 </xsd:attribute>

也尝试制作像 "JP|NA|UE" 和“(JP|NA|UE){1,3}”这样的模式。 none 对我有用,我不知道我是否使用错误的方式来分隔值,但我尝试了管道 |并且属性中还有空格

你可以定义一个 xsd:simpleType:

<xsd:simpleType name="location">
  <xsd:restriction base="xsd:string">
    <xsd:pattern value="((^|\|)(JP|NA|EU))+$"/>
  </xsd:restriction>
</xsd:simpleType>

pattern value 中的正则表达式将匹配 JPJP|NAJP|NA|EU 和所有其他可能组合的值。

那么您只需要将属性的值限制为 location:

<xsd:attribute name="zone" type="location"/>