xsl-list
[Top] [All Lists]

RE: Reprocessing XHTML with XSLT

2002-10-31 16:43:38
You'll probably find that harmless-looking XHTML DTD is declaring a
default namespace for you - a practice which should be punishable by
flogging.

Michael Kay
Software AG
home: Michael(_dot_)H(_dot_)Kay(_at_)ntlworld(_dot_)com
work: Michael(_dot_)Kay(_at_)softwareag(_dot_)com 

-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com 
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of 
Peter Flynn
Sent: 31 October 2002 22:34
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Reprocessing XHTML with XSLT


I've either lost those last few remaining neurons, or I've 
missed something rather important in the documentation (it's 
the first time I've needed to do an XML-to-XML transformation 
in anger, too :-)

I had a moderately well-formed HTML file from a user which I 
ran through Tidy -asxml to turn it into WF XHTML. I mended 
some errors* and it's now valid. I then started writing some 
XSLT (below) to turn it into the required XML markup.

But running it through xt or Cocoon only fires the document 
root template and nothing else, so I get output with the data 
content enclosed in the specified root element tags 
(<modules>...</modules>) and the rest is dogfood -- as if I 
had not specified any other templates. I've tried with both 
the literal result elements and with <xsl:element> but the 
same occurs.

Why is it failing to match the remaining templates? There 
doesn't seem to be anything in Dave's FAQ or any of the books 
I've got, which only cover XHTML *output*, so I'm making the 
conclusion that I've missed something significant in the spec.

///Peter
-- 
Minimal example:

---------- test.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "/dtds/xhtml1-transitional.dtd">
<html>
   <head>
     <title>some title</title>
   </head>
   <body>
     <table>
       <tr>
      <td>stuff to ignore</td>
      <td>more stuff</td>
       </tr>
     </table>
     <h2>a heading</h2>
     <p>just text</p>
   </body>
</html>

---------- extract.xsl

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                 version="1.0">

   <xsl:output method="xml"/>

   <xsl:strip-space elements="*"/>

   <xsl:template match="/">
     <modules>
       <xsl:apply-templates/>
     </modules>
   </xsl:template>

   <xsl:template match="html">
     <xsl:apply-templates/>
   </xsl:template>

   <xsl:template match="head | table | p"/>

   <xsl:template match="body">
     <xsl:apply-templates/>
   </xsl:template>

   <xsl:template match="h2">
     <module>
       <xsl:apply-templates/>
     </module>
   </xsl:template>

</xsl:stylesheet>

---------- output

<?xml version="1.0" encoding="utf-8"?>
<modules>some titlestuff to ignoremore stuffa headingjust 
text</modules>

----------
* It appears that Tidy fails to convert NAME attributes which 
are comprised of digits only to a suitable form beginning 
with a letter when it outputs them as ID values, in order to 
conform with being XML Names.






 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>