2013-08-02 29 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> 

不是純文本語法你在問題的開始處指定。

相關問題