xsl-list
[Top] [All Lists]

Re: [xsl] Identity transform on node-set loaded with document()

2007-08-02 01:05:39
On 8/2/07, Matt Poff <matt(_dot_)poff(_at_)headfirst(_dot_)co(_dot_)nz> wrote:
I've been away from XSLT a while and am stumbling on how to implement
the following:

My transform imports, using document(), an HTML snippet contain a
populated <head></head> tag. I want to copy this into one of several
result trees I am outputting  as is *except*  the <title/> tag needs to
be populated with a  value.

Initially I created a named template and sent the loaded node-set to it,
then realised I probably needed an identity transform but all of the
identity transform examples I've found seem to be set-up to operate on
the master document only. What's the best way to carry out this task?
Can I do an identity transform with a named template?

I'm sure there's a fairly simple solution but it's passing me by.

Create the new <head> by using a mode, and store it in a variable to
make it easy to copy to all of the places that its needed:

<xsl:variable name="newHead">
  <xsl:apply-templates select="doc('head.xml')" mode="processHead"/>
</

<xsl:template match="@*|node()" mode="processHead">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()" mode="processHead"/>
  </
</

<xsl:template match="title" mode="processHead">
  <title>My new title</title>
</

and then just copy it where you need it eg:

<xsl:copy-of select="$newHead"/>

cheers
andrew

-- 
http://andrewjwelch.com

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--