[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Setting Attributes from Key value

Subject: Setting Attributes from Key value
From: "Berg, Eric" <eric.berg@xxxxxxxxxx>
Date: Tue, 21 Aug 2007 12:25:50 -0400
 Setting Attributes from Key value
Hey, folks.

I've got a bunch of XML that I need to transform, and it seems a little
tricky to me.  Let me lay out the problem.

I have a bunch of Attribute-Format elements in an
Attribute-FormatCollection.  Each one has a Key attribute.

These Attribute-Format elements are referred to by a bunch of Grouping
elements contained within a Grouping Collection element. The Key
attribute in the Grouping elements contains the same value as the Key
attribute in the Attribute-Format element to which it is referring.

An example snippet:

      <Attribute-Format-Collection>
         <Attribute-Format Key="Cusip"/>
         <Attribute-Format Key="ModOADuration" />
         <Attribute-Format Key="PriceMktConv"/>
      </Attribute-Format-Collection>

      <Grouping-Collection>
         <Grouping ColIndex="0" Index="1" Is-Grouped="0"
Key="BadGarbageMojo"/>
         <Grouping ColIndex="2" Index="0" Is-Grouped="0"
Key="ModOADuration" />
         <Grouping ColIndex="3" Index="3" Is-Grouped="0"
Key="OtherUselessJunk" />
         <Grouping ColIndex="3" Index="2" Is-Grouped="0"
Key="PriceMktConv" />
      </Grouping-Collection>

There are two things I need to do based on the results of matching the
Grouping with the Attribute-Format.

1) If there is no matching Attribute-Format for the Grouping, the
Grouping element should simply be deleted.

2) If there is a corresponding Attribute-Format match for the Grouping,
the Grouping[@ColIndex] must be set to the zero-offset index of the
Attribute-Format element within the Attribute-Format-Collection element.

So far, I've set up a key to hold the Attribute-Format elements, keyed
on the Key attribute, and I've managed to use that to identify those
Grouping elements that have valid Attributre-Format Key's.

What I have not been able to do so far is to fill out the ColIndex
attribute of the new Grouping element with  the offset of the
corresponding Attribute-Format element in the
Attribute-Format-Collection element.  Here's what I have so far.  I've
included both unsuccessful attempts at using xsl:value-of to retrieve
the right offset value with which to populate the ColIndex.

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
  <xsl:output method="xml" indent="yes"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:key name="attribute-format-by-key" match="Attribute-Format"
use="@Key" />

  <xsl:template match="//Grouping-Collection/Grouping">
    <xsl:copy select=".">
      <xsl:if test="key('attribute-format-by-key', @Key)" >
        <xsl:attribute name="ColIndex">
          <xsl:value-of select="key('attribute-format-by-key',
@Key)[@ColIndex]" />
          <xsl:value-of
select="/Report/View-Category/Attribute-Format-Collection/Attribute-Form
at[@Key=@Key][@ColIndex]" />
        </xsl:attribute>
      </xsl:if>
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>

Anybody have any ideas about how to approach this problem?

Thanks.

-Eric.





Eric D. Berg
Lehman Brothers
> Fixed Income Research
> 745 7th Avenue, 15th floor
> New York, NY 10019
> Phone +1 212 526 8118
>
>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -

This message is intended only for the personal and confidential use of the
designated recipient(s) named above.  If you are not the intended recipient of
this message you are hereby notified that any review, dissemination,
distribution or copying of this message is strictly prohibited.  This
communication is for information purposes only and should not be regarded as
an offer to sell or as a solicitation of an offer to buy any financial
product, an official confirmation of any transaction, or as an official
statement of Lehman Brothers.  Email transmission cannot be guaranteed to be
secure or error-free.  Therefore, we do not represent that this information is
complete or accurate and it should not be relied upon as such.  All
information is subject to change without notice.

--------
IRS Circular 230 Disclosure:
Please be advised that any discussion of U.S. tax matters contained within
this communication (including any attachments) is not intended or written to
be used and cannot be used for the purpose of (i) avoiding U.S. tax related
penalties or (ii) promoting, marketing or recommending to another party any
transaction or matter addressed herein.

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.