[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Hi Syd,
Well basically, this XSL is used to build a report. Here is a sample of the report that this XSL builds as it is now...
http://img12.imageshack.us/img12/7903/samplereport.jpg
What I'm trying to do is combine the first two columns into one column. So instead of having a column for date (the collect column), and a column for time (right next to Collect), I want that to be displayed in one column, similar to Resulted. Ultimately, I'd like to also convert the date to a different format (yyyy-MM-dd hh:mm), but one step at a time.
Well I didn't include LabHeaderCell, as that is not the part of the XSL that is giving my a head ache. LabHeaderCell is used to display the header (where you see Name:, MRN: Age: and Sex:). As for the variable $reportType, it's simply used to determine that this is a Laboratory report.
The part of the XSL that fills (not sure if that is the correct terminology) the table is...
<xsl:for-each select="Cell[position() = 1 or position() = 2 or position() = 3 or position() = 6 or position() = 7 or position() = 8 or position() = 9 or position() = 10]">
<xsl:call-template name="LabDataCell"/>
</xsl:for-each>
</fo:table-row>
</xsl:if>
</xsl:for-each>
</fo:table-body>
and...
<xsl:template name="LabDataCell">
<xsl:choose>
<xsl:when test="@Status='Panic'">
<fo:table-cell color="red" background-color="white" border="1pt solid black" wrap-option="wrap" overflow="hidden">
<fo:block font-size="8pt" padding="1mm" margin-left=".25mm" overflow="hidden" language="ru" hyphenate="true">
<xsl:value-of select="."/>
</fo:block>
</fo:table-cell>
</xsl:when>
<xsl:otherwise>
<fo:table-cell color="black" background-color="white" border="1pt solid black" wrap-option="wrap" overflow="hidden">
<fo:block font-size="8pt" padding="1mm" margin-left=".25mm" overflow="hidden" language="ru" hyphenate="true">
<xsl:value-of select="."/>
</fo:block>
</fo:table-cell>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
So I figure Hermann's suggestion should go somewhere in the above snippet of XSL?
----- Original Message ----- From: "Syd Bauman" <Syd_Bauman@xxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Sunday, March 29, 2009 11:05 PM
Subject: Re: [xsl] Need help combing two elements
Re: [xsl] Need help combing two elements
Subject: Re: [xsl] Need help combing two elements From: "Fatbob" <fatbob73@xxxxxxxxxxx> Date: Mon, 30 Mar 2009 00:03:13 -0400 |
Hi Syd,
Well basically, this XSL is used to build a report. Here is a sample of the report that this XSL builds as it is now...
http://img12.imageshack.us/img12/7903/samplereport.jpg
What I'm trying to do is combine the first two columns into one column. So instead of having a column for date (the collect column), and a column for time (right next to Collect), I want that to be displayed in one column, similar to Resulted. Ultimately, I'd like to also convert the date to a different format (yyyy-MM-dd hh:mm), but one step at a time.
Well I didn't include LabHeaderCell, as that is not the part of the XSL that is giving my a head ache. LabHeaderCell is used to display the header (where you see Name:, MRN: Age: and Sex:). As for the variable $reportType, it's simply used to determine that this is a Laboratory report.
The part of the XSL that fills (not sure if that is the correct terminology) the table is...
<fo:table-body> <xsl:for-each select="Row"> <xsl:if test="@Type='Data'"> <fo:table-row keep-together.within-column="always"> <!--both a="$tempDate" b="$tempTime"/-->
<xsl:for-each select="Cell[position() = 1 or position() = 2 or position() = 3 or position() = 6 or position() = 7 or position() = 8 or position() = 9 or position() = 10]">
<xsl:call-template name="LabDataCell"/>
</xsl:for-each>
</fo:table-row>
</xsl:if>
</xsl:for-each>
</fo:table-body>
and...
<xsl:template name="LabDataCell">
<xsl:choose>
<xsl:when test="@Status='Panic'">
<fo:table-cell color="red" background-color="white" border="1pt solid black" wrap-option="wrap" overflow="hidden">
<fo:block font-size="8pt" padding="1mm" margin-left=".25mm" overflow="hidden" language="ru" hyphenate="true">
<xsl:value-of select="."/>
</fo:block>
</fo:table-cell>
</xsl:when>
<xsl:otherwise>
<fo:table-cell color="black" background-color="white" border="1pt solid black" wrap-option="wrap" overflow="hidden">
<fo:block font-size="8pt" padding="1mm" margin-left=".25mm" overflow="hidden" language="ru" hyphenate="true">
<xsl:value-of select="."/>
</fo:block>
</fo:table-cell>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
So I figure Hermann's suggestion should go somewhere in the above snippet of XSL?
----- Original Message ----- From: "Syd Bauman" <Syd_Bauman@xxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Sunday, March 29, 2009 11:05 PM
Subject: Re: [xsl] Need help combing two elements
and my XSL is the following (well a snippet of it, ...
Actually, it would probably be easier to provide advice if you sent the entire XSLT (or a pointer to it), as it is quite difficult to test what you sent, as we don't have access to $reportType, LabHeaderCell, etc.
I've got your input:
<Row Type="Data"> <Cell>Mar 23, 2006</Cell> <Cell>08:44</Cell> </Row>
But what do you want the output to look like?
While we're here, though, some thoughts follow.
<xsl:for-each select="Row"> <xsl:if test="@Type='Header'"> <xsl:for-each select="Cell"> <fo:table-column/> </xsl:for-each> </xsl:if> </xsl:for-each>
Couldn't this be expressed a bit more simply as
<xsl:for-each select="Row[@Type='Header']/Cell"> <fo:table-column/> </xsl:for-each>
?
<xsl:choose>
<xsl:when test="@Status='Panic'">
<fo:table-cell color="red" background-color="white" border="1pt solid
black" wrap-option="wrap" overflow="hidden">
<fo:block font-size="8pt" padding="1mm" margin-left=".25mm"
overflow="hidden" language="ru" hyphenate="true">
<xsl:value-of select="."/>
</fo:block>
</fo:table-cell>
</xsl:when>
<xsl:otherwise>
<fo:table-cell color="black" background-color="white" border="1pt solid
black" wrap-option="wrap" overflow="hidden">
<fo:block font-size="8pt" padding="1mm" margin-left=".25mm"
overflow="hidden" language="ru" hyphenate="true">
<xsl:value-of select="."/>
</fo:block>
</fo:table-cell>
</xsl:otherwise>
</xsl:choose>
Since most of the content of the <when> and the <otherwise> are the same, I'd be inclined to factor out the similarities:
<xsl:template name="LabDataCell"> <xsl:variable name="color"> <xsl:choose> <xsl:when test="@Status='Panic'">red</xsl:when> <xsl:otherwise>black</xsl:otherwise> </xsl:choose> </xsl:variable> <fo:table-cell color="{$color}" background-color="white" border="1pt solid black" wrap-option="wrap" overflow="hidden"> <fo:block font-size="8pt" padding="1mm" margin-left=".25mm" overflow="hidden" language="ru" hyphenate="true"> <xsl:value-of select="."/> </fo:block> </fo:table-cell> </xsl:template>
I'm sure others on the list will point out if & where I'm wrong.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Need help combing two ele, Syd Bauman | Thread | Re: [xsl] Need help combing two ele, Michael Ludwig |
Re: [xsl] Need help combing two ele, Syd Bauman | Date | Re: [xsl] Need help combing two ele, Michael Ludwig |
Month |