我有一个似乎与svg名称空间有关的问题。一种方式适用于FireFox,另一种方式适用于Chrome,但两种方式都不适用。我尝试过添加xmlns =" http://www.w3.org/2000/svg" ;,但这并没有改变结果。
在下面的模板中,'使用'和'文字'标签的前缀为' 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}">
答案 0 :(得分:0)
我写了两个测试用例,一个是http://home.arcor.de/martin.honnen/xslt/test2015020801.xml,使用样式表http://home.arcor.de/martin.honnen/xslt/test2015020801.xsl和xsl:output method="xml"
,第二个是http://home.arcor.de/martin.honnen/xslt/test2015020802.xml,它使用样式表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)。这样你就可以得到一致的结果。