- From: <bugzilla@wiggum.w3.org>
- Date: Wed, 06 Aug 2008 13:31:06 +0000
- To: www-xml-schema-comments@w3.org
http://www.w3.org/Bugs/Public/show_bug.cgi?id=5932
Summary: Open content with empty content models
Product: XML Schema
Version: 1.1 only
Platform: PC
OS/Version: Windows NT
Status: NEW
Severity: normal
Priority: P2
Component: Structures: XSD Part 1
AssignedTo: cmsmcq@w3.org
ReportedBy: mike@saxonica.com
QAContact: www-xml-schema-comments@w3.org
Consider:
<xs:complexType name="e">
<xs:openContent>
<xs:any namespace="http://wild.com/"/>
</xs:openContent>
<xs:sequence/>
</xs:complexType>
Working through the rules in 3.4.2.3.3:
1. The effective mixed is false
2. The explicit content is empty
3. The effective content is empty
4. The explicit content type is: (variety=empty, particle=absent,
open-content=absent, simple-type-definition=absent)
5. the wildcard-element is the openContent element
6. Therefore the {content type} property is (variety=empty,
particle=<sequence/>, open-content=(<xs:any/>, interleave),
simple-type-definition=absent)
So the rules seem to go to some lengths to ensure that the {content type}
includes the open content. This would be even more true if the open content
were derived from a <defaultOpenContent> with appliesToEmpty=true.
But now look at the validation rules in 3.4.4.2. Rule 1 is:
1.1 If T.{content type}.{variety} = empty, then E has no character or element
information item [children].
That is, it doesn't make any difference what {content type}.{open content}
says, the element is only valid if there are no children. Only if {variety} is
mixed or element-only do we invoke Element Sequence Locally Valid (Complex
Content) (§3.4.4.3), which is where {open content} comes into play.
I find it hard to believe this was intended, especially given the attribute
appliesToEmpty.
Also it seems we have carefully constructed a complexType schema component that
violates the constraint in 3.4.6.1:
5 If {content type}.{open content} is ·non-absent·, then {content
type}.{variety} is either element-only or mixed.
I'm not sure what the right fix is. It might be to make variety=element-only in
this case. But this would also have effects on deriving types by extension, and
I haven't begun to study in detail what happens when types with open content
are extended.
(Incidentally, another consequence of the current rules is that a
defaultOpenContent applies to
<xs:complexType name="e" mixed="true">
<xs:sequence/>
</xs:complexType>
whether or not it specifies appliesToEmpty="true". I don't know if this was the
intention. But it does no harm.)
--
Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
Received on Wednesday, 6 August 2008 13:31:41 UTC