XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
(Deleted User) Subject: using catalogs
Author: (Deleted User)
Date: 11 Mar 2004 05:16 AM
I have created a catalog and attached it to the current project. I have an XMl file in there, but when I try to validate it is not finding the schema files.

Do I have to anything to get the validator to look for a catalog


ApplicationdiagnosticsCatalog.xml
My catalog

Postnext
Alberto MassariSubject: Re: using catalogs
Author: Alberto Massari
Date: 11 Mar 2004 07:51 AM
At 05.44 11/03/2004 -0500, you wrote:
>From: "Martin Roberts"
>
>I have created a catalog and attached it to the current project. I have
>an XMl file in there, but when I try to validate it is not finding the
>schema files.
>
>Do I have to anything to get the validator to look for a catalog

Hi Martin,
the catalog information is used to find the location where a schema file
has been moved; so a catalog will usually contain a line like this

[uri name="http://..../xxx.xsd" uri="c:\myLocalCopy\xxx.xsd"/]

to redirect remote URI to local files.
In your catalog you are mapping the namespace URI to a remote schema file;
I guess because you want to be able to write an XML file like this

[root xmlns:xsi="http://.../XMLSchema-instance" xsi:schemaLocation="urn:...
invalidFile.xsd"/]

In any case, I have patched the code to look for a mapping
namespace->schema if a schema->local schema mapping cannot be found; in the
meanwhile you can change the XML to refer to the official URL for the
schema file and the catalog to map that URL into the real location.

Hope this helps,
Alberto

Postnext
(Deleted User) Subject: Re: using catalogs
Author: (Deleted User)
Date: 11 Mar 2004 08:44 AM
Alberto,
Sorry for not getting it. I have local copies of the schemas available through a web server, but these are not the final schema locations, so rather than including any xsi:schemaLocation info I wanted to use a catalog. Are you saying my catalog will not work with remote files? Do I have to refer to file uri?

Martin

Postnext
(Deleted User) Subject: Re: using catalogs
Author: (Deleted User)
Date: 11 Mar 2004 08:48 AM
Do I need to have an xsi:schemaLoaction in my XML file? Do you have an example project that includes the use of catalogs?

Postnext
Alberto MassariSubject: Re: using catalogs
Author: Alberto Massari
Date: 11 Mar 2004 09:36 AM
Hi Martin,

At 09.12 11/03/2004 -0500, you wrote:
>From: "Martin Roberts"
>
>Alberto,
> Sorry for not getting it. I have local copies of the schemas available
> through a web server, but these are not the final schema locations, so
> rather than including any xsi:schemaLocation info I wanted to use a
> catalog. Are you saying my catalog will not work with remote files? Do
> I have to refer to file uri?

I guess we have a misunderstanding on the "catalog" word (i.e. our
documentation on this topic is lacking...); the term comes from the OASIS
specification for "entity resolution" that can be found at
http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=entity

The short description for this process is

"Entity resolution is the process that an XML processor goes through when
it has been requested to find another file in the course of processing the
file it's working on. [...] These identifiers can be used to determine the
actual location of the desired external file. This determination process
(which "maps" the known labelling information into an actual location) is
called an entity resolution, and the file that contains the specific
mapping information is called the entity resolution catalog."

The driving force for this specification has been the fact that XML
documents need to point to external entities (usually DTDs and XML
Schemas); to be able to resolve these dependencies, they had to be placed
in a location relative to the source document (e.g. same directory) or in a
central repository (e.g. a web server).
If the central repository is unavailable (or accessing it at runtime is
unfeasible), the XML processor can be instructed to redirect all the
requests for a specific URI, DTD public ID or system ID to another, more
accessible, location.

So you need to create your XML files like you are dealing with the official
schemas; for instance, writing

[root xmlns:xsi="...." xsi:schemaLocation="urn:....
http://www.officialwebsite.com/spec_1.0.xsd"]

Then, instead of uploading beta versions of your schemas to the web site,
you use a catalog to redirect the URL
"http://www.officialwebsite.com/spec_1.0.xsd" to the local folder where
they actually are located. Once the beta testing phase is ended, you just
upload the final schemas to the web site.

Hope this helps,
Alberto

Postnext
(Deleted User) Subject: Re: using catalogs
Author: (Deleted User)
Date: 11 Mar 2004 10:06 AM
Alberto,
I understand where you are coming from but I thought the dereferencing was done by namespaces and not by filename.

I thought catalogs were to save me from having the xsi:schemaLoaction in the xml instances.

Martin

Postnext
Alberto MassariSubject: Re: using catalogs
Author: Alberto Massari
Date: 11 Mar 2004 10:20 AM
Hi Martin,

At 10.33 11/03/2004 -0500, you wrote:
>From: "Martin Roberts"
>
>Alberto,
> I understand where you are coming from but I thought the dereferencing
> was done by namespaces and not by filename.

Catalog lookup is triggered by a request of loading a document; the simple
association of a namespace prefix to a namespace URI doesn't trigger anything.
You can use the mapping URI->schema location when writing an XML Schema
that imports another one without specifying its location, like in

[xsd:import namespace="urn:...."/]

>I thought catalogs were to save me from having the xsi:schemaLoaction in
>the xml instances.

Why do you want not to have a schemaLocation attribute? Such an XML
document will be considered to be schema-less by every XML parser, unless
you write extra code to instruct him to find the right schema.

Alberto

Postnext
(Deleted User) Subject: Re: using catalogs
Author: (Deleted User)
Date: 11 Mar 2004 10:46 AM
Alberto,
The reason for not wanting the xsi bit is that it makes the documents very verbous by the time you have defined 5 namespaces and 5 pairs of uri in the schemaLocation tag.

I guess we will have to put up with that.

You mentioned the loading of schemas. Surely as soon as you hit an element with a qualified name you have enough to need to load a document and therefore you can then look up in the catalog.

Martin

Postnext
(Deleted User) Subject: Re: using catalogs
Author: (Deleted User)
Date: 11 Mar 2004 10:55 AM
http://xml.apache.org/xerces2-j/faq-xcatalogs.html#faq-2

The url above shows an example for the xerces processor that does NOT have the xsi:schemaLocation

Posttop
Alberto MassariSubject: Re: using catalogs
Author: Alberto Massari
Date: 11 Mar 2004 11:07 AM
Hi Martin,

At 11.13 11/03/2004 -0500, you wrote:
>From: "Martin Roberts"
>
>Alberto,
> The reason for not wanting the xsi bit is that it makes the documents
> very verbous by the time you have defined 5 namespaces and 5 pairs of uri
> in the schemaLocation tag.
>
>I guess we will have to put up with that.
>
>You mentioned the loading of schemas. Surely as soon as you hit an
>element with a qualified name you have enough to need to load a document
>and therefore you can then look up in the catalog.

Yes, we could look for the declared namespaces and try to load the
associated schemas (clearly, only when validating); but what I am trying to
say is that this is an XML document that is not guaranteed to always be
considered associated to an XMLSchema. For instance, even if we added this
feature to Stylus Studio, validating such a document using an external
validator like Xerces-J, MSXML or XSV would fail.

In general, if you are planning to produce XML documents being published
and used by different companies/users using different XML tools, this is
something you should try to avoid.
The XMLSchema spec only listed the xsi:schemaLocation as the mechanism to
associate an XML document to its schema (see
http://www.w3.org/TR/xmlschema-0/#schemaLocation); it leaves the
implementors free to add other ways, but those will remain non-standard and
hence working only until you keep using the same XML parser.

Alberto

 
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.