- From: Tom Preston <tpreston@amadeusboston.com>
- Date: Thu, 6 Dec 2001 12:35:48 -0500
- To: Eddie Robertsson <eddie@allette.com.au>
- Cc: "XMLSchema (E-mail)" <xmlschema-dev@w3.org>
Eddie, all, I fixed the updateTime and boolean values but I don't think that was the root of the problem. I am using Xerces2.0.0beta3 xerces.jar...here is the output: C:\xml>java -classpath .;c:\vcom\bin\xerces\xerces.jar ValidatingDOM editor99.xm l org.xml.sax.SAXNotRecognizedException: http://apache.org/xml/properties/schema/e xternal-schemaLocation Error: org.xml.sax.SAXParseException: Document is invalid: no grammar found. htmlEditor updateTime fields field shortDesc htmlType name value allowNull defaultVal Maybe my code is not good? Do I have to specify a "grammar" in the code? I always get the grammar problem even when commenting out the parser.setProperty below. Here is the code: 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 ValidatingDOM implements ErrorHandler { // Constructor public ValidatingDOM (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.setProperty ("http://apache.org/xml/properties/schema/external-schemaLocation", "http://www.emilygraham.com/java/other/editor.xsd"); } 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); } } // 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) { ValidatingDOM validatingDOM = new ValidatingDOM (args[0]); } } -----Original Message----- From: Eddie Robertsson [mailto:eddie@allette.com.au] Sent: Wednesday, December 05, 2001 5:42 PM To: Tom Preston Cc: XMLSchema (E-mail) Subject: Re: xerces-j validation issues > What is this problem? > > Here is the doc set (which XSV thinks is fine): > > XML IS: > ----------- > <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></updateTime> > <fields> > <field columnName="nickname"> > <shortDesc>Short Desc</shortDesc> > <htmlType name="select"> > <name>firstName</name> > <value>lastName</value> > </htmlType> > <allowNull>adfsa</allowNull> > <defaultVal>Blueberry</defaultVal> > </field> > </fields> > </htmlEditor> Apart from the fact that <updateTime> doesn't have a valid dateTime and that "adfsa" isn't a valid boolean for element <allowNull> it all seems fine to me (XSV wouldn't catch this because simpleType checking isn't implemented yet). What version of Xerces are you using? I just tried it with Xercex 2 beta and it validated fine. Cheers, /Eddie > > ---------- > XSD IS: > ---------- > <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> > > ------------ > > 2) When i attept to force external validation with this line of code: > > parser.setProperty > > ("http://apache.org/xml/properties/schema/external-schemaLocation", > "http://www.emilygraham.com/java/other/editor.xsd"); > > I get this exception: > > org.xml.sax.SAXNotRecognizedException: > http://apache.org/xml/properties/schema/external-schemaLocation > > Does anyone know why this would happen? > > -------- > 3) Does anyone know where I can get a set of very simple documents that will > pass MANY different validations. Just one example would be nice. > > Thanks > > Tom
Received on Thursday, 6 December 2001 12:35:56 UTC