RE: laxly assessed elements, xsi:type and xsi:nil

Saxon accepts it as valid.

I'm not sure if that's right: I think the spec leaves a lot of options in
this area.

Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: xmlschema-dev-request@w3.org 
> [mailto:xmlschema-dev-request@w3.org] On Behalf Of Kasimier Buchcik
> Sent: 03 May 2005 15:23
> To: XML-SCHEMA
> Subject: laxly assessed elements, xsi:type and xsi:nil
> 
> 
> Hi,
> 
> while toying with laxly assessed elements in combination with 
> "xsi:type"
> and "xsi:nil" I stumbled over a scenario where the schema
> processors XSV 2.8, Xerces-J 2.6.2, MSXML 4.0 and MS.NET all behave
> differently.
> 
> Example:
> 
> (any_1.xsd)
> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> 	targetNamespace="urn:test:foo"
> 	elementFormDefault="qualified">	
> 
> 	<xsd:element name="foo">
> 		<xsd:complexType>
> 			<xsd:sequence>
> 				<xsd:element name="bar"/>
> 			</xsd:sequence>
> 		</xsd:complexType>
> 	</xsd:element>
> </xsd:schema>
> 
> (any_1.xml)
> <foo 
> 	xmlns="urn:test:foo"
> 	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> 	xsi:schemaLocation="urn:test:foo any_1.xsd">
> 	<bar>
> 		<boo xsi:type="xsd:string" xsi:nil="true">abc</boo>
> 	</bar>
> </foo> 
> 
> Xerces-J 2.6.2 eats it.
> 
> XSV 2.8 reports:
> "element boo is nilled but is not empty".
> 
> MSXML 4.0 reports:
> "xsi:nil attribute on element 'boo' is invalid.".
> 
> MS.NET reports:
> "Das urn:test:foo:boo-Element wurde nicht deklariert. Fehler in
> 'file:///p:/libxml2-lab/tests/2005-04-26/reader_any_1.xml', '(8 und
> 4)'."
> (which means that MS.NET barks about the element "boo" not being
> declared)
> 
> The behaviour of MS.NET is only understandable when assuming that
> it does not allow "lax" assessment.
> 
> MSXML reports the attribute "xsi:nil" as invalid, which seems not
> correct, since  cvc-type (3.1.1) allows those attributes.
> 
> XSV reports the content to be invalid since "nilled", but I cannot
> find any rule which takes "xsi:nil" into account, when an element
> declaration is not present. This leads directly to the result
> of Xerces-J which seems to be the only correct one.
> 
> Can someone clarify this?
> Should we follow Xerces-J here?
> 
> Regards,
> 
> Kasimier
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 

Received on Tuesday, 3 May 2005 15:05:37 UTC