OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

dita message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]

Subject: Re: [dita] Namespaces and Schemas: Some Initial Findings andXSLT Implications

At 19:27 2004-06-29 +0400, Paul Antonov wrote:

>On Tue, 29 Jun 2004, Eliot Kimber wrote:
>> The whole issue of defaulted attributes in XML is one of the XML Big
>> Lies, namely the assertion that there is no markup minimization in XML.
>> There isn't *except* for defaulted attributes. In thinking about it now
>> this suggests that there ought to be a simple, schema-compatible, way to
>> define attribute defaults that is separate from the larger function of
>> defining data types and content constraints so that processors could
>> easily implement attribute defaulting without having to step up to full
>> schema awareness, but it appears that this idea got lost in schema land
>> (not surprisingly). Hmmm.
>This is another good reason for having a formal, XML-based format for DITA
>specializations. From this, it will be pretty easy to generate XSLT
>stylesheet which sets class attributes for further processing (both
>steps can be done in a single XSLT processor run because most XSLT
>implementations allow apply-templates on result tree fragments).

Replying just to the parenthetical statement, you have to be very careful
about using apply-templates on result tree fragments (e.g., using the
exslt:node-set() function) because you lose context.  That is, when you
process a node that has been passed to exslt:node-set(), the "root" of
the context is the top level node passed to exslt:node-set(), and any
nodes that were ancestors in the input document are not seen as ancestors
of the node that gets processed within exslt:node-set().  This can cause
subtle and sometimes unfixable bugs in your processing.  I'd be very 
careful about relying on such techniques for a robust DITA solution.

If necessary to do something like this, it would be better to plan to 
do two XSLT passes in series in a sort of pipeline.


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]