Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations gkittelson on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

sequenced elements to attributes

Status
Not open for further replies.

zkent

IS-IT--Management
Apr 19, 2006
12
US
#1 I use Mapforce for most XSLT and am not good at hand-coding them
#2 I have searched for this for days
#3 I have been attempting to make it work for days

I have a series name-value pairs of elements that I need sequenced into attributes. The element names are ADDRESS1, CITY1, STATE1, ZIP1, ADDRESS2, CITY2, STATE2, etc. The name value pairs are not in order either.

I have this
========================
<PROPERTIES>
<PROPERTY>
<PROPERTYKEY>ADDRESS1</PROPERTYKEY>
<PROPERTYVALUE>123 Anyold Street</PROPERTYVALUE>
</PROPERTY>
<PROPERTY>
<PROPERTYKEY>ADDRESS2</PROPERTYKEY>
<PROPERTYVALUE>567 Long Blvd</PROPERTYVALUE>
</PROPERTY>
<PROPERTY>
<PROPERTYKEY>CITY1</PROPERTYKEY>
<PROPERTYVALUE>MARYLAND HEIGHTS</PROPERTYVALUE>
</PROPERTY>
<PROPERTY>
<PROPERTYKEY>CITY2</PROPERTYKEY>
<PROPERTYVALUE>Jacksonville</PROPERTYVALUE>
</PROPERTY>
<PROPERTY>
<PROPERTYKEY>CITY3</PROPERTYKEY>
<PROPERTYVALUE>Some City</PROPERTYVALUE>
</PROPERTY>
<PROPERTY>
<PROPERTYKEY>ADDRESS3</PROPERTYKEY>
<PROPERTYVALUE>876 Pine Street</PROPERTYVALUE>
</PROPERTY>
</PROPERTIES>

And I want this
=========================

<PROPERTY Sequence="1" Address="123 Anyold Street" City="MARYLAND HEIGHTS"/>
<PROPERTY Sequence="2" Address="567 Long Blvd" City="Jacksonville"/>
<PROPERTY Sequence="3" Address="876 Pine Street" City="Some City"/>

Any help is greatly appreciated. And if you can explain it it MapForce terms that would be bonus for me but plain XSLT is OK.

TIA
Zach
 
You're gonna have to do it something like this:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="[URL unfurl="true"]http://www.w3.org/1999/XSL/Transform">[/URL]
  <xsl:template match="/">
    <PROPERTIES>
      <xsl:apply-templates select="PROPERTIES/PROPERTY[substring(PROPERTYKEY, 1, 4) = 'CITY']"/>
    </PROPERTIES>
  </xsl:template>
  <xsl:template match="PROPERTY">
    <xsl:variable name="num">
      <xsl:value-of select="substring(PROPERTYKEY, 5, 1)"/>
    </xsl:variable>
    <PROPERTY Sequence="{$num}" Address="{../PROPERTY[PROPERTYKEY = concat('ADDRESS', $num)]/PROPERTYVALUE}" City="{../PROPERTY[PROPERTYKEY = concat('CITY', $num)]/PROPERTYVALUE}"/>
  </xsl:template>
</xsl:stylesheet>

Jon

"I don't regret this, but I both rue and lament it.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top