This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: comparison of attribute values


jdunning wrote:
> 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):
> 
> <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>

It's a grouping problem.

   <xsl:key name="fee-currency" match="*[@currency and substring(local-name(),1,3)='fee']"
     use="@currency"/>

   <xsl:template match="fees">
     <table>
      <tr>
       <xsl:for-each select="key('fee-currency')/@currency">
          <td><xsl:value-of select="."/></td>
       </xsl:for-each>
      </tr>
      <xsl:for-each select="*/*[substring(local-name(),1,3)='fee']">
        <tr>
          <xsl:variable name="fee" select="."/>
          <xsl:for-each select="key('fee-currency')/@currency">
            <td>
              <xsl:if test="$fee/@currency=.">
                <xsl:value-of select="$fee/amount"/>
              </xsl:if>
            </td>
          </xsl:for-each>
        </tr>
      </xsl:for-each>
     </xsl:template>

(Beware: untested)


Are you sure your fees are nemed fee1, fee2 rather than <fee name="fee1"> etc?

J.Pietschmann


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]