xsl-list
[Top] [All Lists]

RE: [saxon] Re: Saxon v7.9.1: Superfluous xmlns attributes in res ult

2004-05-07 10:56:37
Aha! Thanks very much.
(note the FAQ is entirely xslt-1, though it's a great starting point..)
Adjusted code below works great..
john

<!--
INPUT:
   <?xml version="1.0" encoding="utf-8" ?>
   <dx:article
      xmlns="http://www.w3.org/1999/xhtml";
      xmlns:dx="http://www.araxis.com/2000/DocXml";>
      <p>
      <strong>Text<dx:other id="5"/> <em>in</em> source document</strong>
      </p>
   </dx:article>

OUTPUT:
   SAXON 7.9.1 from Saxonica

   <?xml version="1.0" encoding="US-ASCII"?>
   <html xmlns="http://www.w3.org/1999/xhtml";>
      <body>
         <p>Some text</p>
         <p>
            <strong>Text <em>in</em> source document</strong>
         </p>
      </body>
   </html>
-->
<xsl:stylesheet
   version="2.0"
   xmlns="http://www.w3.org/1999/xhtml";
   xpath-default-namespace="http://www.w3.org/1999/xhtml";

   xmlns:xhtml="http://www.w3.org/1999/xhtml";
   xmlns:dx="http://www.araxis.com/2000/DocXml";
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
   exclude-result-prefixes="#default"
   >

   <xsl:output method="xml" indent="yes" encoding="US-ASCII" />

   <xsl:template match="em"><em><xsl:apply-templates/></em></xsl:template>
   <xsl:template
match="strong"><strong><xsl:apply-templates/></strong></xsl:template>
   <xsl:template match="p"><p><xsl:apply-templates/></p></xsl:template>

   <xsl:template match="dx:article">
      <xsl:variable name="html">
         <html dx:ignore="this">
            <body>
               <dx:element><p>Some text</p></dx:element>
               <xsl:apply-templates />
            </body>
         </html>
      </xsl:variable>
      <xsl:apply-templates select="$html" mode="only-default-namespace"/>
   </xsl:template>

   <xsl:template match="node()|@*" mode="only-default-namespace">
      <xsl:choose>
         <xsl:when test="compare(local-name(), name())=0">
            <xsl:copy copy-namespaces="no">
               <xsl:apply-templates select="@*|node()"
mode="only-default-namespace"/>
            </xsl:copy>
         </xsl:when>
         <xsl:otherwise>
            <xsl:apply-templates select="node()"
mode="only-default-namespace"/>
         </xsl:otherwise>
      </xsl:choose>
   </xsl:template>

</xsl:stylesheet>


-----Original Message-----
From: saxon-help-admin(_at_)lists(_dot_)sourceforge(_dot_)net
[mailto:saxon-help-admin(_at_)lists(_dot_)sourceforge(_dot_)net]On Behalf Of 
Michael Kay
Sent: 07 May 2004 17:20
To: saxon-help(_at_)lists(_dot_)sourceforge(_dot_)net

This one is a FAQ: your <p> element is in the namespace
http://www.w3.org/1999/xhtml, so you need to specify xhtml:p 
in any pattern
or path expression, where xhtml is bound to that namespace URI.
Alternatively in XSLT 2.0 you can specify 
xpath-default-namespace in the
xsl:stylesheet element. 

Michael Kay  


------------------------------------------------------------------------------
Notice:  This e-mail message, together with any attachments, contains
information of Merck & Co., Inc. (One Merck Drive, Whitehouse Station, New
Jersey, USA 08889), and/or its affiliates (which may be known outside the
United States as Merck Frosst, Merck Sharp & Dohme or MSD and in Japan as
Banyu) that may be confidential, proprietary copyrighted and/or legally
privileged. It is intended solely for the use of the individual or entity
named on this message.  If you are not the intended recipient, and have
received this message in error, please notify us immediately by reply e-mail
and then delete it from your system.
------------------------------------------------------------------------------


<Prev in Thread] Current Thread [Next in Thread>
  • RE: [saxon] Re: Saxon v7.9.1: Superfluous xmlns attributes in res ult, Mullee, John <=