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

RE: How to filter element values...

Subject: RE: How to filter element values...
From: "Josh Canfield" <Josh.Canfield@xxxxxxxxxxxx>
Date: Fri, 6 Feb 2004 16:42:48 -0800
siebelmessage
It looks like the <xsl:apply-templates mode="g"/> at the bottom of the Global template is causing the default template to get invoked.

Adding a new empty template

  <xsl:template match="Global/text() | EVENT/text()" mode="g"/>

Will fixes the problem.

I'm not sure why the default template is being invoked in this case. I read both http://www.w3.org/TR/xslt#modes and http://www.w3.org/TR/xslt#built-in-rule and they seem to be saying that only templates with a matching mode will be invoked. The 

Can anyone explain why this is happening?

Josh

-----Original Message-----
From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
[mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of Kotes Mogili
Sent: Friday, February 06, 2004 12:25 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject:  How to filter element values...


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


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


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.