You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@xerces.apache.org by "Vivekanand V." <VV...@quark.co.in> on 2002/12/07 08:24:13 UTC

Validation of element with

Hi all,

   I having a problem with validating xml file against a schema due to some
namespace reference in the xml. I am using the <xs:anyAttribute
namespace="##other"/>     to define that a element can have any atrribute
from any other namespace. In the xml file i have attribute for this element
say mynamespace:name="XML Bible". When i try to validate the xml file
against the schema it give me a error name is not defined.

 The schema(sample.xsd) is like this

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
	<xs:element name="booklist">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="book"
maxOccurs="unbounded">
					<xs:complexType>
						<!-- book can have
anyattribute from another namespace -->
						<xs:anyAttribute
namespace="##other"/>    
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>

The xml file(sample.xml) is 

<?xml version="1.0" encoding="UTF-8"?>
<booklist xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mynamespace="http://www.sample.com/sample"
xsi:noNamespaceSchemaLocation="E:\xmlfiles\sample.xsd">
	<book mynamespace:name="XML Bible"/> 
</booklist>

When i tried to run the sample program sax2print -f sample.xml

it throws me a error 

	 Attribute '{http://www.sample.com/sample}name' is not declared for
element 'book'

But when i tried to validate it using msxml parser no such error was thrown.

What i am trying to define is that element book can contain any attribute
from any namespace. Is it a constraint that i should have a definition for
the attribute.

Thanks in advance
Vivekanand

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-c-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-c-dev-help@xml.apache.org


Re: Validation of element with

Posted by "Peter A. Volchek" <Pe...@ti.com.od.ua>.
>  When i try to validate the xml file
> against the schema it give me a error name is not defined.

That is because.....the "name" is not defined:)
To resolve, you should

1. Provide an XML Schema with targetNamespace=http://www.sample.com/sample
that defines the
   attribute name, and import it in the sample.xsd
  <xs:import schemaLocation="http://www.sample.com/sample sample2.xsd">
or refer to it in the instance document, like:
<book mynamespace:name="XML Bible"
schemaLocation="http://www.sample.com/sample sample2.xsd"/>

2. Specify "lax" in the processContent attribute of your anyAttribute
declaration
<xs:anyAttribute namespace="##other" processContents="lax"/>

It will instruct the parser to validate the attribute if you provide the
corresonding declaration or do not validate
otherwise

Regards,
Peter A. Volchek

P.S.

> But when i tried to validate it using msxml parser no such error was
thrown.
You have found a bug in msxml :)




> Hi all,
>
>    I having a problem with validating xml file against a schema due to
some
> namespace reference in the xml. I am using the <xs:anyAttribute
> namespace="##other"/>     to define that a element can have any atrribute
> from any other namespace. In the xml file i have attribute for this
element
> say mynamespace:name="XML Bible". When i try to validate the xml file
> against the schema it give me a error name is not defined.
>
>  The schema(sample.xsd) is like this
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
> elementFormDefault="qualified">
> <xs:element name="booklist">
> <xs:complexType>
> <xs:sequence>
> <xs:element name="book"
> maxOccurs="unbounded">
> <xs:complexType>
> <!-- book can have
> anyattribute from another namespace -->
> <xs:anyAttribute
> namespace="##other"/>
> </xs:complexType>
> </xs:element>
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> </xs:schema>
>
> The xml file(sample.xml) is
>
> <?xml version="1.0" encoding="UTF-8"?>
> <booklist xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:mynamespace="http://www.sample.com/sample"
> xsi:noNamespaceSchemaLocation="E:\xmlfiles\sample.xsd">
> <book mynamespace:name="XML Bible"/>
> </booklist>
>
> When i tried to run the sample program sax2print -f sample.xml
>
> it throws me a error
>
> Attribute '{http://www.sample.com/sample}name' is not declared for
> element 'book'
>
> But when i tried to validate it using msxml parser no such error was
thrown.
>
> What i am trying to define is that element book can contain any attribute
> from any namespace. Is it a constraint that i should have a definition for
> the attribute.
>
> Thanks in advance
> Vivekanand
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: xerces-c-dev-unsubscribe@xml.apache.org
> For additional commands, e-mail: xerces-c-dev-help@xml.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-c-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-c-dev-help@xml.apache.org