Subject: RE: XSL If Statement - repost with code
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Sun, 24 Aug 2008 22:08:57 +0100
|
Please don't ask questions about WD-xsl on this list. The language has been
obsolete for ten years, and it is very hard to find a specification of it.
In XSLT (unlike WD-xsl) using a "match" attribute on an xsl:if element is a
syntax error.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Sumit Patki [mailto:sumitpatki@xxxxxxxxx]
> Sent: 24 August 2008 19:44
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: XSL If Statement - repost with code
>
> Here is the xsl and xml I am using to write the state matrix
> in html o/p only if matrix element has 1 in it.
> None of the XSL:IF statements in the below code work.
>
> I think I can change namespace to
> "http://www.w3.org/1999/XSL/Transform" instead of
> "http://www.w3.org/TR/WD-xsl" since the xsl file doesn't have
> any other WD-XSL specific tags. Even though I change the
> namespace, it doesn't work. The extension of the xsl file is
> .xsl I am not sure what it will be for xslt.
>
> XSL code:
>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
>
> <xsl:template match="/">
> <HTML>
> <BODY STYLE="font-family:Arial, helvetica, sans-serif;
> FONT-SIZE: x-small">
>
> <table STYLE="border: 1px #000066 outset ; border-collapse:
> collapse" width="100%">
>
> <tr>
> <td colspan="2">
> <table border="0" width="100%" cellspacing="0" cellpadding="0">
> <tr>
>
> <td width="100%" STYLE=" font-family: Arial,
> Helvetica, sans-serif; font-size: 11px; color: #000000;">
>
>
> <xsl:apply-templates select="topic/detail/content" />
>
> </td>
> </tr>
> </table>
> <!-- matrix code start -->
> <table border="0" width="100%" >
> <tr>
> <td align="center" STYLE="font-weight: bold;">
> <xsl:value-of select="topic/detail/heading" /> </td>
> </tr>
> </table>
>
>
> <xsl:for-each select="topic/detail">
> <!-- <xsl:if test="matrix > 0"> -->
> <xsl:if match=".[matrix=1]">
> <table border="2">
> <tr>
> <td align="center" STYLE="font-weight: bold;">
> <xsl:value-of select="topic/detail/tableheading1" /> </td>
> <td align="center" STYLE="font-weight: bold;">
> <xsl:value-of select="topic/detail/tableheading2" /> </td>
> </tr>
> <xsl:for-each select="topic/detail/table/state" >
> <tr>
> <td STYLE="font-weight: bold;vertical-align:
> top;"> <xsl:value-of select="statename" /> </td>
> <td STYLE="vertical-align: top;">
> <xsl:apply-templates select="statedesc" /> </td>
> </tr>
> </xsl:for-each>
>
> </table>
> </xsl:if>
> </xsl:for-each>
> <!--matrix code end-->
>
>
> </td>
> </tr>
> </table>
>
>
>
> </BODY>
> </HTML>
> </xsl:template>
>
>
>
> <xsl:template match="topic/detail/content">
>
> <xsl:apply-templates />
>
> </xsl:template>
>
> <xsl:template match="br">
> <br><xsl:apply-templates /></br>
> </xsl:template>
>
>
> <xsl:template match="text()"><xsl:value-of /></xsl:template>
>
> </xsl:stylesheet>
>
>
> XML Code:
> <?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet
> type="text/xsl" href="help.xsl" ?> <topic>
> <detail>
> <pageid>123</pageid>
> <name>test</name>
> <content>test content <br /></content>
> <heading>State Matrix</heading>
> <matrix>1</matrix>
> <tableheading1>State Code/Name</tableheading1>
> <tableheading2>State Description</tableheading2>
> <table>
> <state>
> <statename>01/AL</statename>
> <statedesc>Alabama</statedesc>
> </state>
> <state>
> <statename>02/AK</statename>
> <statedesc>Alaska</statedesc>
> </state>
> <state>
> <statename>04/AZ</statename>
> <statedesc>Arizona</statedesc>
> </state>
> </table>
> </detail>
> </topic>
|