- 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