This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Partial Implementation of XInclude include element


Hi Eliot,

>> I think that it's probably better to use an identity template here,
>> namely:
>> 
>> <xsl:template match="node() | @*" mode="xinclude">
>>   <xsl:copy>
>>     <xsl:apply-templates select="@* | node()" mode="xinclude" />
>>   </xsl:copy>
>> </xsl:template>
>> 
>> First, it's simpler. Second, it copies over comments and PIs, which
>> you probably should do. Third, and most important, it manages
>> namespaces correctly. As you currently have it, say you were
>> including:
>
> Hmm. What doesn't happen when I use this improved code is copying of
> the namespace nodes from the xsl:stylesheet document, as happens in
> normal output (that is, if I don't go through this initial xinclude
> step).

I don't really understand why you want the namespaces from the
*stylesheet* copied through into the output? Surely the only
namespaces that should go through are those from the original source
document and those from the document that's being XIncluded?

Can you give an example that demonstrates what you want to happen?

It might be that doing something like:

<xsl:template match="*" mode="xinclude">
  <xsl:copy>
    <xsl:copy-of select="document('')/xsl:stylesheet/namespace::*" />
    <xsl:apply-templates select="@* | node()" mode="xinclude" />
  </xsl:copy>
</xsl:template>

would give you what you want -- taking the namespace nodes from the
xsl:stylesheet element and copying them on to each element that's
copied from the source document(s).

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]