[xsl] How to filter element values...

Subject: [xsl] How to filter element values...
From: "Kotes Mogili" <Kotes.Mogili@xxxxxxxxxxxxxxxxx>
Date: Fri, 6 Feb 2004 15:24:44 -0500
Hi,

I am using XSL to generate another XSL file from an XML file. I am interested in only Element names and attributes but not it's values. for the following XML 


<SiebelMessage>
<Global param="A" name="Y">aaaaa</Global>
<Global type="if" name="A" select="abcd">bbbb</Global>
<Global type="when" name="Y" select="ccc" otherwise="bbbbb">ccccc</Global>

<EVENT spec="IDL:sciOmSiebelEvents/RouterToOmServer:1.0#OrderCopyEvent\">
 ddddd
</EVENT>
</SiebelMessage>

I am getting the output as 

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">
    <xsl:output method="xml" encoding="UTF-8" indent="yes"/>
    <xsl:preserve-space elements=""/>
    <xsl:strip-space elements="*"/>
    <xsl:param name="A"/>

 aaaaa 

<xsl:variable name="A">
        <xsl:value-of select="abcd"/>
    </xsl:variable>

 bbbb 

<xsl:variable name="Y">
        <xsl:choose>
            <xsl:when test=" ">
                <xsl:value-of select=" ccc"/>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select=" bbbbb"/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:variable>

 ccccc ddddd 

<xsl:template match="*"/>
    <xsl:template match="SiebelMessage"/>
    <!-- End of SiebelMessage -->
</xsl:stylesheet>


I am not sure why the element values are coming when i am not refering it them. Any suggestions are greatly appreciated..


Thanks

kotes


<!-- *******************  XSL file  ********************** -->

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">
<xsl:output method="text"/>
<xsl:strip-space elements="*" />   
<xsl:template match="/">
        &lt;xsl:stylesheet  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0"&gt;
        &lt;xsl:output method="xml"  encoding="UTF-8" indent="yes"/&gt;
        &lt;xsl:preserve-space elements=""/&gt;
        &lt;xsl:strip-space elements="*"/&gt;
        <xsl:apply-templates select="*[Global]" mode="g"/>
        &lt;xsl:template match="*"&gt;
        &lt;/xsl:template&gt;
        &lt;xsl:template match="SiebelMessage"&gt;
     <!--  <xsl:apply-templates select="SiebelMessage"/>  -->
        <!-- &lt;/xsl:element &gt;-->
        &lt;/xsl:template &gt; &lt;!-- End of SiebelMessage --&gt;
     <!--    <xsl:apply-templates select="*" mode="t" />  -->
        &lt;/xsl:stylesheet&gt;
 </xsl:template>

<xsl:template match="SiebelMessage">
         <xsl:apply-templates select="EVENT"/>
</xsl:template>

<xsl:template match="EVENT">
                 &lt;xsl:element name=&quot;<xsl:value-of select="name()"/>&quot;&gt;
                 &lt;xsl:attribute name="spec"&gt;<xsl:value-of select="@spec"/>&lt;/xsl:attribute&gt;
                 <xsl:apply-templates/>
                 &lt;/xsl:element &gt;
</xsl:template>

<xsl:template match="Global"  mode="g">
   <xsl:if test="@type='if'">
              &lt;xsl:variable name="<xsl:value-of select="@name"/>"&gt;
                <xsl:if test="@select"> &lt;xsl:value-of select="<xsl:value-of select="@select"/>"/&gt;</xsl:if>
                <xsl:if test="@hardcode">&lt;xsl:text&gt;<xsl:value-of select="@hardcode"/>&lt;/xsl:text&gt;</xsl:if>
              &lt;/xsl:variable&gt;
     </xsl:if>
     <xsl:if test="@param">
               &lt;xsl:param name="<xsl:value-of select="@param"/>"/&gt;         
     </xsl:if>
            <xsl:if test="@type='when' ">
                &lt;xsl:variable name="<xsl:value-of select="@name"/>"&gt;
                &lt;xsl:choose&gt;
                &lt;xsl:when test=&quot; <xsl:value-of select="@gtest"></xsl:value-of>&quot;&gt;
                    <xsl:if test="@select">&lt;xsl:value-of select=&quot; <xsl:value-of select="@select"/>&quot;/&gt;</xsl:if>
                    <xsl:if test="@sHardcode">&lt;xsl:text&gt;<xsl:value-of select="@sHardcode"/>&lt;/xsl:text&gt;</xsl:if>
                 &lt;/xsl:when &gt;
                 &lt;xsl:otherwise&gt;
                     <xsl:if test="@otherwise">&lt;xsl:value-of select=&quot; <xsl:value-of select="@otherwise"/>&quot;/&gt;</xsl:if>
                     <xsl:if test="@oHardcode">&lt;xsl:text&gt;<xsl:value-of select="@oHardcode"/>&lt;/xsl:text&gt;</xsl:if>
                 &lt;/xsl:otherwise&gt;
                 &lt;/xsl:choose&gt;
                 &lt;/xsl:variable&gt;
     </xsl:if>
     <xsl:apply-templates mode="g"/>
</xsl:template>

 </xsl:stylesheet>

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


Current Thread