[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Partial Implementation of XInclude include element


Subject: Re: [xsl] Partial Implementation of XInclude include element
From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx>
Date: Tue, 24 Sep 2002 16:14:22 +0100

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



Current Thread
Keywords