Reputation: 6833
I am doing a very simple xslt to convert a html page to a xml file.
But it appears to me that the starting point is not that straightforward to me.My first goal is to convert a <html>
tag into a <topic>
tag.
I did the following xslt:
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="html">
<topic>
<xsl:text> Conversion Test</xsl:text>
</topic>
</xsl:template>
However, now after I run this xslt, the result xml is purely of the same content of the original html page, it seems that the third template match that I wrote (to match the <html>
tag) never gets hit.
The source html looks like:
<!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>..</head>
<body>...</body>
</html>
Could experts help me a little here?
Upvotes: 3
Views: 4457
Reputation: 52848
XSLT 1.0:
Try adding xmlns:x="http://www.w3.org/1999/xhtml"
to your xsl:stylesheet
and changing your match to match="x:html"
. (Note: you don't have to use "x"; you can choose anything you want.)
XSLT 2.0:
Either use the above method or replace the namespace prefix in your match(es) to "*" (match="*:html"
). You could also add xpath-default-namespace="http://www.w3.org/1999/xhtml"
to the xsl:stylesheet
.
Upvotes: 5
Reputation: 15150
The purpose of XSLT is to transform XML documents into other XML documents. HTML is not a XML document. While XHTML is XML, it is actually HTML reformulated so I'm just not sure what you want to do is easy or possible with XSLT.
Upvotes: 0
Reputation: 4954
You may want to try to remove the first template or make it more specific than matching every node with node()
.
Upvotes: 0