Skip to Content.
Sympa Menu

xom-interest - Re: [XOM-interest] Validate questions

xom-interest AT lists.ibiblio.org

Subject: XOM API for Processing XML with Java

List archive

Chronological Thread  
  • From: Wolfgang Hoschek <whoschek AT lbl.gov>
  • To: Arjan Huijzer <huijzer AT gmail.com>
  • Cc: XOM-interest AT lists.ibiblio.org
  • Subject: Re: [XOM-interest] Validate questions
  • Date: Thu, 27 Jan 2005 12:49:28 -0800

You could also simply use the Nux BuilderPool or BuilderFactory. It really easy to use and *very* efficient if you'd like to parse many documents with W3C XML Schema validation, since it automatically caches and pools grammars, see

http://dsd.lbl.gov/nux/api/nux/xom/pool/package-summary.html

Wolfgang.

On Jan 27, 2005, at 4:03 AM, Arjan Huijzer wrote:

Just in case someone is curious, I have attached my modified code that
now allows me to validate against an external XML schema. Note that I
have included the Xerces 2.6.2. parser.

----------------------------------------------------------------------
XMLReader xerces =
XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser") ;
xerces.setFeature("http://apache.org/xml/features/validation/schema";,
true);
xerces.setProperty("http://apache.org/xml/properties/schema/external- noNamespaceSchemaLocation",
"file:///c:/xomtest/books.xsd");

Builder parser = new Builder(xerces, true);
Document doc = parser.build( new File("c:/xomtest/books.xml") );
----------------------------------------------------------------------

Gr. Arjan




On Thu, 27 Jan 2005 12:39:36 +0100, Arjan Huijzer <huijzer AT gmail.com> wrote:
Thanks for all the valuable answers. I am trying out the different
solutions as we speak. Looking good so far :-)


On Thu, 27 Jan 2005 11:23:01 +0000, Steve Loughran
<steve.loughran AT gmail.com> wrote:
On Thu, 27 Jan 2005 10:51:31 +0100, Arjan Huijzer <huijzer AT gmail.com> wrote:
Hi all,

I have been adding a validity check to my XML documents and have a
couple of questions:

1. Does XOM support validation against an XML schema? So far, I have
only been able to validate againt a DTD

Turn it on in the parser. This is my option set for validating docs
incoming from somewhat trusted sources where I dont want to enable a
couple of security risks (entity expansion, doctype redeclaration)

xerces.setFeature(
"http://apache.org/xml/features/validation/schema";,
validate);
xerces.setFeature(

"http://apache.org/xml/features/validation/schema-full-checking";,
validate);
xerces.setFeature(
"http://apache.org/xml/features/standard-uri-conformant";,
true);
xerces.setFeature(
"http://apache.org/xml/features/disallow-doctype-decl";,
true);
xerces.setFeature(,
"http://xml.org/sax/features/external-general-entities";,
false);

I also set up my own catalog, for DTD resolution, and get schema res
by telling xerces the local location of things like this:-

parser.setProperty(
"http://apache.org/xml/properties/schema/external-schemaLocation";,
"http: //domain.com/mynamespace mySchema.xsd");

2. Do I have to include a doctype declaration to my XML document or
can I also declare in my java code against which DTD the document
should be validated.

-dont know



Furthermore, I noticed some odd behaviour. My code to parse an XML
document used to be:

Document doc = parser.build("c:/xomtest/books.xml");

This worked fine until I switched to Xerces, which bow trows an
IOException. I had to modify my code to read:

Document doc = parser.build("file:///c:/xomtest/books.xml");

well, that is a proper URI at that point. Maybe xerces is fussy.

If you use Builder.build(File) then everything works.

I would point you to the LGPL source where I do all this, which is in
smartfrog CVS on sourceforge (
http://sourceforge.net/projects/smartfrog ), with the caveat that I
reserve the right to be incompetent (this was my first use of Xom)

Look at the files in
http://cvs.sourceforge.net/viewcvs.py/smartfrog/core/components/ cddlm/src/org/smartfrog/services/cddlm/cdl/

There is something there that may be of broader interest: something to
extract a XOM document from bits of an incoming Axis SOAP message. Its
an inefficient process, which shows how badly designed JAXRPC is for
anyone who wants to work with the XML itself, but it does at least
give you XML you can use.

-steve
_______________________________________________
XOM-interest mailing list
XOM-interest AT lists.ibiblio.org
http://lists.ibiblio.org/mailman/listinfo/xom-interest


_______________________________________________
XOM-interest mailing list
XOM-interest AT lists.ibiblio.org
http://lists.ibiblio.org/mailman/listinfo/xom-interest





Archive powered by MHonArc 2.6.24.

Top of Page