xsl-list
[Top] [All Lists]

Re: [xsl] De Normalize XML using XSLT

2009-10-14 16:48:52
At 2009-10-14 13:31 -0700, Senthilukvelaan wrote:
I would like to know is there any way to group the nodes of  the xml
using the node name matching pattern starts-with like the sample
provided.

By using the starts-with() function in a predicate. But since you've said "starts with" then I'm assuming you know in advance what all of the substitutions are.

I hope the example below helps ... but I suspect you haven't described your requirement precisely.

. . . . . . . . Ken


t:\ftemp>type s1.xml
<consignment>
<SHIP_NAME1>Suresh</SHIP_NAME1>
<SHIP_NAME3/>
<SHIP_NAME4/>
<SHIP_COLONIA/>
<SHIP_CITY> Newyork </SHIP_CITY>
<SHIP_POST_CODE>L3R 1A3</SHIP_POST_CODE>
<SHIP_STREET>1010 Woodbine Ave</SHIP_STREET>
<SHIP_COUNTRY>CA</SHIP_COUNTRY>
<SHIP_COUNTRY_NAME>Canada</SHIP_COUNTRY_NAME>
<SHIP_REGION>ON</SHIP_REGION>
<SHIP_REGION_DESC>Ontario</SHIP_REGION_DESC>
<BILL_NAME1>Suresh</BILL_NAME1>
<BILL_NAME2/>
<BILL_NAME3/>
<BILL_NAME4/>
<BILL_STREET>7225 woodbine street</BILL_STREET>
<BILL_COLONIA/>
<BILL_CITY>Newyork</BILL_CITY>
<BILL_REGION>ON</BILL_REGION>
<BILL_REGION_DESC>Ontario</BILL_REGION_DESC>
<BILL_COUNTRY>CA</BILL_COUNTRY>
<BILL_COUNTRY_NAME>Canada</BILL_COUNTRY_NAME>
<BILL_POST_CODE>L3R 1A3</BILL_POST_CODE>
<BILL_TELF1>12345</BILL_TELF1>
<BILL_TELF2EXTN/>
</consignment>

t:\ftemp>call xslt s1.xml s.xsl s1.out

t:\ftemp>type s1.out
<?xml version="1.0" encoding="utf-8"?>
<consignment>
   <SHIPMENT>
      <SHIP_NAME1>Suresh</SHIP_NAME1>
      <SHIP_NAME3/>
      <SHIP_NAME4/>
      <SHIP_COLONIA/>
      <SHIP_CITY> Newyork </SHIP_CITY>
      <SHIP_POST_CODE>L3R 1A3</SHIP_POST_CODE>
      <SHIP_STREET>1010 Woodbine Ave</SHIP_STREET>
      <SHIP_COUNTRY>CA</SHIP_COUNTRY>
      <SHIP_COUNTRY_NAME>Canada</SHIP_COUNTRY_NAME>
      <SHIP_REGION>ON</SHIP_REGION>
      <SHIP_REGION_DESC>Ontario</SHIP_REGION_DESC>
   </SHIPMENT>
   <BILLING>
      <BILL_NAME1>Suresh</BILL_NAME1>
      <BILL_NAME2/>
      <BILL_NAME3/>
      <BILL_NAME4/>
      <BILL_STREET>7225 woodbine street</BILL_STREET>
      <BILL_COLONIA/>
      <BILL_CITY>Newyork</BILL_CITY>
      <BILL_REGION>ON</BILL_REGION>
      <BILL_REGION_DESC>Ontario</BILL_REGION_DESC>
      <BILL_COUNTRY>CA</BILL_COUNTRY>
      <BILL_COUNTRY_NAME>Canada</BILL_COUNTRY_NAME>
      <BILL_POST_CODE>L3R 1A3</BILL_POST_CODE>
      <BILL_TELF1>12345</BILL_TELF1>
      <BILL_TELF2EXTN/>
   </BILLING>
</consignment>
t:\ftemp>type s.xsl
<?xml version="1.0" encoding="US-ASCII"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                version="1.0">

<xsl:output indent="yes"/>

<xsl:template match="consignment">
  <consignment>
    <SHIPMENT>
      <xsl:copy-of select="*[starts-with(local-name(.),'SHIP_')]"/>
    </SHIPMENT>
    <BILLING>
      <xsl:copy-of select="*[starts-with(local-name(.),'BILL_')]"/>
    </BILLING>
  </consignment>
</xsl:template>

</xsl:stylesheet>

t:\ftemp>rem Done!





--
Upcoming: hands-on code list, UBL, XSLT, XQuery and XSL-FO classes
in Copenhagen Denmark and Washington DC USA, October/November 2009
Interested in other classes?  http://www.CraneSoftwrights.com/s/i/
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
Training tools: Comprehensive interactive XSLT/XPath 1.0/2.0 video
Video lesson:    http://www.youtube.com/watch?v=PrNjJCh7Ppg&fmt=18
Video overview:  http://www.youtube.com/watch?v=VTiodiij6gE&fmt=18
G. Ken Holman                 mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Male Cancer Awareness Nov'07  http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers:  http://www.CraneSoftwrights.com/legal


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>