我正在处理一个类似于:
的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:element
或xs:any
。我可以使用什么,仍然使用complexContent
,而不是从任何地方继承东西,让我定义我想要的东西并对其进行验证?所以,我不想处理xs:extension
问题,但我确实想使用xs:complexContent
(因此对内容进行验证)。可以这样做吗?
感谢。
答案 0 :(得分:0)
使用<xs:extension base="xs:anyType">
答案 1 :(得分:0)
没有名为xs:any的类型,因此您无法扩展它。也许你在考虑xs:anyType?但是我不确定你为什么要扩展它,因为它已经允许了所有内容。在我看来你想要实现的内容中,你应该省略xs:complexContent和xs:extension,并简单地将你的内容模型定义为xs:complexType的子代。