Re: [xsl] Beginner: adding xmlns:mml attribute

Subject: Re: [xsl] Beginner: adding xmlns:mml attribute
From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx>
Date: Wed, 8 Jan 2003 16:47:22 +0000
Hi Roel,

> I'm trying to output the following:
>
> <HTML XMLNS:m="http://www.w3.org/1998/Math/MathML";>
> <head>
> </head>
> </html>

That should be:

<html xmlns:m="http://www.w3.org/1998/Math/MathML";>
  <head>
  </head>
</html>

XML is case-sensitive, so you need the <html> and </html> to match,
and the xmlns of xmlns:m should be in lowercase. The page you quote:

> as per http://www.dessci.com/en/products/mathplayer/authoring.htm.

is wrong to put xmlns in capitals.

> My first, naive attempt was
>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
> version="1.0">
>    <xsl:template match="document">
>      <html xmlns:m="http://www.w3.org/1998/Math/MathML";>
>      <xsl:element name="html" 
> namespace="http://www.w3.org/1998/Math/MathML"/>
>        <head>
>        </head>
>      </html>
> </xsl:stylesheet>
>
> but that gives me simply

I'm surprised that it gives you anything at all. It's not well-formed:
there's no </xsl:template> end tag for the <xsl:template> that you
have. Assuming that the stylesheet you're actually using does have an
end tag, I'm very surprised that it gives you:

> <html>
> <head>
> </head>
> </html>

What the stylesheet gives me, with Saxon 6.5.2, from an input document
with an empty <document> element, is:

<html xmlns:m="http://www.w3.org/1998/Math/MathML";>
   <html xmlns="http://www.w3.org/1998/Math/MathML";></html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   </head>
</html>

which is close to what you're after, except that it has an extra
<html> element -- one that you've created with an <xsl:element>
element in your stylesheet. (The <meta> element is created
automatically because you're creating HTML, by the way.)

FWIW, I recommend that you place the namespace declaration for the
MathML namespace in the <xsl:stylesheet> start tag rather than in the
<html> start tag. That will ensure that the MathML namespace is in
scope throughout your stylesheet.

<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                xmlns:m="http://www.w3.org/1998/Math/MathML";>
   <xsl:template match="document">
     <html>
       <head>
       </head>
     </html>
   </xsl:template>
</xsl:stylesheet>

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/


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


Current Thread