RE: [xsl] Replace content of element, then transform it...

Subject: RE: [xsl] Replace content of element, then transform it...
From: <trond.huso@xxxxxx>
Date: Thu, 30 Aug 2012 13:01:44 +0000
Right. I take that note.

I am also noticing that disable-output-escaping is deprecated in XSLT2.0, so I
guess I shall try and figure out another way of doing this...

Trond


-----Original Message-----
From: Michael Kay [mailto:mike@xxxxxxxxxxxx]
Sent: 30. august 2012 14:37
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] Replace content of element, then transform it...

One of the main reasons that we've been telling people for 12 years not to use
disable-output-escaping is that it couples the transformation too closely to
the serialization, meaning it's difficult and inefficient to reuse your code
as part of a pipeline. A lot depends on what this d-o-e stuff is really doing.
Having said that, from the information supplied I don't know why you are
getting the error you are.

Michael Kay
Saxonica


On 30/08/2012 12:08, trond.huso@xxxxxx wrote:
> Hi,
>
> I have the following XSLT.
> <xsl:template match="body">
>          <body>
>              <xsl:value-of select="." disable-output-escaping="yes"/>
>          </body>
>      </xsl:template>
>
>      <xsl:template match="leadtext">
>          <leadtext>
>              <xsl:value-of select="." disable-output-escaping="yes"/>
>          </leadtext>
>      </xsl:template>
>
>
>      <xsl:template match="node()|@*">
>          <xsl:copy>
>              <xsl:apply-templates select="node()|@*"/>
>          </xsl:copy>
>      </xsl:template>
>
> Which does what is intended. Just that I want to not output it, but start w=
orking on it in a phase-two process.
> So I tried this
>
> <xsl:template match="body">
>          <body>
>              <xsl:value-of select="." disable-output-escaping="yes"/>
>          </body>
>      </xsl:template>
>
>      <xsl:template match="leadtext">
>          <leadtext>
>              <xsl:value-of select="." disable-output-escaping="yes"/>
>          </leadtext>
>      </xsl:template>
>
>
>      <xsl:template match="node()|@*">
>          <xsl:variable name="foo">
>          <xsl:copy>
>              <xsl:apply-templates select="node()|@*"/>
>          </xsl:copy>
>          </xsl:variable>
>          <xsl:apply-templates select="$foo" mode="phase2" />
>      </xsl:template>
> <!-- Error message:
> Description: Cannot create an attribute node (id) whose parent is a
> documen= t node
> -->
>
> After reading about how this works, I now understand why I am getting the e=
rror. Is there another alternative to make this possible in one document, o= r
do I have to send the output to a new document?
>
> Best regards,
>
> Trond Husx
> System Developer
> Mobile : +47 450 35 715
> E-mail : trond.huso@xxxxxx
> www.ntb.no

Current Thread