You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xerces.apache.org by Reinhard Brandstädter <r....@gmx.at> on 2003/12/30 15:27:59 UTC

Schema validation with SAX or DOMParser?

Hi!

I'm very unsucessful in validating a XML file against a XSD. I've read 
several hints about setting the validation features but all I've tried 
renders either in errors or exceptions.

Here is what I did:

try {
   SAXParserFactory factory = SAXParserFactory.newInstance();
   SAXParser parser = factory.newSAXParser();
   DefaultHandler handler = new ParseErrorHandler();
   XMLReader reader = parser.getXMLReader();
 
reader.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation","eventconfigs.xsd");
   reader.setFeature("http://xml.org/sax/features/validation", true);
   reader.setFeature("http://xml.org/sax/features/validation/schema",
                      true);

   parser.parse(cfg_file, handler);
}
catch (SAXException ex) {
   ex.printStackTrace();
}
catch (ParserConfigurationException ex) {
   ex.printStackTrace();
}

When parsing the files (example XML and XSD attached) I get an error:

org.xml.sax.SAXNotRecognizedException: 
http://xml.org/sax/features/validation/schema

I've also tried to use a DOMParser but without any sucess.
Thanks for any help on that!

Reinhard


-- 
Reinhard Brandstaedter   r.brandstaedter@gmx.at  GPG: 0x033B81DB
-    Student of Computer Science - J.K. University of Linz     -
-        <ICQ: 73059068>    <Mobile: +43 699 12419541>         -
-                  http://adelaide.dnsalias.net                -

Re: Schema validation with SAX or DOMParser?

Posted by Reinhard Brandstädter <r....@gmx.at>.
Gurdev Parmar wrote:

> Features:
> http://apache.org/xml/features/validation/schema  to true.
> http://xml.org/sax/features/namespaces to true
> http://xml.org/sax/features/validation to true

It was my own stupidity that kept me from validating the file:

as you can see I only set the validation feature:

 >>reader.setFeature("http://xml.org/sax/features/validation", true);
 >>reader.setFeature("http://xml.org/sax/features/validation/schema",true);

the second feature string was incorrect - late night programming ;-)

Reinhard

-- 
Reinhard Brandstaedter   r.brandstaedter@gmx.at  GPG: 0x033B81DB
-    Student of Computer Science - J.K. University of Linz     -
-        <ICQ: 73059068>    <Mobile: +43 699 12419541>         -
-                  http://adelaide.dnsalias.net                -

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


Re: Schema validation with SAX or DOMParser?

Posted by Gurdev Parmar <Gu...@oracle.com>.
I, personally, set the following features and properties for my
requirements and it works:

Features:
http://apache.org/xml/features/validation/schema  to true.
http://xml.org/sax/features/namespaces to true
http://xml.org/sax/features/validation to true

JAXP property:
http://java.sun.com/xml/jaxp/properties/schemaLanguage to 
http://www.w3.org/2001/XMLSchema

Reinhard Brandstädter wrote:

> Hi!
>
> I'm very unsucessful in validating a XML file against a XSD. I've read 
> several hints about setting the validation features but all I've tried 
> renders either in errors or exceptions.
>
> Here is what I did:
>
> try {
>   SAXParserFactory factory = SAXParserFactory.newInstance();
>   SAXParser parser = factory.newSAXParser();
>   DefaultHandler handler = new ParseErrorHandler();
>   XMLReader reader = parser.getXMLReader();
>
> reader.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation","eventconfigs.xsd"); 
>
>   reader.setFeature("http://xml.org/sax/features/validation", true);
>   reader.setFeature("http://xml.org/sax/features/validation/schema",
>                      true);
>
>   parser.parse(cfg_file, handler);
> }
> catch (SAXException ex) {
>   ex.printStackTrace();
> }
> catch (ParserConfigurationException ex) {
>   ex.printStackTrace();
> }
>
> When parsing the files (example XML and XSD attached) I get an error:
>
> org.xml.sax.SAXNotRecognizedException: 
> http://xml.org/sax/features/validation/schema
>
> I've also tried to use a DOMParser but without any sucess.
> Thanks for any help on that!
>
> Reinhard
>
>
>------------------------------------------------------------------------
>
><?xml version="1.0"?>
><events xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>    xsi:noNamespaceSchemaLocation="eventconfigs.xsd">
>	<!-- a default send object -->
>	<eventconfig>
>		<event type="send">
>		</event>
>		<eventrep>
>			<class name="visualization.objects.NativeSVG" reuse="true" idstring="sendevents_all">
>				<svg xmlns="http://www.w3.org/2000/svg">
>					<text x="20" y="25" font-family="Verdana" font-size="12" fill="black">
>						Send Events: ${countstatistics_eventtype_all}
>					</text>
>				</svg>
>			</class>
>			<class name="visualization.objects.NativeSVG" reuse="true" idstring="sendevents-${processid}">
>				<svg xmlns="http://www.w3.org/2000/svg">
>					<rect x="# 20 + 20*${processid}" y="#300 - 270*(${countstatistics_eventtype_processor}/${countstatistics_eventtype_all})" width="15" height="# 270*(${countstatistics_eventtype_processor}/${countstatistics_eventtype_all})" fill="green"/>
>					<text x="# 20 + 20*${processid}" y="#290 - 270*(${countstatistics_eventtype_processor}/${countstatistics_eventtype_all})" font-family="Verdana" font-size="10" fill="black"># round(100*${countstatistics_eventtype_processor}/${countstatistics_eventtype_all})</text>
>				</svg>
>			</class>
>			<class name="visualization.objects.NativeSVG" onlyonce="true" idstring="plabelsend-${processid}">
>				<svg xmlns="http://www.w3.org/2000/svg">
>					<text x="# 20 + 20*${processid}" y="#315" font-family="Verdana" font-size="12" fill="black">P${processid}</text>
>				</svg>
>			</class>
>		</eventrep>
>	</eventconfig>
>	<!-- a default receive object -->
>	<eventconfig>
>		<event type="receive">
>		</event>
>		<eventrep>
>			<class name="visualization.objects.NativeSVG" reuse="true" idstring="recvevents_all">
>				<svg xmlns="http://www.w3.org/2000/svg">
>					<text x="220" y="25" font-family="Verdana" font-size="12" fill="black">
>						Recv Events: ${countstatistics_eventtype_all}
>					</text>
>				</svg>
>			</class>
>			<class name="visualization.objects.NativeSVG" reuse="true" idstring="recvevents-${processid}">
>				<svg xmlns="http://www.w3.org/2000/svg">
>					<rect x="# 220 + 20*${processid}" y="# 300 - 270*(${countstatistics_eventtype_processor}/${countstatistics_eventtype_all})" width="15" height="# 270*(${countstatistics_eventtype_processor}/${countstatistics_eventtype_all})" fill="red"/>
>					<text x="# 220 + 20*${processid}" y="# 290 - 270*(${countstatistics_eventtype_processor}/${countstatistics_eventtype_all})" font-family="Verdana" font-size="10" fill="black"># round(100*${countstatistics_eventtype_processor}/${countstatistics_eventtype_all})</text>
>				</svg>
>			</class>
>			<class name="visualization.objects.NativeSVG" onlyonce="true" idstring="plabelrecv-${processid}">
>				<svg xmlns="http://www.w3.org/2000/svg">
>					<text x="# 220 + 20*${processid}" y="#315" font-family="Verdana" font-size="12" fill="black">P${processid}</text>
>				</svg>
>			</class>
>		</eventrep>
>	</eventconfig>
></events>
>  
>
>------------------------------------------------------------------------
>
><?xml version="1.0" encoding="UTF-8"?>
><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
>	<xs:element name="events">
>		<xs:complexType>
>			<xs:sequence>
>				<xs:element name="eventconfig" maxOccurs="unbounded">
>					<xs:complexType>
>						<xs:sequence>
>							<!-- the event representation -->
>							<xs:element name="event">
>								<xs:complexType mixed="true">
>									<xs:choice minOccurs="0" maxOccurs="unbounded">
>										<!-- the event's parameters -->
>										<xs:element name="parameter">
>											<xs:complexType>
>												<xs:attribute name="name" use="required"/>
>												<xs:attribute name="value" type="xs:integer" use="required"/>
>												<xs:attribute name="min" type="xs:integer"/>
>												<xs:attribute name="max" type="xs:integer"/>
>											</xs:complexType>
>										</xs:element>
>									</xs:choice>
>									<xs:attribute name="type" type="xs:string" use="required"/>
>									<xs:attribute name="processid" type="xs:integer"/>
>								</xs:complexType>
>							</xs:element>
>							<!-- the event representation -->
>							<xs:element name="eventrep">
>								<xs:complexType>
>									<xs:sequence>
>										<!-- the class for the graphical object -->
>										<xs:element name="class" maxOccurs="unbounded">
>											<xs:complexType>
>												<xs:sequence>
>													<xs:any/>
>												</xs:sequence>
>												<xs:attribute name="name" type="xs:string" use="required"/>
>												<xs:attribute name="reuse" type="xs:boolean"/>
>												<xs:attribute name="idstring" type="xs:string"/>
>												<xs:attribute name="onlyonce" type="xs:boolean"/>
>											</xs:complexType>
>										</xs:element>
>									</xs:sequence>
>								</xs:complexType>
>							</xs:element>
>						</xs:sequence>
>					</xs:complexType>
>				</xs:element>
>			</xs:sequence>
>		</xs:complexType>
>	</xs:element>
></xs:schema>
>
>  
>
>------------------------------------------------------------------------
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: xerces-j-user-unsubscribe@xml.apache.org
>For additional commands, e-mail: xerces-j-user-help@xml.apache.org
>

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