- From: Tom Preston <tpreston@amadeusboston.com>
- Date: Mon, 17 Dec 2001 16:26:56 -0500
- To: Jakub.Valenta@Deio.net, xmlschema-dev@w3.org
Oops...maybe you would also like the code for the SchemaValidate.java
program. Here it is:
import org.apache.xerces.parsers.DOMParser;
import org.xml.sax.ErrorHandler;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.SAXNotRecognizedException;
import org.xml.sax.SAXNotSupportedException;
import java.io.IOException;
// A Valdating DOM Application
// with registered Error Handlers
public class SchemaValidate implements ErrorHandler {
// Constructor
public SchemaValidate (String xmlFile) {
// Create a Xerces DOM Parser
DOMParser parser = new DOMParser();
// Turn Validation on
try {
parser.setFeature
("http://xml.org/sax/features/validation", true);
parser.setFeature
("http://apache.org/xml/features/validation/schema",true);
parser.setFeature
("http://apache.org/xml/features/validation/schema-full-checking",true);
} catch (SAXNotRecognizedException e) {
System.err.println (e);
} catch (SAXNotSupportedException e) {
System.err.println (e);
}
// Register Error Handler
parser.setErrorHandler (this);
// Parse the Document
// and traverse the DOM
try {
parser.parse(xmlFile);
// Document document = parser.getDocument();
// traverse (document);
} catch (SAXException e) {
System.err.println (e);
} catch (IOException e) {
System.err.println (e);
} catch (Exception e) {
System.err.println (e);
}
}
// Traverse DOM Tree. Print out Element Names
private void traverse (Node node) {
int type = node.getNodeType();
if (type == Node.ELEMENT_NODE)
System.out.println (node.getNodeName());
NodeList children = node.getChildNodes();
if (children != null) {
for (int i=0; i< children.getLength(); i++)
traverse (children.item(i));
}
}
// Warning Event Handler
public void warning (SAXParseException e)
throws SAXException {
System.err.println ("Warning: "+e);
}
// Error Event Handler
public void error (SAXParseException e)
throws SAXException {
System.err.println ("Error: "+e);
}
// Fatal Error Event Handler
public void fatalError (SAXParseException e)
throws SAXException {
System.err.println ("Fatal Error: "+e);
}
// Main Method
public static void main (String[] args) {
SchemaValidate validatingDOM =
new SchemaValidate (args[0]);
}
}
Tom
-----Original Message-----
From: Tom Preston
Sent: Monday, December 17, 2001 3:57 PM
To: Jakub.Valenta@Deio.net; xmlschema-dev@w3.org
Subject: RE: XML Schema validation using JAXP Q?
You write a trivial java program like this:
Compile and run it like this (notice xerces.jar and xml-apis.jar are
needed):
C:\xml>javac -classpath
.;c:\thirdparty\apache\xerces.jar;c:\thirdparty\apache\x
ml-apis.jar SchemaValidate.java
C:\xml>java -classpath
.;c:\thirdparty\apache\xerces.jar;c:\thirdparty\apache\xm
l-apis.jar SchemaValidate editor99.xml
Error: org.xml.sax.SAXParseException: Datatype error: In element
'allowNull' :
tru is not a boolean.
NOtice that editor99.xml failed validation. Here is editor99.xml and
editor.xsd which it validates against (note the xsi:schemaLocation is
defined in the .xml file):
------
editor.xml
------
<!DOCTYPE htmlEditor >
<htmlEditor
xmlns="http://www.emilygraham.com/java/other/Editor"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.emilygraham.com/java/other/Editor
http://www.emilygraham.com/java/other/editor.xsd">
<updateTime>1999-05-31T13:20:00</updateTime>
<fields>
<field columnName="nickname">
<shortDesc>Short Desc</shortDesc>
<htmlType name="select">
<name>firstName</name>
<value>lastName</value>
</htmlType>
<allowNull>tru</allowNull>
<defaultVal>Blueberry</defaultVal>
</field>
</fields>
</htmlEditor>
------
editor.xsd
------
<schema targetNamespace="http://www.emilygraham.com/java/other/Editor"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:e="http://www.emilygraham.com/java/other/Editor"
elementFormDefault="qualified">
<annotation>
<documentation xml:lang="en">
Editor document definition defines an html based editor
</documentation>
</annotation>
<element name="htmlEditor" type="e:HtmlEditorType"/>
<element name="updateTime" type="dateTime"/>
<complexType name="HtmlEditorType">
<sequence>
<element ref="e:updateTime" minOccurs="1" maxOccurs="1" />
<element name="fields" type="e:Fields" minOccurs="1" maxOccurs="1" />
</sequence>
</complexType>
<complexType name="Fields">
<sequence>
<element name="field" minOccurs="1" maxOccurs="unbounded">
<complexType>
<sequence>
<element name="shortDesc" type="string" minOccurs="1"
maxOccurs="1"/>
<element name="htmlType" type="e:HtmlTypeType" minOccurs="1"
maxOccurs="1"/>
<element name="allowNull" type="boolean" minOccurs="1"
maxOccurs="1" />
<element name="defaultVal" type="string"/>
</sequence>
<attribute name="columnName" type="string" use="required"/>
</complexType>
</element>
</sequence>
</complexType>
<complexType name="HtmlTypeType">
<sequence>
<element name="name" type="string" />
<element name="value" type="string" />
</sequence>
<attribute name="name" type="e:HtmlNameType" use="required"/>
</complexType>
<simpleType name="HtmlNameType">
<restriction base="NMTOKEN">
<enumeration value="select"/>
<enumeration value="text"/>
</restriction>
</simpleType>
</schema>
------
hope this helps.
TOm
-----Original Message-----
From: Jakub.Valenta@Deio.net [mailto:Jakub.Valenta@Deio.net]
Sent: Monday, December 17, 2001 12:26 PM
To: xmlschema-dev@w3.org
Subject: XML Schema validation using JAXP Q?
Hi all,
I would like to ask if it is possible to validate xml document against XML
Schema using JAXP? At the moment I am using XALAN and it should be XML
Schema aware, but I have no clue how to do the vlidation using JAXP.
Any help appreciated,
Jaub
Received on Monday, 17 December 2001 16:26:43 UTC