2011-09-30 109 views
2

我有这样的代码:XML Schema的多元素和属性

<root> 
     <skill id="1">C++</skill> 
     <skill id="2">C#</skill> 
     <skill id="3">Java</skill> 
     <skill id="4">PHP</skill> 
     <skill id="5">MYSQL</skill> 
     <skill id="6">HTML</skill> 
     <skill id="7">CSS</skill> 
     <skill id="8">JavaScript</skill> 
     <skill id="9">XML</skill> 
</root> 

我试图创建一个模式来这个,我不太清楚如何使用相同的名称声明多个元素和它的属性。 XML Schema: how to have multiple identical elements?,但不确定到底发生了什么。当我放置minOccurs时,我需要maxOccurs吗?在上面的链接中,我不明白模式中的属性部分是否可以有人帮助/详细说明?

回答

4

以下声明root元素(它只能出现一次并且必须指定)和一个skill元素的序列,其id属性的类型为xs:IDREF

xs:attribute为该元素声明一个属性。 name属性指定属性名称。 type属性指定数据类型。

<xs:element name="root" minOccurs="1"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="skill" minOccurs="1" maxOccurs="unbounded"> 
       <xs:complexType> 
        <xs:attribute name="id" type="xs:IDREF"/> 
       </xs:complexType> 
      </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 

我需要的maxOccurs当我把一个的minOccurs?

不,你不需要有maxOccurs。如果您没有指定它,则有一个隐含的maxOccurs="1"

+0

哇,很好的解释。如果所述元素具有名称属性而不是ID,它会是type =“xs:string”? –