I have a richtext field in a schema (Tridion 2011 SP1), with a basic XSLT filter attached (the default XSLT or a custom one, it doesn't matter for this issue).
In IE9, when I create a component based on that schema, the XHTML in the Source tab is rendered fine, without any namespace, e.g.:
<p>a paragraph</p>
<p>
<a href="http://www.sdltridion.com">a link</a>
</p>
I am able to save the component.
But in Firefox (16.0.2, unsupported), a namespace is rendered in the Source tab:
<p xmlns="http://www.w3.org/1999/XSL/Transform">a paragraph</p>
<p xmlns="http://www.w3.org/1999/XSL/Transform">
<a href="http://www.sdltridion.com">a link</a>
</p>
which results in the following XML validation error:
The element 'Paragraph' in namespace 'http://www.yme.com/GeneralContent' has invalid child element 'p' in namespace 'http://www.w3.org/1999/XSL/Transform'. List of possible elements expected: any element in namespace 'http://www.w3.org/1999/xhtml'..
Now I know that it's an unsupported version of a Firefox, but where is this namespace coming from? The namespace defined in the Richtext XSLT is http://www.w3.org/1999/XSL/Transform
...
And does anyone know of a possible workaround?
Here's the filtering XSLT, but as I already stated, it happens with the default XSLT too:
<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform">
<output omit-xml-declaration="yes" method="xml" cdata-section-elements="script"></output>
<template match="/ | node() | @*">
<copy>
<apply-templates select="node() | @*"></apply-templates>
</copy>
</template>
<template match="*[(self::br or self::p or self::div) and normalize-space(translate(., ' ', '')) = '' and not(@*) and not(processing-instruction()) and not(comment()) and not(*[not(self::br) or @* or * or node()]) and not(following::node()[not((self::text() or self::br or self::p or self::div) and normalize-space(translate(., ' ', '')) = '' and not(@*) and not(processing-instruction()) and not(comment()) and not(*[not(self::br) or @* or * or node()]))])]">
</template>
<template match="br[parent::div and not(preceding-sibling::node()) and not(following-sibling::node())]">
<text></text>
</template>
<template match="table|td|tr|th|tbody|p|div|a">
<element name="{name()}">
<choose>
<when test="name() ='img'">
<for-each select="@*">
<attribute name="{name()}">
<value-of select="."></value-of>
</attribute>
</for-each>
</when>
<otherwise>
<for-each select="@*">
<choose>
<when test="name() ='border'"></when>
<when test="name() ='cellpadding'"></when>
<when test="name() ='cellspacing'"></when>
<when test="name() ='bgcolor'"></when>
<when test="name() ='bordercolor'"></when>
<when test="name() ='width'"></when>
<when test="name() ='height'"></when>
<when test="name() ='bordercolor'"></when>
<when test="name() ='span'"></when>
<when test="name() ='style'"></when>
<when test="name() ='class'">
<choose>
<when test=". ='MsoNormal'"></when>
<otherwise>
<attribute name="{name()}">
<value-of select="."></value-of>
</attribute>
</otherwise>
</choose>
</when>
<otherwise>
<attribute name="{name()}">
<value-of select="."></value-of>
</attribute>
</otherwise>
</choose>
</for-each>
</otherwise>
</choose>
<apply-templates></apply-templates>
</element>
</template>
<template match="h1">
<element name="h2">
<apply-templates></apply-templates>
</element>
</template>
<template match="td/p">
<apply-templates></apply-templates>
</template>
<template match="li/p">
<apply-templates></apply-templates>
</template>
<template match="link|script|font|iframe|ilayer|layer|span|small">
<apply-templates></apply-templates>
</template>
</stylesheet>