【发布时间】:2015-04-07 21:52:14
【问题描述】:
我有一个似乎与 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}">
【问题讨论】:
-
请发布足够的代码 (XML+XSLT) 以使我们能够重现问题。并解释“不起作用”的确切含义。
-
使用 XSLT 和一个应该是 (X)HTML 和 SVG 混合的结果,如果您希望它是使用命名空间的 XML,您将需要决定您想要什么样的结果文档带有您似乎想要这样做的前缀,那么您应该使用
<xsl:output method="xml"/>。如果您想创建允许使用 HTML 和 SVG 元素的 HTML5,那么您需要确保使用不带前缀的 SVG 元素,因为 HTML5 不支持前缀和命名空间,就像您尝试使用svg:use一样。
标签: google-chrome firefox xslt svg namespaces