xsl-list
[Top] [All Lists]

Re: [xsl] default namespace on input document

2011-02-15 08:56:42
This is probably a trivial issue, but I'm new to XSL 2.

Basically this is to do with both XSLT1 and 2
Your Xpaths work relative to the namespace ...
So if your document element is in a perticular namespace, then your
Xpaths should change accordingly..
You can come across this by either
**************telling your stylesheet what the default namespace would
be  by using  xpath-default-namespace=""
 OR
***********  declaring a namespace prefix in the stylesheet and    use
it to refer to the nodes in the xpath
like xmlns:myns = "http://foo.com";

and then refer to the nodes like myns:nodename

also...

with ,,,
<xsl:template match="/">
             <xsl:apply-templates select="." />
      </xsl:template>

      <xsl:template match="node() | @*">
             <xsl:copy>
                    <xsl:apply-templates select="node() | @*"/>
             </xsl:copy>
      </xsl:template>

You are very very likely to run into Infinite recursion ....

you probably want ...

somethiing like this...
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:mns = "http://www.w3.org/1999/xhtml";
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
        <xsl:template match="node() | @*">
                <xsl:copy>
                        <xsl:apply-templates select="node() | @*"/>
                </xsl:copy>
        </xsl:template>
        <xsl:template match="mns:body">
                <!-- never matched -->
             hi
     <xsl:sequence select="."/>
        </xsl:template>
</xsl:stylesheet>

hth
Vasu Chakkera..

2011/2/15 Merrilees, David 
<David(_dot_)Merrilees(_at_)uk(_dot_)tesco(_dot_)com>:
Hi

I'm having trouble matching a template in XSLT2. When I add a default 
namespace to my input document, my templates no longer match any elements.

Input:


<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml";>
      <head>
             <title>Text Chybějící for key: Welcome in cs-CZ</title>
             <meta charset="utf-8" />
      </head>
      <body id="home">
             <div id="footer">
                    <p>
                          (c) Tesco.com 2011
                    </p>
             </div>
      </body>
</html>

XSL:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
      version="2.0"
      xmlns="http://www.w3.org/1999/xhtml";
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
      exclude-result-prefixes="xsl">

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

      <xsl:template match="node() | @*">
             <xsl:copy>
                    <xsl:apply-templates select="node() | @*"/>
             </xsl:copy>
      </xsl:template>

      <xsl:template match="body">
             <!-- never matched -->
             hi
             <xsl:sequence select="."/>
      </xsl:template>

</xsl:stylesheet>

This is probably a trivial issue, but I'm new to XSL 2.

Thanks

David Merrilees

This is a confidential email. Tesco may monitor and record all emails. The 
views expressed in this email are those of the sender and not Tesco.

Tesco Stores Limited
Company Number: 519500
Registered in England
Registered Office: Tesco House, Delamare Road, Cheshunt, Hertfordshire EN8 9SL
VAT Registration Number: GB 220 4302 31

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





-- 
Vasu Chakkera
NodeLogic Limited
Oxford
www.nodelogic.org
==============

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