|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: comparison of attribute values
> Hi,
> What I would like to do is to insert a row into a table if
> there is a difference in an attribute value anywhere in the
> document; for example, this data should produce 2 columns
> (USD and EUR):
Aha, I always like it when people produce problems that justify new XSLT
2.0 / XPath 2.0 features!
<xsl:variable name="currencies"
select="distinct-values(//@currency)"/>
<xsl:template match="fees/*/*">
<tr>
<td><xsl:value-of select="name()"/></td>
<xsl:for-each select="$currencies">
<td>
<xsl:value-of select="self::*[@currency=current()]/amount"/>
</td>
</
</
</
In XSLT 1.0, of course, distinct-values has to be done using keys and
Muenchian grouping.
Michael Kay
Software AG
home: Michael.H.Kay@xxxxxxxxxxxx
work: Michael.Kay@xxxxxxxxxxxxxx
>
> <fees>
> <basic-fees>
> <fee1 currency="USD"><amount>20</amount></fee1>
> <fee2 currency="EUR"><amount>25</amount></fee2>
> </basic-fees>
> <special-fees>
> <fee3 currency="EUR"><amount>20</amount></fee3>
> </special-fees>
> <total currency="USD">65</total>
> </fees>
>
> <!-- desired output for above doc -->
> <table>
> <tr><td>FEE</td><td>USD</td><td>EUR</td></tr>
> <tr><td>fee1</td><td> 20 </td><td> </td></tr>
> <tr><td>fee2 </td><td> </td><td> 25 </td></tr>
> <tr><td>fee3</td><td> </td><td> 20 </td> </tr>
> <tr><td>total</td><td> 65 </td><td> </td></tr>
> </table>
>
> but if there is only one currency used throughout the
> document, it should only create one column (e.g., USD).
>
> <fees>
> <basic-fees>
> <fee1 currency="USD"><amount>20</amount></fee1>
> <fee2 currency="USD"><amount>25</amount></fee2>
> </basic-fees>
> <special-fees>
> <fee3 currency="USD"><amount>20</amount></fee3>
> </special-fees>
> <total currency="USD">65</total>
> </fees>
>
> <!-- desired output for above doc -->
> <table>
> <tr><td> FEE </td><td>USD</td></tr>
> <tr><td>fee1</td><td> 20 </td></tr>
> <tr><td>fee2 </td><td> 25 </td></tr>
> <tr><td>fee3</td><td> 20 </td> </tr>
> <tr><td>total</td><td> 65 </td> </tr>
> </table>
>
>
> I have a feeling that I'm overlooking something painfully
> obvious, but any help would be greatly appreciated.
>
> TIA,
> John
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








