![]() |
![]() | ![]() | ![]() | Altova Mailing List Archives>Archive Index >comp.text.xml Archive Home >Recent entries [Thread Prev] >Thread Next - Re: Do I have a bug, or am I pushing the limits of XSLT engines? Do I have a bug, or am I pushing the limits of XSLT engines?To: NULL Date: 5/3/2004 3:06:00 PM I am trying to convert an HTML table into a list of name-value pairs, one pair per field in the table. I believe my XSLT is correct, but I've tried both Xalan and Saxon, which both fail with different results. Below I've listed my HTML input, my expected XML output, my XSLT, and the actual output from both Saxon and Xalan. Thanks in advance. HTML Input ---------- <html> <head/> <body> <table> <tr> <th>Field 1</th> <th>Field 2</th> </tr> <tr> <td>A</td> <td>1</td> </tr> <tr> <td>B</td> <td>2</td> </tr> </table> </body> </html> Expected XML Output ------------------- <?xml version="1.0" encoding="UTF-8" ?> <records> <record> <field> <name>Field 1</name> <value>A</value> </field> <field> <name>Field 2</name> <value>1</value> </field> </record> <record> <field> <name>Field 1</name> <value>B</value> </field> <field> <name>Field 2</name> <value>2</value> </field> </record> </records> XSLT ---- <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:variable name="fields" select="//th" /> <xsl:template name="lookup-field"> <xsl:param name="at-index"/> <xsl:value-of select="$fields[$at-index]" /> </xsl:template> <xsl:template match="/html/body/table"> <records> <xsl:apply-templates select="tr[td]"/> </records> </xsl:template> <xsl:template match="tr[td]"> <record> <xsl:for-each select="td"> <field> <name> <xsl:call-template name="lookup-field"> <xsl:with-param name="at-index"> <xsl:value-of select="position()"/> </xsl:with-param> </xsl:call-template> </name> <value> <xsl:value-of select="."/> </value> </field> </xsl:for-each> </record> </xsl:template> </xsl:transform> Actual Output From Saxon: ------------------------- <?xml version="1.0" encoding="UTF-8" ?> <records> <record> <field> <name>Field 1</name> <value>A</value> </field> <field> <name>Field 1</name> <value>1</value> </field> </record> <record> <field> <name>Field 1</name> <value>B</value> </field> <field> <name>Field 1</name> <value>2</value> </field> </record> </records> Actual Output From Xalan: ------------------------- javax.xml.transform.TransformerException: java.lang.NullPointerException | ![]() | ![]() | ![]() |
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | |||||
|
