From: James A. <jam...@gm...> - 2007-01-02 20:25:07
|
This bounced, so trying again. ---------- Forwarded message ---------- From: James Abley <jam...@gm...> Date: 24-Dec-2006 09:49 Subject: Re: [Xmlunit-general] Schema Validation patch development To: xml...@li... On 22/12/06, Stefan Bodewig <bo...@ap...> wrote: > On Thu, 21 Dec 2006, James Abley <jam...@gm...> wrote: > > > I'm writing a patch for consideration that will handle schema > > validation. > > [please use CVS diff to create patches, it is easier to see what has > changed that way] Will do - I'm just TDDing the feature at the moment and wanted to give a little context. > > > So I would like to set some properties on a Validator like this: > > > > validator = new Validator(new FileReader(xmlFile)); > > validator.setSchemaNamespace("http://www.example.com/xmlns/books"); > > validator.setSchemaURL(xsdFile.toURL()); > > validator.useXMLSchema(true); > > > > validator.assertIsValid(); > > This is something you'd use a catalog for. See OASIS[1] and the XML > resolver in xml-commons at Apache. Ant supports a simple Map based > catalog internally as well as one based on the XML resolver. I was > thinking about adding this in a similar way to XMLUnit. Agreed. It will probably get to that level of complexity once I've got an initial implementation in place. > > > This is what my patch is aiming to provide. Comments on the API and > > intended usage are welcome. > > rather than pairs of setSchemaNamespace/setSchemaURI I'd prefer a > single method, something like > > public void setSchemaLocation(String nsURI, URL nsURL) > > or some kind of Map or - see above - a full catalog implemention. As above - I'm just getting the basic refactoring and API change in for now, but the catalog would be my preferred full implementation. > > > In developing the tests for this patch though, I seem to have hit a > > bug, and was hoping someone could help me see what I'm doing wrong. > > The below tests fail, although I don't think they should. I can't > > see what properties I should be setting that would cause it to pass. > > > private String expected = "<root xmlns='http://www.example.com/xmlns/example'" + " > > + xmlns:xsi='http://exampe.com/xmlns/not/schema-instance/namespace'/>";; > > private String actual = "<root xmlns='http://www.example.com/xmlns/example' />"; > > Why do you expect them to be different? The > http://exampe.com/xmlns/not/schema-instance/namespace is never used. > Well, because it has the namespace declaration and to my current way of thinking, that's just an attribute with special semantics. I think I'll need to dive into the XML (1.0 only for now) and XML Namespaces specs to see what they discuss and maybe re-evaluate my defintion of equality in this case. As part of my current implementation, it examines the XML that's being validated for the standard schema instance namespace and a schemaLocation attribute in that namespace, which the parser can use as a hint when doing schema validation. One of my tests was checking that the namespace declaration was added correctly to the document if it's not already present, but xmlunit doesn't suppport my assumption of how it would behave. I'm also looking at the current implementation and it does a DOM comparison, and maybe a SAX-record-and-replay implementation would allow more options to be configured for this, similar to the way oXygen allows XML diff options. That would be a bigger change though! Cheers, James PS - just realised that the mails on this list don't have the Reply-To header set to the mailing list, hence the reason I've been replying to individuals rather than the list. Might it be possible to alter that? > Cheers > > Stefan > > Footnotes: > [1] http://www.oasis-open.org/committees/entity/spec-2001-08-06.html > > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys - and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Xmlunit-general mailing list > Xml...@li... > https://lists.sourceforge.net/lists/listinfo/xmlunit-general > |