2010-01-15 28 views
4
<?xml version="1.0" encoding="utf-8"?> 
<xs:schema xmlns="http://tempuri.org/ServiceDescription.xsd" xmlns:mstns="http://tempuri.org/ServiceDescription.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://tempuri.org/ServiceDescription.xsd" elementFormDefault="qualified" id="ServiceDescription"> 
    <xs:element name="Template"> 
     <xs:complexType> 
      <xs:complexContent>          
       <xs:extension base="ServiceType"> 
        <xs:all> 
         <xs:element name="TemplateCode" type="xs:string"/> 
        </xs:all> 
       </xs:extension> 
      </xs:complexContent> 
     </xs:complexType> 
    </xs:element> 
    <xs:complexType name="ServiceType"> 
     <xs:all> 
      <xs:element name="ServiceCode" type="xs:string"/> 
     </xs:all> 
    </xs:complexType> 
</xs:schema> 

当我试图把它保存在XMLSpy的它告诉我使用xs:all扩展XML模式类型有什么问题?

的“所有”模型组既不复杂类型定义允许“mstns:服务类型”,也不在其扩展名“{匿名}”。

单击详细信息给出链接到a paragraph in XML Schema specification,我不明白。

新增:啊,是的,忘了提 - 错误的行是这一个:

<xs:element name="TemplateCode" type="xs:string"/> 

回答

4

问题是你不能拥有一切,如果你扩展其他类型。至于XML知道父类型可能有序列模型,并且由于XML禁止将所有组放入序列组中(因为这会破坏序列组的排序),因此XML还禁止将所有组放入复合体的扩展中类型。你可以使用序列,而不是所有的两个,但你会没事的。

+3

除了元素会有严格的顺序,这是我不想要的。等等。 – 2010-01-15 14:43:01