XML:xs:extension的避免/默认值

时间:2011-01-10 06:31:00

标签: xml xsd

我正在处理一个类似于:

的XML架构
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="XML" type="XMLType"/>
   <xs:complexType name="client_summaryType">
    <xs:complexContent mixed="true">
      <xs:extension base="xs:any"><xs:sequence><xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded" /></xs:sequence>
        <xs:attribute type="xs:string" name="cid"/>
        <!-- other attributes -->
        <xs:anyAttribute processContents="skip" /></xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="XMLType">
    <xs:choice maxOccurs="unbounded">
      <xs:element minOccurs="0" maxOccurs="unbounded" type="client_summaryType" name="client_summary"/>
    </xs:choice>
  </xs:complexType>
</xs:schema>

我不断得到的错误是:

attribute 'base': The QName value '{http://www.w3.org/2001/XMLSchema}any' does not resolve to a(n) simple type definition.

现在,我的问题是,如何避免xs:extension陷阱?我无法使用base="xs:string",因为我想在client_summaryType中包含元素。显然,我也不能使用xs:elementxs:any。我可以使用什么,仍然使用complexContent,而不是从任何地方继承东西,让我定义我想要的东西并对其进行验证?所以,我不想处理xs:extension问题,但我确实想使用xs:complexContent(因此对内容进行验证)。可以这样做吗?

感谢。

2 个答案:

答案 0 :(得分:0)

使用<xs:extension base="xs:anyType">

答案 1 :(得分:0)

没有名为xs:any的类型,因此您无法扩展它。也许你在考虑xs:anyType?但是我不确定你为什么要扩展它,因为它已经允许了所有内容。在我看来你想要实现的内容中,你应该省略xs:complexContent和xs:extension,并简单地将你的内容模型定义为xs:complexType的子代。