设计内联 SVG 样式时是否需要 CDATA?

Men*_*ist 9 html css xml svg dom

我读过有关此问题的各种内容,所以我希望能得到明确的解决。

如果我有内嵌在 HTML 文档中的 SVG 标记,并且我使用 CSS 对其进行样式化,我是否需要将该 CSS 包装在注释掉的 CDATA 中?

例子:

<!DOCTYPE html>
<html>
<head>
     <meta charset="UTF-8">
</head>
<body>
    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512">
        <style type="text/css">
            /* <![CDATA[ */
            .some_styles {}
            /* ]]> */
        </style>
        <!-- SVG content here -->
    </svg>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我想可能存在诸如CSS 子组合器被误解为 XML 右括号之类的问题,并且我读过人们建议使用注释掉的 CDATA 围绕内联 SVG 样式1 2的各种帖子。然而,令我惊讶的是,我发现即使删除了 CDATA 并使用了子组合器,我的 HTML 仍然有效。除此之外,我无法在任何现代浏览器中检测到 SVG 渲染的任何问题。

这是SE 上讨论的关于在<script>标签中包含 CDATA 的内容,但这与 不同<svg>,因此这似乎有必要提出自己的问题。

我不介意包含它,而且这样做不会造成任何麻烦。我只是想知道我做的是正确的事还是不必要的事。

JP *_*rre 5

理论上,任何想要写入非转义文本的地方都需要 CDATA 块。在 XML 中,只有 2 个字符需要转义:<and&和 ,这两个字符在 CSS 中都是没有意义的。

这意味着 CSS 不需要 CDATA 块。

(此外,您不需要 HTML 中的 CDATA,因为 HTML 不是 XML)。