我正在尝试构建一个 perl 哈希来描述每个 SVG 元素的允许内容元素。有没有人有一个 perl 脚本可以做到这一点?
user846969
问问题
86 次
2 回答
1
{
"altGlyphDef" => ["glyphRef", "altGlyphItem"],
"animate" => ["desc", "metadata", "title"],
"animateColor" => ["desc", "metadata", "title"],
"animateTransform" => ["desc", "metadata", "title"],
"circle" => [
"animate",
"animateColor",
"animateMotion",
"animateTransform",
"set",
"desc",
"metadata",
"title",
],
"clipPath" => [
"desc",
"metadata",
"title",
"animate",
"animateColor",
"animateMotion",
"animateTransform",
"set",
"circle",
"ellipse",
"line",
"path",
"polygon",
"polyline",
"rect",
"text",
"use",
],
"color-profile" => ["desc", "metadata", "title"],
"cursor" => ["desc", "metadata", "title"],
"defs" => [
"animate",
"animateColor",
"animateMotion",
"animateTransform",
"set",
"desc",
"metadata",
"title",
"circle",
"ellipse",
"line",
"path",
"polygon",
"polyline",
"rect",
"defs",
"g",
"svg",
"symbol",
"use",
"linearGradient",
"radialGradient",
"a",
"altGlyphDef",
"clipPath",
"color-profile",
"cursor",
"filter",
"font",
"font-face",
"foreignObject",
"image",
"marker",
"mask",
"pattern",
"script",
"style",
"switch",
"text",
"view",
],
"ellipse" => [
"animate",
"animateColor",
"animateMotion",
"animateTransform",
"set",
"desc",
"metadata",
"title",
],
"feBlend" => ["animate", "set"],
"feColorMatrix" => ["animate", "set"],
"feComponentTransfer" => ["feFuncA", "feFuncB", "feFuncG", "feFuncR"],
"feComposite" => ["animate", "set"],
"feConvolveMatrix" => ["animate", "set"],
"feDisplacementMap" => ["animate", "set"],
"feDistantLight" => ["animate", "set"],
"feFlood" => ["animate", "animateColor", "set"],
"feGaussianBlur" => ["animate", "set"],
"feImage" => ["animate", "animateTransform", "set"],
"feMerge" => ["feMergeNode"],
"feMorphology" => ["animate", "set"],
"feOffset" => ["animate", "set"],
"fePointLight" => ["animate", "set"],
"feSpotLight" => ["animate", "set"],
"feTile" => ["animate", "set"],
"feTurbulence" => ["animate", "set"],
"filter" => [
"desc",
"metadata",
"title",
"feBlend",
"feColorMatrix",
"feComponentTransfer",
"feComposite",
"feConvolveMatrix",
"feDiffuseLighting",
"feDisplacementMap",
"feFlood",
"feGaussianBlur",
"feImage",
"feMerge",
"feMorphology",
"feOffset",
"feSpecularLighting",
"feTile",
"feTurbulence",
"animate",
"set",
],
"font" => [
"desc",
"metadata",
"title",
"font-face",
"glyph",
"hkern",
"missing-glyph",
"vkern",
],
"font-face-src" => ["font-face-name", "font-face-uri"],
"font-face-uri" => ["font-face-format"],
"g" => [
"animate",
"animateColor",
"animateMotion",
"animateTransform",
"set",
"desc",
"metadata",
"title",
"circle",
"ellipse",
"line",
"path",
"polygon",
"polyline",
"rect",
"defs",
"g",
"svg",
"symbol",
"use",
"linearGradient",
"radialGradient",
"a",
"altGlyphDef",
"clipPath",
"color-profile",
"cursor",
"filter",
"font",
"font-face",
"foreignObject",
"image",
"marker",
"mask",
"pattern",
"script",
"style",
"switch",
"text",
"view",
],
"glyph" => [
"animate",
"animateColor",
"animateMotion",
"animateTransform",
"set",
"desc",
"metadata",
"title",
"circle",
"ellipse",
"line",
"path",
"polygon",
"polyline",
"rect",
"defs",
"g",
"svg",
"symbol",
"use",
"linearGradient",
"radialGradient",
"a",
"altGlyphDef",
"clipPath",
"color-profile",
"cursor",
"filter",
"font",
"font-face",
"foreignObject",
"image",
"marker",
"mask",
"pattern",
"script",
"style",
"switch",
"text",
"view",
],
"image" => [
"animate",
"animateColor",
"animateMotion",
"animateTransform",
"set",
"desc",
"metadata",
"title",
],
"line" => [
"animate",
"animateColor",
"animateMotion",
"animateTransform",
"set",
"desc",
"metadata",
"title",
],
"linearGradient" => [
"desc",
"metadata",
"title",
"animate",
"animateTransform",
"set",
"stop",
],
"marker" => [
"animate",
"animateColor",
"animateMotion",
"animateTransform",
"set",
"desc",
"metadata",
"title",
"circle",
"ellipse",
"line",
"path",
"polygon",
"polyline",
"rect",
"defs",
"g",
"svg",
"symbol",
"use",
"linearGradient",
"radialGradient",
"a",
"altGlyphDef",
"clipPath",
"color-profile",
"cursor",
"filter",
"font",
"font-face",
"foreignObject",
"image",
"marker",
"mask",
"pattern",
"script",
"style",
"switch",
"text",
"view",
],
"mask" => [
"animate",
"animateColor",
"animateMotion",
"animateTransform",
"set",
"desc",
"metadata",
"title",
"circle",
"ellipse",
"line",
"path",
"polygon",
"polyline",
"rect",
"defs",
"g",
"svg",
"symbol",
"use",
"linearGradient",
"radialGradient",
"a",
"altGlyphDef",
"clipPath",
"color-profile",
"cursor",
"filter",
"font",
"font-face",
"foreignObject",
"image",
"marker",
"mask",
"pattern",
"script",
"style",
"switch",
"text",
"view",
],
"missing-glyph" => [
"animate",
"animateColor",
"animateMotion",
"animateTransform",
"set",
"desc",
"metadata",
"title",
"circle",
"ellipse",
"line",
"path",
"polygon",
"polyline",
"rect",
"defs",
"g",
"svg",
"symbol",
"use",
"linearGradient",
"radialGradient",
"a",
"altGlyphDef",
"clipPath",
"color-profile",
"cursor",
"filter",
"font",
"font-face",
"foreignObject",
"image",
"marker",
"mask",
"pattern",
"script",
"style",
"switch",
"text",
"view",
],
"path" => [
"animate",
"animateColor",
"animateMotion",
"animateTransform",
"set",
"desc",
"metadata",
"title",
],
"pattern" => [
"animate",
"animateColor",
"animateMotion",
"animateTransform",
"set",
"desc",
"metadata",
"title",
"circle",
"ellipse",
"line",
"path",
"polygon",
"polyline",
"rect",
"defs",
"g",
"svg",
"symbol",
"use",
"linearGradient",
"radialGradient",
"a",
"altGlyphDef",
"clipPath",
"color-profile",
"cursor",
"filter",
"font",
"font-face",
"foreignObject",
"image",
"marker",
"mask",
"pattern",
"script",
"style",
"switch",
"text",
"view",
],
"polygon" => [
"animate",
"animateColor",
"animateMotion",
"animateTransform",
"set",
"desc",
"metadata",
"title",
],
"polyline" => [
"animate",
"animateColor",
"animateMotion",
"animateTransform",
"set",
"desc",
"metadata",
"title",
],
"radialGradient" => [
"desc",
"metadata",
"title",
"animate",
"animateTransform",
"set",
"stop",
],
"rect" => [
"animate",
"animateColor",
"animateMotion",
"animateTransform",
"set",
"desc",
"metadata",
"title",
],
"set" => ["desc", "metadata", "title"],
"stop" => ["animate", "animateColor", "set"],
"svg" => [
"animate",
"animateColor",
"animateMotion",
"animateTransform",
"set",
"desc",
"metadata",
"title",
"circle",
"ellipse",
"line",
"path",
"polygon",
"polyline",
"rect",
"defs",
"g",
"svg",
"symbol",
"use",
"linearGradient",
"radialGradient",
"a",
"altGlyphDef",
"clipPath",
"color-profile",
"cursor",
"filter",
"font",
"font-face",
"foreignObject",
"image",
"marker",
"mask",
"pattern",
"script",
"style",
"switch",
"text",
"view",
],
"switch" => [
"animate",
"animateColor",
"animateMotion",
"animateTransform",
"set",
"desc",
"metadata",
"title",
"circle",
"ellipse",
"line",
"path",
"polygon",
"polyline",
"rect",
"a",
"foreignObject",
"g",
"image",
"svg",
"switch",
"text",
"use",
],
"symbol" => [
"animate",
"animateColor",
"animateMotion",
"animateTransform",
"set",
"desc",
"metadata",
"title",
"circle",
"ellipse",
"line",
"path",
"polygon",
"polyline",
"rect",
"defs",
"g",
"svg",
"symbol",
"use",
"linearGradient",
"radialGradient",
"a",
"altGlyphDef",
"clipPath",
"color-profile",
"cursor",
"filter",
"font",
"font-face",
"foreignObject",
"image",
"marker",
"mask",
"pattern",
"script",
"style",
"switch",
"text",
"view",
],
"text" => [
"animate",
"animateColor",
"animateMotion",
"animateTransform",
"set",
"desc",
"metadata",
"title",
"altGlyph",
"textPath",
"tref",
"tspan",
"a",
],
"textPath" => [
"desc",
"metadata",
"title",
"a",
"altGlyph",
"animate",
"animateColor",
"set",
"tref",
"tspan",
],
"tref" => ["desc", "metadata", "title", "animate", "animateColor", "set"],
"tspan" => [
"desc",
"metadata",
"title",
"a",
"altGlyph",
"animate",
"animateColor",
"set",
"tref",
"tspan",
],
"use" => [
"animate",
"animateColor",
"animateMotion",
"animateTransform",
"set",
"desc",
"metadata",
"title",
],
"view" => ["desc", "metadata", "title"],
}
于 2013-09-10T20:32:18.740 回答
1
SVG 的有效性规则比简单的父/子关系更复杂。
以<a>
或超链接元素为例。它可以有<text>
或<path>
孩子(等等)。并且一个<text>
元素可以有一个<a>
元素作为子元素(以及其他元素)。
这是为了你可以写这样的东西......
<text>Some part of this is <a xlink:href="http://somewhere.com">a link</a></text>
或这个
<a xlink:href="http://somewhere.com"><rect width="10" height="10"/></a>
但是,尽管简单的父/子规则似乎允许这样做,但这是无效的:
<text>Erm<a xlink:href="http://somewhere.com"><rect width="10" height="10"> no good</a></text>
于 2013-09-10T21:13:44.793 回答