- From: Johannes Koch <koch@w3development.de>
- Date: Thu, 29 Jan 2004 10:35:03 +0100
- Cc: www-html@w3.org
K.M. Ku wrote: > > Dear ALL, > > I am a newbie.. > I got a problem w/ xslt . The problem seems to be the namespace issue of the > source XHTML file. > > Here are my steps: > > 1) I use tidy to tidy up a html page into xhtml file . > > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" > "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> > <html xmlns="http://www.w3.org/1999/xhtml"> > <head> > <meta name="generator" content="HTML Tidy, see www.w3.org" /> > <meta name="ROBOTS" content="NOARCHIVE" /> Here every non-prefixed element is in the XHTML namespace. > 2) I write a simple stylesheet to extract all td elements. > > <html xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > xsl:version="1.0"> > <head> > <title>aa</title> > </head> > > <body> > > <xsl:for-each select="//td"> > <p>qq</p> > </xsl:for-each> > </body> > </html> Here you try to match element from the null (not XHTML) namespace. > 3) I use Xalan - Java to convert the file. > > However, the transformation gives nothing, and it seems that it never sees > the td nodes. Right. > 4) I removed all the XHTML declaration of the source XHTML file so that it > changed to: > > <html> > <head> > <meta name="generator" content="HTML Tidy, see www.w3.org" /> > <meta name="ROBOTS" content="NOARCHIVE" /> Now the elements are in a null namespace > And it works now... because they are matched by your XSLT. > I know I did something wrong. * Define a prefix in your XSLT for XHTML (xmlns:x="http://www.w3.org/1999/xhtml"). * Use this prefix when matching and selecting elements (match="x:td"). -- Johannes Koch In te domine speravi; non confundar in aeternum. (Te Deum, 4th cent.)
Received on Thursday, 29 January 2004 04:35:32 UTC