Subject: RE: Re: formatting issues
From: cknell@xxxxxxxxxx
Date: Wed, 01 Nov 2006 16:54:18 -0500
|
I'll try to help, but first I need the answers to some questions.
The first template matches the element "states"
===========================
<xsl:template match="states">
<br/>
<xsl:if test="//state/sym='R'">
... content omitted for clarity ...
</xsl:template>
===========================
In your source XML document, is "states" the parent of all "state" elements, or do some "state" elements have "state" child elements?
Further along in this template you have this:
===========================
<xsl:for-each select="//state">
===========================
Unless you are planning to sort the elements, you probably don't need xsl:for-each, just use xsl:apply-templates.
Further along still you have this:
===========================
<td><xsl:choose>xsl:value-of select="Val3"/></td>
===========================
Why do you have an opening xsl:choose without a closing tag and no xsl:when or xsl:otherwise within?
Still further along you have this:
===========================
<xsl:apply-templates select="document(concat($server,'/getinfo.dox?...........)"/>
===========================
Just what is it you are trying to get by concatenating the value of the variable or paramater $server with the string "'/getinfo.dox?..........."?
These problems aside, if your real XSLT works at all then it must be legal XML, which your sample is clearly not. I suspect your problem lies in these templates:
<xsl:template match="data/Val5">
<td><xsl:value-of select="."/></td>
</xsl:template>
<xsl:template match="data/Val6">
<td><xsl:value-of select="node()"/></td>
</xsl:template>
<xsl:template match="data/Val7">
<td><xsl:value-of select="node()"/></td>
</xsl:template>
<xsl:template match="data/Val8">
<td><xsl:value-of select="node()"/></td>
</xsl:template>
If the root element of the document you are getting with
<xsl:apply-templates select="document(concat($server,'/getinfo.dox?...........)"/>
is "data", then you have omitted the document root from the "match" attribute.
The correct XPath for these would begin with "/", as in match="/data/Val8".
--
Charles Knell
cknell@xxxxxxxxxx - email
-----Original Message-----
From: ms <mina_hurray@xxxxxxxxx>
Sent: Wed, 1 Nov 2006 12:45:41 -0800 (PST)
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: formatting issues
Hi:
Can someone please reply to this ? I have been pretyt
frustrated with this problem and would really
appreciate if anyone can help.
--- ms <mina_hurray@xxxxxxxxx> wrote:
> I have tried everything possible and have failed to
> format this XML.
>
> My XSLT looks like this:
>
> <xsl:template match="states">
> <br/>
> <xsl:if test="//state/sym='R'">
> <table width="100%">
> <tr>
> <td colspan="8">
> <b>STATES: </b>
> </td>
> </tr>
> <tr>
> <td width="9%">
> <u>Val1</u>
> </td>
> <td width="15%">
> <u>Val2</u>
> </td>
> <td width="7%">
> <u>Val3</u>
> </td>
> <td width="7%">
> <u>Val4</u>
> </td>
> <td width="9%">
> <u>Val5</u>
> </td>
> <td width="21%">
> <u>Val6</u>
> </td>
> <td width="15%">
> <u>Val7</u>
> </td>
> <td width="7%">
> <u>Val8</u>
> </td>
> </tr>
> <xsl:for-each select="//state">
> <xsl:choose>
> <xsl:when test="sym='R'">
> <tr>
> <td>
> <xsl:value-of select="Val1"/>
> </td>
> <td>
> <xsl:value-of select="Val2"/>
> </td>
> <td>
> <xsl:choose>
>
> <xsl:value-of select="Val3"/>
>
> </td>
> <td>
> <xsl:value-of select="Val4"/>
> </td>
> <xsl:variable name="v1">
> <xsl:value-of select="Val1"/>
> </xsl:variable>
> <xsl:variable name="v2">
> <xsl:value-of select="Val2"/>
> </xsl:variable>
>
>
> <xsl:apply-templates
>
select="document(concat($server,'/getinfo.dox?...........)"/>
> </tr>
> </xsl:when>
> </xsl:choose>
> </xsl:for-each>
> </table>
> </xsl:if>
> </xsl:template>
> <xsl:template match="results">
> <tr>
> <xsl:apply-templates/>
> </tr>
> </xsl:template>
> <xsl:template match="data">
> <xsl:apply-templates/>
> </xsl:template>
> <xsl:template match="data/Val5">
> <td>
> <xsl:value-of select="."/>
> </td>
> </xsl:template>
> <xsl:template match="data/Val6">
> <td>
> <xsl:value-of select="node()"/>
> </td>
> </xsl:template>
> <xsl:template match="data/Val7">
> <td>
> <xsl:value-of select="node()"/>
> </td>
> </xsl:template>
> <xsl:template match="data/Val8">
> <td>
> <xsl:value-of select="node()"/>
> </td>
> </xsl:template>
>
>
> Now, Val1, Val2, Val3, Val4 are available in the
> input
> XML SO I am not concerned about them becoz they
> format
> fine.
>
> Val5, Val6, Val7, and Val8 are retrieved thru a
> server
> call using JSP where it return the XML which looks
> like below:
>
> <results>
>
> <data>
> <Val5>something</Val5>
> <Val6>something</Val6>
> <Val7>something</Val7>
> <Val8>P</Val8>
> </data>
>
> <data>
> <Val5>something</Val5>
> <Val6>something</Val6>
> <Val7>something</Val7>
> <Val8>P</Val8>
> </data>
>
> </results>
>
> How do I format this to XHTML view. The above XSLT
> does not seem to work on this. Thank you for all
> your help.
>
>
>
>
____________________________________________________________________________________
> Want to start your own business? Learn how on Yahoo!
> Small Business
> (http://smallbusiness.yahoo.com)
>
>
____________________________________________________________________________________
We have the perfect Group for you. Check out the handy changes to Yahoo! Groups
(http://groups.yahoo.com)
|