Re: [xsl] html as input to xslt

Subject: Re: [xsl] html as input to xslt
From: Lou Iorio <lou@xxxxxxxxxxxx>
Date: Wed, 05 Sep 2007 14:31:22 -0400
You're right, it's not exactly what I want.

I have this html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
<html xmlns="http://www.w3.org/1999/xhtml";>
<head>
 <title>yellow</title>
</head>
<body>
 <div class="navheader">
   <p>navheader</p>
 </div>
 <div class="something">
   <p>something</p>
 </div>
 <p>plain</p>
</body>
</html>

I run this transform:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:xhtml="http://www.w3.org/1999/xhtml"; version="2.0">
 <xsl:output method="html" />
 <xsl:template match="node()|@*">
   <xsl:copy>
     <xsl:apply-templates select="@*" />
     <xsl:apply-templates />
   </xsl:copy>
 </xsl:template>
 <xsl:template match="//xhtml:div[@class='navheader']">
   <xsl:copy-of select="." />
   <p>other stuff</p>
 </xsl:template>
</xsl:stylesheet>

and I get this output:

<html xmlns="http://www.w3.org/1999/xhtml";>
  <head>
     <title>yellow</title>
  </head>
  <body>
     <div class="navheader">
        <p>navheader</p>
     </div>
     <p xmlns:xhtml="http://www.w3.org/1999/xhtml"; xmlns="">other stuff</p>
     <div class="something">
        <p>something</p>
     </div>
     <p>plain</p>
  </body>
</html>

I'd rather not have the xhtml name stuff in the output. Is there a way around
this?


Thanks,

Lou
Owen Rees wrote:
--On Tuesday, September 04, 2007 07:07:12 PM -0400 Lou Iorio wrote:

<xsl:template match="//div[@class='header']">

The input is in the XHTML namespace and has class="navheader" so this needs to be


<xsl:template match="xhtml:div[@class='navheader']">

Note also that the copying preserves the namespace of the input elements which may not be what you want given that you have specified html as the output method.

Current Thread