我尝试使用一行创建一个SVG文件。我不想直接在style =“...”属性中定义样式属性。请注意,我在style属性中添加了“& E1”,因为我想使用该实体。这是我的尝试
<!DOCTYPE html>
<html>
<body>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"[
<!ENTITY E1 'stroke-miterlimit:9;stroke-linecap:butt;opacity:1;stroke-width:1;fill:none;stroke-linejoin:miter;stroke:rgb(255,0,0);'>
]>
<svg xmlns="http://www.w3.org/2000/svg" id="q_svg" version="1.1">
<g id="root_group" style="shape-rendering:crispEdges;">
<line x1="0" x2="12" y2="56" id="2" style="&E1;" y1="0" />
</g>
</svg>
</body></html>
出了什么问题?
答案 0 :(得分:2)
有一件事就是你为svg陈述DOCTYPE的方式。我不认为有必要为SVG声明它,并且dtd声明应该在文档的顶部。另一个是我认为让浏览器知道文档是XML / XHTML而不是HTML / HTML5很重要,因为自定义DTD实体只能是XML的一部分。如果是文件,最好将其扩展名称为.xml;如果它是动态生成的,则将内容类型设置为“application / xhtml + xml”或者“application / xml”。 以下代码段可能适合您:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
[
<!ENTITY E1 'stroke-miterlimit:9;stroke-linecap:butt;opacity:1;stroke-width:1;fill:none;stroke-linejoin:miter;stroke:rgb(255,0,255);'>
]>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml;charset=utf-8"/>
<title>Entities in XHTML</title>
</head>
<body>
<svg xmlns="http://www.w3.org/2000/svg" id="q_svg" version="1.1">
<g id="root_group" style="shape-rendering:crispEdges;">
<line x1="0" x2="12" y2="56" id="2" style="&E1;" y1="0" />
</g>
</svg>
</body>
</html>
FYI。 HTML parser does not support embedded entity declaration