xsl-list
[Top] [All Lists]

RE: [xsl] Transforming xml with any namespace

2009-11-25 09:36:04


First point, it is never necessary to use disable-output-escaping="yes" when
using output method="text", because no escaping happens with method="text";
and it is never necessary to use it when outputting the text "=", because
that would not be escaped anyway (only & and < are escaped). It looks as if
you are using this attribute as magic fairy dust when you don't know what it
means.

The substantive point: the reason you get output for <ns1:Type2>please dont
print me</ns1:Type2> is that you don't have a template rule for this
element, and the default template rule causes output of the value of all its
text nodes. To suppress this, add the template rule

<xsl:template match="text()"/>

You led me down the garden path for a while by saying you wanted the output
Type2=value2, but I assume that was a typo. It wasted a lot of my time.

Regards,

Michael Kay
http://www.saxonica.com/
http://twitter.com/michaelhkay 

 

-----Original Message-----
From: Anders Viklund [mailto:viklund_anders(_at_)hotmail(_dot_)com] 
Sent: 25 November 2009 14:22
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Transforming xml with any namespace


Hi,
I would like extract name=value for a specific element,for 
any namespace.

How can I make this code work properly?

Thanks for any ideas!


XSL:
<xsl:stylesheet 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="2.0"> <xsl:output method="text" /> <xsl:template match="/">
  <xsl:apply-templates/>
</xsl:template>
<xsl:template match="//*[local-name()='Type1']">
   <xsl:value-of select="local-name(.)"/> <xsl:text 
disable-output-escaping="yes">=</xsl:text> <xsl:value-of 
select="."/> </xsl:template> </xsl:stylesheet>


XML:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" 
href="http://something";?><ns0:orderReq 
xmlns:ns0="http://somethingelse";>
    <ns1:order xmlns:ns1="http://nothing";>
        <ns1:orderItems>
            <ns1:orderItem>
                <ns1:Type1>value1</ns1:Type1>
                <ns1:Type1>value2</ns1:Type1>
               <ns1:Type2>please dont print me</ns1:Type2>
            </ns1:orderItem>
        </ns1:orderItems>
    </ns1:order>
</ns0:orderReq>


OUTPUT:

    
        
            
                Type1=value1
                Type1=value2
               please dont print me
            
        
    


DESIRED OUTPUT:
Type1=value1
Type2=value2
                                        
_________________________________________________________________
Keep your friends updated?even when you?re not signed in.
http://www.microsoft.com/middleeast/windows/windowslive/see-it
-in-action/social-network-basics.aspx?>
ocid=PID23461::T:WLMTAGL:ON:WL:en-xm:SI_SB_5:092010
--~------------------------------------------------------------------
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>
--~--



--~------------------------------------------------------------------
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>