Re: [xml] [BUG?] Global attribute declaration in schema is not used at root node



Hi,

On Wed, 2005-11-30 at 16:42 +0100, Dominique Quatravaux wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Dear libxml hackers,

I am by no stretch enlightened in XML schemas, but I'm seeing a
behavior that very much looks like a bug in libxml2's w3c-schema
validator. I'm using version 2.6.22 on Debian sarge.

I believe the two XML files below should both validate, but only
ok.xml actually does. Rationale: "free" attribute declarations (here
the id attribute) are available to all elements, or so I thought.

== ok.xml ==

<foo xmlns="http://example.com/xsd/ns";><bar id="abc"/></foo>

This instance is valid, because <foo> has no attributes -
as declared - and the type of <bar> defaults to xs:anyType,
which accepts any content and any attributes 'laxly'; 'laxly'
means that if an element or attribute declaration is found
for a child element or an attribute node respectively, then
those nodes are validated against those declarations, if no
declarations are found, the validation is simply skipped.


== notok.xml ==

<foo xmlns="http://example.com/xsd/ns"; id="abc"><bar /></foo>

This instance is not valid, because the complexType you declared
for the <foo> element does not declare any attribute, thus
must not have any attributes.


== schema.xml ==

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema";
            targetNamespace="http://example.com/xsd/ns";
            elementFormDefault="qualified"
            attributeFormDefault="qualified">
  <!-- "floating" attribute -->
  <xsd:attribute name="id" type="xsd:ID"/>
  <!-- Bogus elements -->
  <xsd:element name="foo">
    <xsd:complexType>

Note that this complexType has no attribute declared.

       <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="1" name="bar" />

Note that the type of the local element declaration "bar"
defaults to xs:anyType.
You'll find the definition for xs:anyType at:
http://www.w3.org/TR/xmlschema-1/#d0e9252

       </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

The behaviour of the schema processor looks correct.

Regards,

Kasimier





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]