|
next
|
 Subject: Re: using catalogs Author: (Deleted User) 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
|
top
|
 Subject: Re: using catalogs Author: (Deleted User) 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
|
|
|
|