Home. 
.

transparent

transparent

transparent

Altova Mailing List Archives


Re: Implementations/Non-Implementations of xs:redefine?

From: Eliot Kimber <ekimber@--------.--->
To: xmlschema-dev@--.---
Date: 1/9/2008 1:56:00 AM
Henry S. Thompson wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Eliot Kimber writes:
> 
>> I think DITA shines a spotlight on [the dark corners of xs:redefine
>> interop]. In particular, any two topic specializations used in the
>> same environment (which will be all realistic uses of DITA, which,
>> out-of-the-box, defines three specializations of the base topic
>> type) will re-use the same base schema modules and apply *different*
>> redefines.
>>
>> I think that's exactly the main issue Mike is describing: schemas B
>> and C (e.g., topic-type-specific "shell" schemas) both redefine groups
>> defined in schema A (the base "topic" topic type schema module).
> 
> I'm not sure I understand.  Do you mean that user 1 and/or document 1
> need schema B, which redefines schema A, while user 2 and/or document
> 2 need schema C, which redefines schema A?  Or do you mean that some
> users/documents need schemas B _and_ C, both of which redefine schema
> A?
> 
> The former is fine, it's only the latter which is tricky and, in fact,
> I would say, an error (because B and C will produce distinct
> definitions of some top-level items. . .).

A given document will only use one of either schema B or C but a given 
user might have instances of documents that use B and instances that use 
C. These two documents might be processed together in the same 
transformation session (because they could be used from a single DITA 
map). This could, I think, lead to a case where an XSLT processor, for 
example, has a cached version of schema A, modified per the redefines in 
schema B, which then encounters schema C, which also uses A but applies 
different redefines. I'm not sure any XSLT processors actually do that 
but I think that's one of the cases Mike is thinking of. If the 
processor wants to do caching of schema modules (that is, caching the 
declarations defined in a given schema instance document without regard 
to use context via xs:include [which is probably a bad thing to do]there 
is no way for it to know, when it processes the document using schema B 
that it will later encounter another document using schema C that 
applies different redefines.

Having thought it about just now, it seems clear that the redefine 
feature definitely precludes caching of modules-as-redefined used via 
xs:include (that is, modules in the same namespace or no-namespace) and 
might preclude caching). The best you could do is cache modules in their 
unmodified state and apply redefines dynamically as you process 
top-level schemas.

Cheers,

Eliot

-- 
Eliot Kimber
Senior Solutions Architect
"Bringing Strategy, Content, and Technology Together"
Main: 610.631.6770
www.reallysi.com
www.rsuitecms.com

From ht@i... Wed Jan 09 14:02:10 2008
Received: from lisa.w3.org ([128.30.52.41])
	by frink.w3.


transparent
Print
Mail
Like It
Disclaimer
.

These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on www.altova.com/list/index.html. Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.

.
.

transparent

transparent