スキーマ(Tridion 2011 SP1)にリッチテキストフィールドがあり、基本的なXSLTフィルターがアタッチされています(デフォルトのXSLTまたはカスタムフィルター。この問題には関係ありません)。
IE9では、そのスキーマに基づいてコンポーネントを作成すると、[ソース]タブのXHTMLは、名前空間なしで正常にレンダリングされます。例:
<p>a paragraph</p>
<p>
<a href="http://www.sdltridion.com">a link</a>
</p>
コンポーネントを保存できます。
ただし、Firefox(16.0.2、サポートされていません)では、名前空間は[ソース]タブに表示されます。
<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>
その結果、次のXML検証エラーが発生します。
名前空間'http://www.yme.com/GeneralContent'の要素'Paragraph'には、名前空間'http://www.w3.org/1999/XSL/Transform'の無効な子要素'p'があります。予想される可能な要素のリスト:名前空間'http://www.w3.org/1999/xhtml'の任意の要素。
これはサポートされていないバージョンのFirefoxであることがわかりましたが、この名前空間はどこから来ているのでしょうか。リッチテキストXSLTで定義されている名前空間はhttp://www.w3.org/1999/XSL/Transform
...
そして、誰かが可能な回避策を知っていますか?
これがフィルタリングXSLTですが、すでに述べたように、デフォルトのXSLTでも発生します。
<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>