[xsl] copy-of problem in child node, unable to get parent in output

Subject: [xsl] copy-of problem in child node, unable to get parent in output
From: jayanti <jayanti@xxxxxxxxxxxxx>
Date: Tue, 21 Oct 2003 10:25:04 -0700
My XML is below.

<?xml version = '1.0' encoding = 'utf-8'?>
  <DB1xEV-DO>
  <typedef .....
.......

  </typedef>
 <ECPGeneric>
...
</ECPGeneric>

   <objType name="Cell" label="BTS" ReleaseIntroduced="1"
ReleaseChanged="7">
      <Description>This is the description</Description>
      <Attribute name="CellSiteId" label="BTS ID" ReleaseIntroduced="1"
ReleaseChanged="7">
         <descr/>
         <type t="int">
            <range min="1" max="600" step="1"/>
         </type>
      </Attribute>
      <Attribute name="btsName" label="BTS Name" ReleaseIntroduced="7">
         <descr/>
         <type t="string">
            <size>
               <range min="1" max="11" step="1"/>
            </size>
         </type>
         <NullValue Value=" "/>
      </Attribute>
      <Attribute name="constantPilot" label="Constant Pilot Mode"
ReleaseIntroduced="1">
         <descr/>
         <type t="PilotMode"/>
         <default>Normal</default>
      </Attribute>
      <Attribute name="idleModeGain" label="Idle Mode Gain"
ReleaseIntroduced="1">
         <descr/>
      </Attribute>
   </objType>
</DB1xEV-DO>


------
My xsl is:
<xsl:stylesheet  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
version="1.0">
<xsl:output indent="yes"  encoding="iso-8859-1"   />
 <xsl:template match="DB1xEV-DO">
   <xsl:for-each select="typedef|ECPGeneric|ChangeTag">
   <xsl:copy-of select="." />
   </xsl:for-each>


   <xsl:for-each select="objType">
         <xsl:when test="@ReleaseIntroduced='7'">
         <xsl:copy-of select="." />
       </xsl:when>

       <xsl:when test="@ReleaseChanged='7'">
         <xsl:for-each select="Attribute">
            <xsl:choose>
                      <xsl:when test="@ReleaseChanged='7'">
                      <xsl:copy-of select="." />
                      </xsl:when>
                      <xsl:when test="@ReleaseIntroduced='7'">
                      <xsl:copy-of select="." />
                      </xsl:when>
            </xsl:choose>
         </xsl:for-each>
     </xsl:choose>
   </xsl:for-each>
</xsl:template>
</xsl:stylesheet>

The purpose is to output only those ObjType and Attrribute elements
where the ReleaseChanged tag = 7 or ReleaseIntroduced=7
So here are my questions :

1) When the above xsl is applied using Xalan, the output looks like
this: I do not get the objType element to print out. (I want to get the
objType element)  However, I get only the
Attribute elements.

<Attribute name="CellSiteId" label="BTS ID" ReleaseIntroduced="1"
ReleaseChanged="7">
         <descr/>
         <type t="int">
            <range min="1" max="600" step="1"/>
         </type>
      </Attribute>
<Attribute name="btsName" label="BTS Name" ReleaseIntroduced="7">
         <descr/>
         <type t="string">
            <size>
               <range min="1" max="11" step="1"/>
            </size>
         </type>
         <NullValue Value=" "/>
      </Attribute>

2)   Another problem is that I do not get the "descr" element to print
out in the output.  I want all  elements (other than Attribute) to be
just copied from the source xml. For attribute, I want to print it out
only if ReleaseChanged =7 or ReleaseIntroduced=7.

thanks
j





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


Current Thread