Need a little help and a couple of questions
Ray Plante
rplante at poplar.ncsa.uiuc.edu
Wed Sep 27 09:26:51 PDT 2006
Hi Kevin,
First, your verifier should still detect errors in the VOResource part
regardless of the no-name namespace on the Resource element. The reason
is that you say 'xsi:type="vr:..."'. The vr prefix ties the contents of
the element to the vr namespace.
I have code that checks the validity of OAI records, including the
VOResource contents that uses the Xalan verifying parser, and it works
fine, detecting errors and everything. I'll give some details below
In the meantime, I was looking into how to define the Resource element in
the no-name namespace, and it gets tricky. Right now in the WSDLs,
Resource is defined in RegistryInterface.xsd as a local element quite
cleanly. In order to define it as part of targetnamespace="" and share
it between RegistrySearch.wsdl, RegistryHarvest.wsdl *and* the OAI
instance records (which is what started this discussion), we would need to
define another schema in a separate file.
I see our alternatives as the following:
1. Keep everything as it was in v1.0: in the WSDLs Resource elements
are part of the RegistryInterface.xsd interface, and in OAI,
Resource is in the no-name namespace. This works. The disadvantage
is that we have 2 different namespaces in the two contexts.
2. We consistantly use the RegistryInterface.xsd namespace for the
Resource element. In order to use the Resource element in the OAI
record, we can define it to be a global element. Then the OAI
record looks like this:
...
<metadata>
<ri:Resource xsi:type="vg:Registry"
created="2006-07-01T09:00:00" updated="2006-07-10T10:43:43"
xmlns:ri="http://www.ivoa.net/xml/ResourceInterface/v1.0"
xmlns:vr="http://www.ivoa.net/xml/VOResource/v1.0"
xmlns:vg="http://www.ivoa.net/xml/VORegistry/v1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns=""
xsi:schemaLocation="http://www.ivoa.net/xml/VOResource/v1.0
http://www.ivoa.net/xml/VOResource/v1.0
http://www.ivoa.net/xml/VORegistry/v1.0
http://www.ivoa.net/xml/VORegistry/v1.0
http://www.ivoa.net/xml/RegistryInterface/v1.0
http://www.ivoa.net/xml/RegistryInterface/v1.0">
<title>...</title>
...
</ri:Resource>
Note the use of xmlns="" above.
3. Add a global Resource element to the VOResource schema. The OAI
record would look just like above except
o Resource would be qualified with vr instead of ri
o the xmlns:ri definition would be unnecessary
I'm not crazy about this one for the reasons outlined in the
VOResource spec regarding global elements; however, it does make
the OAI record slightly simpler. Note that doing so, though,
does not disable any functionality.
4. We define a separate schema file with the no-name namespace that
defines Resource as a global element. The OAI record could
remain as it is now (e.g.
http://nvo.ncsa.uiuc.edu/cgi-bin/rofr/oai.pl?verb=GetRecord&identifier=ivo://ivoa.net/rofr&metadataPrefix=ivo_vor);
the SOAP messages would get a bit clunkier. I think this is the
least attractive option to me.
Options 1 and 2 are most attractive to me.
cheers,
Ray
PS: about using Xalan to validate...
Note that with this parser, you must explicitly turn on XML schema
support...
parser.setFeature(NAMESPACES_FEATURE_ID, true);
parser.setFeature(VALIDATION_FEATURE_ID, true);
parser.setFeature(SCHEMA_VALIDATION_FEATURE_ID, true);
parser.setFeature(SCHEMA_FULL_CHECKING_FEATURE_ID, true);
parser.setProperty(EXTERNAL_SCHEMA_LOCATION,
schemaloc.getSchemaLocation());
where,
protected static final String NAMESPACES_FEATURE_ID =
"http://xml.org/sax/features/namespaces";
protected static final String VALIDATION_FEATURE_ID =
"http://xml.org/sax/features/validation";
protected static final String SCHEMA_VALIDATION_FEATURE_ID =
"http://apache.org/xml/features/validation/schema";
protected static final String SCHEMA_FULL_CHECKING_FEATURE_ID =
"http://apache.org/xml/features/validation/schema-full-checking";
protected static final String EXTERNAL_SCHEMA_LOCATION =
"http://apache.org/xml/properties/schema/external-schemaLocation";
If desired, I can send you the whole code.
Note that there is very little that is special about the way the no-name
namespace is handled during validation. It is simply a namespace equal to
the empty string. It does not mean that it is un-validate-able.
> Or if you say the OAI individual Resource elements (with nonamespace)
> can be validated with not much problem and you know of a way to
> represent a nonamespace Resource element in the wsdl like we said we
> would do in Moscow. Then I am quite happy for that.
For the wsdl
>
> Many Thanks for any help and answers.
>
> cheers,
> Kevin
>
> p.s. resending this my mail system seems to be stopping for some reason.
>
More information about the registry
mailing list