2013-08-02 28 views
0

如果我有以下规则:这是一个很好的语法XML模式?

PIZZA-->doughSAUCECHEESE 

SAUCE-->marinara | bbq | pesto 

CHEESE-->mozarella | 

比萨字符串包含后跟1 3的酱料文字“面团”的。它可能会在那里结束(没有奶酪),或者以文字“mozarella”结尾。 这里是我的XML模式:

<xs:element name="pizza"> 
    <xs:complexType> 
    <xs:element name="doughLiteral" type="xs:string" fixed="dough"/> 
    <xs:element name="sauce"> 
     <xs:simpleType> 
     <xs:restriction base="xs:string"> 
      <xs:enumeration value="marinara"/> 
      <xs:enumeration value="bbq"/> 
      <xs:enumeration value="pesto"/> 
     </xs:restriction> 
     </xs:simpleType> 
    </xs:element> 
    <xs:element name="cheese"> 
     <xs:simpleType> 
     <xs:restriction base="xs:string"> 
      <xs:enumeration value="mozarella"/> 
     </xs:restriction> 
     </xs:simpleType> 
     <xs:simpleType> 
     <xs:restriction base="xs:string"> 
      <xs:pattern value=""/> 
     </xs:restriction> 
     </xs:simpleType> 
    </xs:element> 
    </xs: complexType> 
</xs: element> 

我,如果我正确指定了空字符串不能确定。此外,我读了默认情况下属性是可选的,默认情况下,元素是正确的,即上面的模式表明必须是1酱?谢谢。

+1

我不能把你定义的语法和XML之间的关系 – Seki

回答

1

默认情况下,元素是强制性的,使它们可选用minOccurs="0"

您缺少xs:sequence,并且在cheese元素定义中使用的双重xs:simpleType不正确。

正确的模式应该是这样的:

<xs:element name="pizza"> 
    <xs:complexType> 
    <xs:sequence> 
    <xs:element name="doughLiteral" type="xs:string" fixed="dough"/> 
    <xs:element name="sauce"> 
     <xs:simpleType> 
     <xs:restriction base="xs:string"> 
      <xs:enumeration value="marinara"/> 
      <xs:enumeration value="bbq"/> 
      <xs:enumeration value="pesto"/> 
     </xs:restriction> 
     </xs:simpleType> 
    </xs:element> 
    <xs:element name="cheese" minOccurs="0"> 
     <xs:simpleType> 
     <xs:restriction base="xs:string"> 
      <xs:enumeration value="mozarella"/> 
     </xs:restriction> 
     </xs:simpleType> 
    </xs:element> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

话虽如此,作为@seki正确地指出这个模式定义像XML结构:

<pizza> 
    <doughLiteral>dough</doughLiteral> 
    <sauce>marinara</sauce> 
    <cheese>mozzarella</cheese> 
</pizza> 

不是纯文本语法你在问题的开始处指定。

相关问题