RE: validating against a Schema
"Garrett, Philip \(MAN-Corporate\)" <[email protected]> Tue, 6 Mar 2007 10:34:09 -0500
| Newsgroups | gmane.text.xml.xerces-p.devel |
|---|---|
| Message-ID | <[email protected]> |
------_=_NextPart_001_01C76004.E214417B
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Sorry, I don't know what's causing your problem. I have attached a perl
script I wrote to do validation like this -- maybe it will help. I run
it on Xerces 2.6.0_2.
Lev Lvovsky wrote:
> Hello, I'm looking to validate an xml document against a vendor
> provided Schema definition, and am running into some inexplicable
> problems. I've a really simple implementation for testing as follows:
>=20
> ------
> #!/usr/bin/perl -w
>=20
> use strict;
> use XML::Xerces qw(error);
>=20
> XML::Xerces::XMLPlatformUtils::Initialize();
>=20
> my $parser =3D new XML::Xerces::XercesDOMParser;
> my $error_handler =3D new XML::Xerces::PerlErrorHandler;
> $parser->setErrorHandler($error_handler);
>=20
> $parser->setDoNamespaces(1);
> $parser->setDoSchema(1);
>=20
> $parser->setExternalNoNamespaceSchemaLocation('test.xsd');
> #$parser->setExternalSchemaLocation('test.xsd');
> $parser->parse('some.xml');
> ------
>=20
> running the code using no namespaces, I simply get the following
> warning at the last tag of the XML file.
>=20
> "MESSAGE: Attribute 'xmlns' has already been declared for element
> 'schema'"
>=20
> running the code using namespaces (which seem to be provided in the
> xml file), I get the following error:
>=20
> "MESSAGE: The schemaLocation attribute does not contain pairs of
> values."
>=20
> This *seems* erroneous, as the schemaLocation attribute does contain
> a pair of values...
>=20
> In the end, even when specifying no namespaces, modification of the
> xsd file which should break the validation has no effect. Changing
> the target XML file has no effect either. If anyone can suggest any
> pointers or docs to read, it would be greatly appreciated!
>=20
> thanks!
> -lev
>=20
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
------_=_NextPart_001_01C76004.E214417B
Content-Type: application/octet-stream;
name="validate"
Content-Transfer-Encoding: base64
Content-Description: validate
Content-Disposition: attachment;
filename="validate"
IyEvdXNyL2Jpbi9lbnYgcGVybA0KdXNlIHN0cmljdDsNCg0KdXNlIEdldG9wdDo6U3RkIHF3KGdl
dG9wdHMpOw0KdXNlIFhNTDo6WGVyY2VzOw0KDQoNCnN1YiB1c2FnZSB7DQogICAgbXkgJHVzYWdl
ID0gcXF7DQogICAgICAgIFVzYWdlOiAkMCBbLWhdIFstcyBzY2hlbWFdIFstdl0gW2ZpbGUxLnht
bCBbZmlsZTIueG1sIC4uLl1dDQogICAgICAgIE9wdGlvbnM6DQogICAgICAgICAgIC1oICAgICAg
ICA6IHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UNCiAgICAgICAgICAgLXMgc2NoZW1hIDogc3BlY2lm
eSBhIHNjaGVtYSBmaWxlbmFtZSBvciBVUkwgdG8gdmFsaWRhdGUgYWdhaW5zdA0KICAgICAgICAg
ICAtdiAgICAgICAgOiBlbmFibGUgdmVyYm9zZSBtZXNzYWdlcw0KICAgICAgICAgICBmaWxlTi54
bWwgOiBsaXN0IG9mIFhNTCBmaWxlcyB0byB2YWxpZGF0ZSAoZGVmYXVsdCBzdGRpbikNCiAgICB9
Ow0KICAgIGZvciAoJHVzYWdlKSB7IHMvXlxzKy8vczsgcy9ccyskLy9zOyBzL15cc3s4fS8vbWc7
IH0NCiAgICBwcmludCBTVERFUlIgIiR1c2FnZVxuIjsNCiAgICBleGl0KHNoaWZ0KSBpZiBAXzsN
Cn0NCg0KZ2V0b3B0cygnaHM6dicsIFxvdXIgJU9wdHMpIHx8IHVzYWdlKDEpOw0KdXNhZ2UoMCkg
aWYgJE9wdHN7aH07DQoNCiQ6OnNjaGVtYSA9ICRPcHRze3N9Ow0KJDo6dmVyYm9zZSA9ICRPcHRz
e3Z9Ow0KDQpYTUw6OlhlcmNlczo6WE1MUGxhdGZvcm1VdGlsczo6SW5pdGlhbGl6ZSgpOw0KDQpt
eSAkcGFyc2VyID0gWE1MOjpYZXJjZXM6OlNBWFBhcnNlci0+bmV3Ow0KJHBhcnNlci0+c2V0RG9O
YW1lc3BhY2VzKDEpOw0KJHBhcnNlci0+c2V0RG9TY2hlbWEoMSk7DQokcGFyc2VyLT5zZXRWYWxp
ZGF0aW9uU2NoZW1hRnVsbENoZWNraW5nKDEpOw0KJHBhcnNlci0+c2V0VmFsaWRhdGlvblNjaGVt
ZSgxKTsNCiRwYXJzZXItPnNldEV4aXRPbkZpcnN0RmF0YWxFcnJvcigwKTsNCiRwYXJzZXItPnNl
dFZhbGlkYXRpb25Db25zdHJhaW50RmF0YWwoMCk7DQokcGFyc2VyLT5jYWNoZUdyYW1tYXJGcm9t
UGFyc2UoMSk7DQokcGFyc2VyLT51c2VDYWNoZWRHcmFtbWFySW5QYXJzZSgxKTsNCg0KbXkgJGVo
ID0gVmFsaWRhdG9yRXJyb3JIYW5kbGVyLT5uZXc7DQokcGFyc2VyLT5zZXRFcnJvckhhbmRsZXIo
JGVoKTsNCg0KbXkgQGZpbGVzID0gQEFSR1Y7DQpwdXNoIEBmaWxlcywgJy0nIGlmICFAZmlsZXM7
DQoNCm15ICRwZXJmZWN0ID0gMTsNCg0KZm9yIG15ICRmaWxlbmFtZSAoQGZpbGVzKSB7DQogICAg
bXkgJGRvY3VtZW50Ow0KICAgIGlmICgkZmlsZW5hbWUgZXEgJy0nKSB7DQogICAgICAgICRkb2N1
bWVudCA9IGRvIHsgbG9jYWwgJC87IDxTVERJTj4gfTsNCiAgICB9DQogICAgZWxzZSB7DQogICAg
ICAgICRkb2N1bWVudCA9IGRvIHsgbG9jYWwgKEBBUkdWLCQvKSA9ICgkZmlsZW5hbWUpOyA8PiB9
Ow0KICAgIH0NCg0KICAgIGlmICgkOjpzY2hlbWEpIHsNCiAgICAgICAgbXkgKCR4c2QsJG5hbWVz
cGFjZSkgPSByZXZlcnNlIHNwbGl0KC9ccysvcywgJDo6c2NoZW1hLCAyKTsNCg0KICAgICAgICBp
ZiAoISRuYW1lc3BhY2UpIHsNCiAgICAgICAgICAgIG15ICgkZmlyc3RfdGFnKSA9ICgkZG9jdW1l
bnQgPX4gLyg8XHdbXj5dKj4pLyk7DQogICAgICAgICAgICBpZiAoJGZpcnN0X3RhZyA9fiAvXGJ4
bWxucz0iKFteIl0rKSIvKSB7DQogICAgICAgICAgICAgICAgJG5hbWVzcGFjZSA9ICQxOw0KICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzaWYgKCRmaXJzdF90YWcgPX4gL148KFteOl0rKTov
KSB7DQogICAgICAgICAgICAgICAgbXkgJG5zX2FiYnIgPSAkMTsNCiAgICAgICAgICAgICAgICBp
ZiAoJGZpcnN0X3RhZyA9fiAvXGJcUSRuc19hYmJyXEU6eG1sbnM9IihbXiJdKykiLykgew0KICAg
ICAgICAgICAgICAgICAgICAkbmFtZXNwYWNlID0gJDE7DQogICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKCR4c2QgJiYgJG5hbWVzcGFjZSkg
ew0KICAgICAgICAgICAgJHBhcnNlci0+c2V0RXh0ZXJuYWxTY2hlbWFMb2NhdGlvbigiJG5hbWVz
cGFjZSAkeHNkIik7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAkcGFy
c2VyLT5zZXRFeHRlcm5hbE5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb24oJHhzZCk7DQogICAgICAg
IH0NCiAgICB9DQoNCiAgICBteSAkZnJpZW5kbHlfZm4gPSAkZmlsZW5hbWUgZXEgJy0nID8gJ3N0
ZGluJyA6ICRmaWxlbmFtZTsNCiAgICANCiAgICBteSAkaW5wdXQgPSBYTUw6OlhlcmNlczo6TWVt
QnVmSW5wdXRTb3VyY2UtPm5ldygkZG9jdW1lbnQsICRmcmllbmRseV9mbik7DQogICAgJHBhcnNl
ci0+cGFyc2UoJGlucHV0KTsNCg0KICAgIGlmICgkZWgtPmlzX3BlcmZlY3QpIHsNCiAgICAgICAg
c2F5KHNwcmludGYoIiVzOiBubyBlcnJvcnMiLCAkZnJpZW5kbHlfZm4pKTsNCiAgICB9DQogICAg
ZWxzZSB7DQogICAgICAgICRwZXJmZWN0ID0gMDsNCiAgICAgICAgc2F5KCBzcHJpbnRmKCIlczog
JWQgd2FybmluZ3MsICVkIGVycm9ycyIsICRmcmllbmRseV9mbiwNCiAgICAgICAgICAgIHNjYWxh
cihAeyRlaC0+d2FybmluZ3N9KSwgc2NhbGFyKEB7JGVoLT5lcnJvcnN9KSkpOw0KICAgIH0NCn0N
Cg0KZXhpdCgkcGVyZmVjdCA/IDAgOiAxKTsNCg0KDQpFTkQgew0KICAgIFhNTDo6WGVyY2VzOjpY
TUxQbGF0Zm9ybVV0aWxzOjpUZXJtaW5hdGUoKTsNCn0NCg0Kc3ViIHNheSB7DQogICAgbXkgJG1z
ZyA9IHNoaWZ0Ow0KICAgIHByaW50IFNUREVSUiAiJG1zZ1xuIiBpZiAkOjp2ZXJib3NlOw0KfQ0K
DQoNCnsNCiAgICBwYWNrYWdlIFZhbGlkYXRvckVycm9ySGFuZGxlcjsNCiAgICBubyB3YXJuaW5n
cyAndW5pbml0aWFsaXplZCc7DQogICAgDQogICAgc3ViIG5ldyB7DQogICAgICAgIG15ICRjbGFz
cyA9IHNoaWZ0Ow0KICAgICAgICByZXR1cm4gYmxlc3Mge30sICRjbGFzczsgDQogICAgfQ0KDQog
ICAgc3ViIGVtaXQgew0KICAgICAgICBteSAoJHNlbGYsJGVyciwkdHlwZSkgPSBAXzsNCg0KICAg
ICAgICBteSAkc3lzdGVtX2lkID0gJGVyci0+Z2V0U3lzdGVtSWQ7DQogICAgICAgIG15ICRsaW5l
X251bSAgPSAkZXJyLT5nZXRMaW5lTnVtYmVyOw0KICAgICAgICBteSAkY29sX251bSAgID0gJGVy
ci0+Z2V0Q29sdW1uTnVtYmVyOw0KICAgICAgICBteSAkbXNnICAgICAgID0gJGVyci0+Z2V0TWVz
c2FnZTsNCg0KICAgICAgICBteSAkaXNfZmF0YWwgPSAxDQogICAgICAgICAgICBpZiAkbXNnID1+
IC9UaGUgcHJpbWFyeSBkb2N1bWVudCBlbnRpdHkgY291bGQgbm90IGJlIG9wZW5lZC4vOw0KDQog
ICAgICAgIG15ICRoYXNfYWYgPSBldmFsIHsgcmVxdWlyZSBUZXh0OjpBdXRvZm9ybWF0IH07DQog
ICAgICAgICRtc2cgPSAkaGFzX2FmID8gVGV4dDo6QXV0b2Zvcm1hdDo6YXV0b2Zvcm1hdCgiICAg
ICRtc2ciKSA6ICRtc2c7DQoNCiAgICAgICAgJG1zZyA9IHNwcmludGYgIlxuJXM6ICVzIFtsaW5l
ICVkLCBjb2wgJWRdOlxuJXMiLA0KICAgICAgICAgICAgJHR5cGUsICRzeXN0ZW1faWQsICRsaW5l
X251bSwgJGNvbF9udW0sICRtc2c7DQoNCiAgICAgICAgaWYgKCRpc19mYXRhbCkgew0KICAgICAg
ICAgICAgIyBzdG9wIHByb2Nlc3NpbmcNCiAgICAgICAgICAgIGRpZSAkbXNnOw0KICAgICAgICB9
DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgcHJpbnQgU1RERVJSICRtc2c7DQogICAgICAg
IH0NCiAgICB9DQogICAgDQogICAgc3ViIHdhcm5pbmcgew0KICAgICAgICBteSAoJHNlbGYsJGVy
cikgPSBAXzsNCiAgICAgICAgJHNlbGYtPmVtaXQoJGVyciwgJ1dBUk5JTkcnKTsNCiAgICAgICAg
DQogICAgICAgIHB1c2ggQHskc2VsZi0+d2FybmluZ3N9LCAkZXJyOw0KICAgIH0NCiAgICANCiAg
ICBzdWIgZXJyb3Igew0KICAgICAgICBteSAoJHNlbGYsJGVycikgPSBAXzsNCiAgICAgICAgJHNl
bGYtPmVtaXQoJGVyciwgJ0VSUk9SJyk7DQogICAgICAgIA0KICAgICAgICBwdXNoIEB7JHNlbGYt
PmVycm9yc30sICRlcnI7DQogICAgfQ0KDQogICAgc3ViIGZhdGFsX2Vycm9yIHsgJmVycm9yIH0N
Cg0KICAgIHN1YiBpc19wZXJmZWN0IHsNCiAgICAgICAgbXkgKCRzZWxmKSA9IEBfOw0KICAgICAg
ICBteSAkbiA9IEB7JHNlbGYtPndhcm5pbmdzfSArIEB7JHNlbGYtPmVycm9yc307DQogICAgICAg
IHJldHVybiAkbiA9PSAwOw0KICAgIH0NCiAgICANCiAgICBzdWIgd2FybmluZ3Mgew0KICAgICAg
ICBteSAkc2VsZiA9IHNoaWZ0Ow0KICAgICAgICBteSAkd2FybmluZ3MgPSAkc2VsZi0+e193YXJu
aW5nc30gfHw9IFtdOw0KICAgICAgICByZXR1cm4gJHdhcm5pbmdzOw0KICAgIH0NCiAgICANCiAg
ICBzdWIgZXJyb3JzIHsNCiAgICAgICAgbXkgJHNlbGYgPSBzaGlmdDsNCiAgICAgICAgbXkgJGVy
cm9ycyA9ICRzZWxmLT57X2Vycm9yc30gfHw9IFtdOw0KICAgICAgICByZXR1cm4gJGVycm9yczsN
CiAgICB9DQoNCiAgICBzdWIgcmVzZXRfZXJyb3JzIHsNCiAgICAgICAgbXkgJHNlbGYgPSBzaGlm
dDsNCiAgICAgICAgZGVsZXRlICRzZWxmLT57X3dhcm5pbmdzfTsNCiAgICAgICAgZGVsZXRlICRz
ZWxmLT57X2Vycm9yc307DQogICAgfQ0KfQ0KDQoxOw0K
------_=_NextPart_001_01C76004.E214417B
Content-Type: text/plain; charset=us-ascii
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
------_=_NextPart_001_01C76004.E214417B--