4

是的,我用谷歌搜索过,令人惊讶的是得到了令人困惑的答案。

一页说< > & "是(X)HTML中唯一的保留字符。毫无疑问,这是有道理的。

该页面说 < > & " '的是(X)HTML中的保留字符。有点混乱,但是好吧,这也有道理。

然后是这个页面,上面写着< > & " © ° £不间断空格 ( &nbsp) 都是 (X)HTML 中的保留字符。这根本没有意义,而且几乎增加了我的困惑。

知识渊博、真正了解这些东西的人能否澄清(X)HTML 中的保留字符实际上是哪些?

编辑<pre>:另外,代码中的所有保留字符都应该在包含在标签中时被转义吗?还是只有这三个—— < > &??

4

5 回答 5

9

XHTML 1.0 规范在http://www.w3.org/TR/2002/REC-xhtml1-20020801/#xhtml中声明:

XHTML 1.0 [...] 是作为 XML 1.0 [XML] 应用程序的三种 HTML 4 文档类型的重新表述。

XML 1.0 规范在http://www.w3.org/TR/2008/REC-xml-20081126/#syntax中声明:

字符数据和标记:文本由混合的字符数据和标记组成。[...] & 符号 ( &) 和左尖括号 ( <) 不得以其文字形式出现,除非用作标记分隔符,或者在注释、处理指令或 CDATA 部分中。如果在其他地方需要它们,它们必须分别使用数字字符引用或字符串“ &amp;”和“ &lt;”进行转义。右尖括号 ( >) 可以使用字符串 " &gt;" 表示,并且为了兼容性,当它出现在内容中的字符串 " " 中时,必须使用 " &gt;" 或字符引用进行转义]]>,当该字符串未标记结束时的 CDATA 部分。

这意味着在编写 XHTML 文档的文本部分时,您必须转义 &、< 和 >。

可以逃避更多,例如 ü 对于变音你。您也可以声明该文档以例如 UTF-8 编码并写入字节序列 0xc3bc 以获得相同的元音变音 u。

在编写文档的元素部分(列“标签”)时,有不同的规则。您必须注意“,”以及有关注释,CDATA等的许多规则。还有一些规则可以在元素和属性名称中使用哪些字符。您可以在XML规范中查找,但在最后归结为:对于元素和属性名称,使用字母、数字和“-”;不要使用“_”。对于属性值,您必须转义 & 和(取决于引号样式)' 或 "。

如果您使用众多库之一来编写 XML/XHTML 文档,其他人已经处理了这一点,您只需告诉库编写文本或元素。所有的转义都是在后台完成的。&

于 2012-04-29T11:21:24.217 回答
8

只有<并且& 需要逃脱。内部属性,"或者'(取决于您用于属性值的引用样式)也需要转义。

<a href="#" onclick="here you can use ' safely"></a>
<a href="#" onclick='here you can use " safely'></a>
于 2012-04-29T10:45:36.227 回答
1

通过编写“(X)HTML”,您(至少)提出了两个不同的问题。

根据 HTML 规则,“HTML”表示直到并包括 HTML 4.01 的任何 HTML 版本,仅保留“<”和“&”。规则有些复杂。除了在标签、实体引用和字符引用中的句法使用之外,它们不应按字面意思出现。但是根据正式规则,它们可能会出现在例如上下文“A & B”或“A < B”中(但A&B在形式上是错误的,因此也是如此A<B)。

基于 XML 的 XHTML 规则更严格、更简单:“<”和“&”是无条件保留的。

ASCII 引号 " 和 ASCII 撇号 ' 不是保留的,除非在非常具体的意义上,带引号的属性值不能包含用作引号的字符,即在 "foo" 中,字符串 foo 不能包含 " 这样和在 'foo' 中,字符串 foo 不能包含 ' 本身。

于 2012-04-29T13:35:00.553 回答
0

字符< > & "由 XML 格式保留。

  • 这意味着您只能使用 < 和 > 字符来定义标签 ( <mytag></mytag>)。

  • 双引号 (") 用于定义属性值 ( <mytag attribute="value" />)

  • 与号 (&) 用于编写实体(&amp;在您实际想要编写与号时使用,而不是&)。此外,当您在 XML 文档中编写 url 时,您应该使用&amp;,而不仅仅是&: www.aaa.com?a=1&b=2- 是错误的;www.aaa.com?a=1&amp;b=2- 很好!

XHTML 基于 XML,所以我所写的内容适用于 XHTML。

© ° £- 这些不是保留字符。这些是专门为 XHTML 而不是 XML 定义的实体。

在 XML 中,您可以简单地编写©. 在 XHMTL 中,您也可以简单地编写 ©,或使用 entity&copy;或 numeric entity &00A9;

于 2012-04-29T10:58:19.463 回答
0

除了其他答案之外,知道还有禁止字符可能会有所帮助:ASCII 和 ISO-8859-1 中的所有控制字符,除了 TAB、LF 和 CR。

https://www.w3.org/MarkUp/html3/specialchars.html

于 2018-03-27T09:17:17.453 回答