Xsd 混合的差异=”;“真的”;和xs:XML模式中的扩展

Xsd 混合的差异=”;“真的”;和xs:XML模式中的扩展,xsd,Xsd,这两者之间的实际区别是什么: <xs:element name="A"> <xs:complexType mixed="true"> <xs:attribute name="att" type="xs:boolean"/> </xs:complexType> </xs:element> <xs:element name="B"> <xs:complexType> <xs:simpleCont

这两者之间的实际区别是什么:

<xs:element name="A">
 <xs:complexType mixed="true">
  <xs:attribute name="att" type="xs:boolean"/>
 </xs:complexType>
</xs:element>

<xs:element name="B">
 <xs:complexType>
  <xs:simpleContent>
   <xs:extension base="xs:string">
    <xs:attribute name="att" type="xs:boolean"/>
   </xs:extension>
  </xs:simpleContent>
 </xs:complexType>
</xs:element>

这两个是不同的。第一个示例使用
mixed=“true”
表示混合内容,即与子元素混合的字符数据。而您的第二个示例将元素内容限制为
xs:string
类型。两者都表示属性的存在


以你的例子来说,两者实际上是一样的。但是,如果您不打算使用混合内容,即不打算添加子元素,则第二个版本会更清晰。

即使是VS2010中的错误消息也是一样:
元素“X”不能包含子元素“Y”,因为父元素的内容模型仅为文本。
请参见@Michael Kay的回答: