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

Tranforming XML into heirarchy XML and use it for tree

Subject: Tranforming XML into heirarchy XML and use it for tree menu
From: Radoslav Kolarov <roonex@xxxxxxxxx>
Date: Sat, 22 Jul 2006 15:41:17 -0700 (PDT)
tranforming
I have idea to resolve the problem, but I'm not sure
is it possible. For tree menu I will use
http://www.codeproject.com/soap/treefromxmlusingxslt.asp,
but to use it first have to tranform XML from this:

 <?xml version="1.0" ?> 
- <records>
- <record>
  <keynum>-1</keynum> 
  <keyname>2 CLIENTS HAVE A NEGATIVE BALANCE</keyname>

  <parentkeynum>-100000</parentkeynum> 
  <rowcnt>2</rowcnt> 
  <balance>0</balance> 
  </record>
- <record>
  <keynum>35</keynum> 
  <keyname>35 MR. MICHAEL NOLAN</keyname> 
  <parentkeynum>-1</parentkeynum> 
  <rowcnt>1</rowcnt> 
  <balance>-275</balance> 
  </record>
- <record>
  <keynum>142</keynum> 
  <keyname>142 MR. JOHN CALINSKI</keyname> 
  <parentkeynum>-1</parentkeynum> 
  <rowcnt>1</rowcnt> 
  <balance>-11</balance> 
  </record>
- <record>
  <keynum>-3</keynum> 
  <keyname>42 CLIENTS CREDIT IS GREATER THAN
BALANCE</keyname> 
  <parentkeynum>-100000</parentkeynum> 
  <rowcnt>42</rowcnt> 
  <balance>0</balance> 
  </record>
........
........
........
- <record>
  <keynum>10006</keynum> 
  <keyname>10006 MR. DALE SPONSEL 2003-04-24</keyname>

  <parentkeynum>-16</parentkeynum> 
  <rowcnt>1</rowcnt> 
  <balance>0</balance> 
  </record>
- <record>
  <keynum>-100003</keynum> 
  <keyname>APPOINTMENT ALERTS (1)</keyname> 
  <parentkeynum>0</parentkeynum> 
  <rowcnt>1</rowcnt> 
  <balance>0</balance> 
  </record>
- <record>
  <keynum>-100002</keynum> 
  <keyname>HAIR SYSTEM ALERTS (2)</keyname> 
  <parentkeynum>0</parentkeynum> 
  <rowcnt>2</rowcnt> 
  <balance>0</balance> 
  </record>
- <record>
  <keynum>-100001</keynum> 
  <keyname>PROGRAM ALERTS (2)</keyname> 
  <parentkeynum>0</parentkeynum> 
  <rowcnt>2</rowcnt> 
  <balance>0</balance> 
  </record>
- <record>
  <keynum>-100000</keynum> 
  <keyname>FINANCIAL ALERTS (5)</keyname> 
  <parentkeynum>0</parentkeynum> 
  <rowcnt>5</rowcnt> 
  <balance>0</balance> 
  </record>
  </records>

to this:

<?xml version="1.0" ?> 
- <records>
  - <record>
    <keynum>-100003</keynum> 
    <keyname>APPOINTMENT ALERTS (1)</keyname> 
    <parentkeynum>0</parentkeynum> 
    <rowcnt>1</rowcnt> 
    <balance>0</balance>
    - <record>
      <keynum>-16</keynum> 
      <keyname>16 CLIENTS HAVE NOT VISITED IN THE LAST
90 days</keyname> 
      <parentkeynum>-100003</parentkeynum> 
      <rowcnt>16</rowcnt> 
      <balance>0</balance>
      - <record>
        <keynum>141</keynum> 
        <keyname>141 MR. SCOTT CRAMER
2003-04-19</keyname> 
        <parentkeynum>-16</parentkeynum> 
        <rowcnt>1</rowcnt> 
        <balance>0</balance> 
        </record>
      - <record>
        <keynum>176</keynum> 
        <keyname>176 MR. WILLIAM CUEVAS
2003-05-01</keyname> 
        <parentkeynum>-16</parentkeynum> 
        <rowcnt>1</rowcnt> 
        <balance>430</balance> 
        </record>
      </record>
    </record>
  </records>

Where XML is now 3 level heirarchy XML - First level
records with perenkeynum 0, second level with
parenkeynum=keynum furst level, and third level with
parentkeynum=keynum second level.
This is my idea for xsl file:

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/records">
........
<!--This template transform XML into heirarchy XML-->
........
<!--And now i want to use heirarchy XML to make
dynamic tree menu-->
<xsl:call-template name="one">
</xsl:call-template>

</xsl:template>

<xsl:template name="one">
 <xsl:for-each select="//records/record">
  <xsl:call-template name="SubMenu">
   <xsl:with-param name="strCSS">Parent
IsVisible</xsl:with-param>
  </xsl:call-template>
 </xsl:for-each>
</xsl:template>

<xsl:template name="SubMenu">
 <xsl:param name="strCSS" />
 

 
 <div class="{$strCSS}">
  <xsl:choose>
   <xsl:when test="count(record) &gt; 0">
    <!-- Element has children, it can be expanded -->
    <input type="hidden" id="hidIsExpanded" value="0"
/>
    <label id="lblExpand" class="Expander"
onclick="ExpanderClicked()">+&#160;</label>
   </xsl:when>
   <xsl:otherwise>
    <label class="Expander">&#160;&#160;</label>
   </xsl:otherwise>
  </xsl:choose>
  
  <a><xsl:value-of select="keyname" /></a>
  <xsl:for-each select="record">
   <xsl:call-template name="SubMenu">
    <xsl:with-param
name="strCSS">NotVisible</xsl:with-param>
   </xsl:call-template>
  </xsl:for-each>
 </div>
</xsl:template>

</xsl:stylesheet>

And with ASP file I can make dynamic tree menu.
The ASP file you can see at
http://www.codeproject.com/soap/treefromxmlusingxslt.asp

I have 2 questions:
Is it possible this idea?
How to write first tepmlate who makes heirarchy XML?

Please help me

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

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.