xsl:template & svg 命名空间在 firefox 和 chrome 之间存在分歧

xsl:template & svg namespace disagreement between firefox & chrome

我有一个问题似乎与 svg 名称空间有关。一种方式适用于 FireFox,另一种方式适用于 Chrome,但两种方式均无效。我尝试添加 xmlns="http://www.w3.org/2000/svg",但这并没有改变结果。

在下面的模板中,'use' 和 'text' 标签的前缀是 'svg':。这适用于 FireFox 但不适用于 Chrome。如果我删除 'svg:' 前缀,那么它在 Chrome 中有效,但在 FireFox 中无效。

有没有一种方法可以同时使用两者?

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/xhtml"       xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<xsl:output method="html" encoding="UTF-8" indent="no"/>

<xsl:template name="attribute-header">
 <svg:use xlink:href="#attribute-value-section-banner" x="{$location-x}" y="{$banner-y}"/>
 <svg:text class="attribute-label-text" x="{$center-line}" y="{$label-y}">

我写了两个测试用例,一个是 http://home.arcor.de/martin.honnen/xslt/test2015020801.xml that uses the stylesheet http://home.arcor.de/martin.honnen/xslt/test2015020801.xsl with xsl:output method="xml", the second being http://home.arcor.de/martin.honnen/xslt/test2015020802.xml which uses the stylesheet http://home.arcor.de/martin.honnen/xslt/test2015020802.xsl<xsl:output method="html"。只要输出方法是 xml,XSLT 就可以生成带前缀的 SVG 元素(例如 svg:circle),我拥有的所有三种浏览器,IE 11、Firefox 和 Chrome 都会呈现 XHTML 和 SVG 就好了。在输出方法 html 的第二个测试用例中,我确保 SVG 元素没有前缀,因为 HTML5 和 HTML 4 都不支持该语法。同样,所有三个浏览器都知道如何呈现 XSLT 以这种方式创建的 HTML 和 SVG。

所以我假设您将 HTML 输出与 XML 命名空间和带前缀的限定名称混合在一起,决定是否要使用 XSLT 创建 XML,就像我的第一个示例一样,然后你可以完全支持 XML 和 XML 的命名空间语法,或者你是否想用你的 XSLT 创建 HTML5,然后你必须坚持 HTML5 语法它不支持带前缀的元素名称,只支持一些预定义的属性(参见 http://www.w3.org/TR/html5/syntax.html#attributes-0)。这样你应该得到一致的结果。