Subject: Re: [xsl] html as input to xslt From: Lou Iorio <lou@xxxxxxxxxxxx> Date: Tue, 04 Sep 2007 19:07:12 -0400 |
<!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>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xhtml="http://www.w3.org/1999/xhtml" version="1.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="//div[@class='header']"> <xsl:copy-of select="." /> <p>other stuff</p> </xsl:template> </xsl:stylesheet>
>xsltproc test.xsl test.html <html xmlns="http://www.w3.org/1999/xhtml"> <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>yellow</title> </head> <body> <div class="navheader"> <p>navheader</p> </div> <div class="something"> <p>something</p> </div> <p>plain</p> </body> </html>
Lou -------------------------------------------------------------------------------- Andrew Welch wrote:
On 8/31/07, Lou Iorio <lou@xxxxxxxxxxxx> wrote:
This is probably a naive question, but I could not find it in the archives.
Can I transform xhtml documents using xsl, or does this just not make sense?
I'm trying to replace a tag with a specified attribute to another tag.
The only xpath that does anything is *, which dumps the text of the html.
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <verse> <xsl:value-of select="*"/> </verse> </xsl:template> </xsl:stylesheet>
I'm using xsltproc and saxon8, both of which do the same thing.
xhtml is in the namespace "http://www.w3.org/1999/xhtml" so you'll need to modify your stylesheet to match elements in that namespace eg:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="xhtml:"http://www.w3.org/1999/xhtml" version="1.0">
<xsl:template match="/"> <verse> <xsl:value-of select="xhtml:html/xhtml:body/xhtml:div/blah"/> </verse> </xsl:template>
</xsl:stylesheet>
Note the namespace declaration on the xsl:stylesheet element and the modified xpath.
In XSLT 2.0 there's the xpath-default-namespace which is probably better than bloating your XPaths with the prefix.
Current Thread |
---|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Unexpected Context Node a, Michael Terry | Thread | Re: [xsl] html as input to xslt, Owen Rees |
[xsl] Unexpected Context Node at Po, Michael Terry | Date | Re: [xsl] Unexpected Context Node a, Abel Braaksma |
Month |