2011-01-10 92 views
0

我处理,看起来像一个XML架构:XML:为避免XS /默认值:扩展

<?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(因此对内容进行验证)。这可以做到吗?

谢谢。

回答

0

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

0

没有类型,称为XS:任何,所以你不能扩展。也许你在想xs:anyType?但我不确定为什么你想延长这一点,因为它已经允许一切。在我看来,从你描述的内容看,你应该省略xs:complexContent和xs:扩展名,并简单地将你的内容模型定义为xs:complexType的子元素。

+0

嘿迈克尔,我试过了,但我得到'[$元素]不能有内容与它的类型为空'或沿着这些线的东西的错误。 – 2011-01-11 03:03:51