|
Subject: Re: [xsl] too many columns From: "Gabi Bucataru" <gabi@xxxxxxxxxxxxxxxxx> Date: Thu, 24 Oct 2002 10:30:18 -0500 |
Thanks a lot, Jarno & Mike,
Awsome!
However I have 2 questions here:
1.
See, the thing is that i will never know how many of those A1, A2 elements
(and so on) I will have. Once it might be only 2, 4, who knows. So is there
a way that I can make the template dynamic? I mean this one (now I have 6
A's there):
<xsl:template match="A1|A2|A3|A4|A5|A6">
<td valign="top">
<xsl:attribute name="style">color:#<xsl:choose>
<xsl:when test="@color">
<xsl:value-of select="@color" />
</xsl:when>
<xsl:otherwise>000000</xsl:otherwise>
</xsl:choose>;background-color:#<xsl:choose>
<xsl:when test="@fond">
<xsl:value-of select="@fond" />
</xsl:when>
<xsl:otherwise>FFFFFF</xsl:otherwise>
</xsl:choose>;</xsl:attribute>
<xsl:value-of select="." />
</td>
</xsl:template>
2.
The second question is that I would like to start look into XSLT 1.0... Can
you please point me to a resource to learn that? I would like to make this
move.
Thanks a lot !!!
Gabi.
----- Original Message -----
From: "Mike Brown" <mike@xxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Thursday, October 24, 2002 3:03 AM
Subject: Re: [xsl] too many columns
> Jarno.Elovirta@xxxxxxxxx wrote:
> > > I have a xml/xsl duet where i would like to render multiple
> > > tables with the
> > > info that is between the <Page></Page> tags as seen in the
> > > XML (source) here
> > > http://65.104.178.73/print.xml
> >
> > For future reference, it would probably be better if you posted a sample
from your source that shows the problem, instead of pointing to a file on
the net, so people won't have to wget it.
>
> There's nothing wrong with posting a URL to the source. It's a not a large
> file at all, but is larger than ought to be posted to the list.
>
> One problem with the source, offhand, is that there are elements named
> 'XMLData' and 'XMLNodeName'. While this doesn't break well-formedness, it
is
> in violation of the XML 1.0 spec, because it starts with 'XML' yet isn't a
> name standardized upon by the W3C. Choose a different name that does not
start
> with 'XML' (case-insensitive).
>
> > > However, my column headers are rendered perfectly fine, but I
> > > have more columns that I need instead of having the first
> > > <Page></Page>table content
> > > in the first table and the second <Page></Page> in the second table.
> > >
> > > It is hard to explain but I guess seeing it will help you understand.
> > >
> > > The stylesheet is here:
> > > http://65.104.178.73/print.xsl
> >
> > Anyhow, it seems that you're using the
Microsoft-XSL-dialect-that-has-nothing-to-do-with-XSLT-1.0. Thus, you should
either ask Microsoft for assistance or e.g. see Microsoft XSL FAQ
<http://www.netcrucible.com/xslt/msxml-faq.htm>, or rewrite you stylesheet
in XSLT 1.0, and come back if you're having problems with that.
>
> I wasn't going to attempt to reproduce the VBScript's functionality, but
it
> looks like most of it wasn't even needed. The following does not use any
> pre-XSLT-1.0-specific constructs, and will probably produce output very
close
> to what was expected. It seems to work in IE, but I can't test with MSXML2
> (IE5.0), myself.
>
> <?xml version="1.0" encoding="utf-8"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/TR/WD-xsl">
>
> <xsl:template match="/">
> <html>
> <head>
> <style type="text/css">
> p.page {page-break-after: always}
> body {background-color:#cccccc; margin:0
> font:MessageBox;
> font:Message-Box;}
> .TableBody {background: white;
> font-family: arial;
> font-size: 9px}
> .TableHeading {border-top-width:1;
> border-left-width:1;
> border-bottom-width:1;
> border-right-width:1;
> border-right-color:black;
> border-bottom-color:black;
> border-style:outset;
> font-family:verdana;
> font-size:10px;
> background-color:#cccccc}
> </style>
> <!-- rest of head here -->
> </head>
> <body>
> <xsl:apply-templates select="XMLData/Page" />
> </body>
> </html>
> </xsl:template>
>
> <xsl:template match="Page">
> <p class="page">
> <table style="background: black" cellspacing="1" width="600">
> <thead>
> <xsl:apply-templates select="Columns/Column" mode="thead" />
> </thead>
> <tbody class="TableBody">
> <xsl:apply-templates select="People/Person" />
> </tbody>
> </table>
> </p>
> </xsl:template>
>
> <xsl:template match="Caption">
> <xsl:value-of select="." />
> </xsl:template>
>
> <xsl:template match="Column" mode="thead">
> <th nowrap="yes" class="TableHeading">
> <xsl:apply-templates select="Caption" />
> </th>
> </xsl:template>
>
> <xsl:template match="Person">
> <tr>
> <xsl:apply-templates select="Data/*" />
> </tr>
> </xsl:template>
>
> <xsl:template match="A1|A2|A3|A4|A5|A6">
> <td valign="top">
> <xsl:attribute name="style">color:#<xsl:choose>
> <xsl:when test="@color">
> <xsl:value-of select="@color" />
> </xsl:when>
> <xsl:otherwise>000000</xsl:otherwise>
> </xsl:choose>;background-color:#<xsl:choose>
> <xsl:when test="@fond">
> <xsl:value-of select="@fond" />
> </xsl:when>
> <xsl:otherwise>FFFFFF</xsl:otherwise>
> </xsl:choose>;</xsl:attribute>
> <xsl:value-of select="." />
> </td>
> </xsl:template>
>
> </xsl:stylesheet>
>
> If you change the namespace, it should work as XSLT 1.0.
>
> Note that I did circumvent the logic for finding which 'A' element to
process
> (A1, A2, A3, etc.) by looking at the Column specifications. The example
data
> had them all in order. If they will not really be in order, and since
MSXML2
> does not permit the XPath functions that would be needed to sort them,
you'll
> have to ask in an MSXML specific forum.
>
> Anyway, I hope this helps at least with sorting out the colors and number
> of columns, and helps reduce the stylesheet to a more manageable size.
> There was a lot of unnecessary stuff in it. In general, any time you do
>
> <xsl:template match="foo">
> <xsl:for-each select="bar">
> ...
> </>
> </>
>
> you probably could have changed the xsl:apply-templates to select
> "foo/bar", and then made a template that matches bar instead of foo.
>
> - Mike
>
____________________________________________________________________________
> mike j. brown | xml/xslt: http://skew.org/xml/
> denver/boulder, colorado, usa | resume: http://skew.org/~mike/resume/
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] too many columns, Mike Brown | Thread | Re: [xsl] too many columns, Mike Brown |
| [xsl] msxml weirdness, Wineman, Corey J. | Date | Re: [xsl] msxml weirdness, Serge I. Zolotukhin |
| Month |