什么是(X)HTML中的保留字符?

时间:2012-04-29 10:42:36

标签: html xhtml html-entities html-encode

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

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

This page says < > & " '是(X)HTML中的保留字符。有点混乱,但没关系,这也是有道理的。

接着是this page,其中< > & " © ° £和非中断空格(&nbsp)都是(X)HTML中的保留字符。这根本没有意义,几乎增加了我的困惑。

知识渊博的人,实际上知道这些内容的人,是否可以澄清(X)HTML 中的保留字符实际上是什么?

编辑:此外,代码中的所有保留字符是否应在<pre>标记中包含时进行转义?或者只是这三个 - < > & ??

5 个答案:

答案 0 :(得分:8)

只有<& 需要才能进行转义。内部属性"'(取决于您用于属性值的引用样式)也需要进行转义。

<a href="#" onclick="here you can use ' safely"></a>
<a href="#" onclick='here you can use " safely'></a>

答案 1 :(得分:8)

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

  

XHTML 1.0 [...]是三种HTML 4文档类型的重构   XML 1.0 [XML]的应用程序。

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

  

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

这意味着在撰写XHTML文档的文本部分时,必须转义&amp;,&lt;和&gt;。

可以逃脱更多,例如&安培; uuml;为你的变形金刚u。您还可以声明文档以UTF-8编码,并编写字节序列0xc3bc,以获得相同的变音符号。

在编写文档的元素部分(col。“tags”)时,有不同的规则。你必须处理“,”以及许多关于注释,CDATA等的规则。还有规则可以在元素和属性名称中使用哪些字符。你可以在XML规范中查找它,但是在最后归结为:对于元素和属性名称,使用字母,数字和“ - ”;不要使用“_”。对于属性值,必须转义&amp;和(取决于引用)风格)'或'。

如果您使用众多库中的一个来编写XML / XHTML文档,那么其他人已经处理过这个问题,您只需要告诉库编写文本或元素。所有逃脱都是在后台完成的。&amp;

答案 2 :(得分:1)

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

根据HTML规则,“HTML”表示任何HTML版本,包括HTML 4.01,仅包含“&lt;”和“&amp;”保留。规则有点复杂。除了在标签,实体引用和字符引用中的语法用法之外,它们不应该按字面意思出现。但根据正式规则,它们可能在字面上显示,例如在上下文中“A&amp; B”或“A&lt; B”(但A&B正式错误,A<B}也是如此。

基于XML的XHTML规则更严格,更简单:“&lt;”和“&amp;”无条件保留。

ASCII引号“和ASCII撇号”不是保留的,除非在特定意义上引用的属性值必须不包含用作引号的字符,即在“foo”中字符串foo不得包含“因此,在'foo'中,字符串foo不得包含'如此。

答案 3 :(得分:0)

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

  • 这意味着您可以使用&lt;和&gt; chars只定义标签(<mytag></mytag>)。

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

  • &符号(&amp;)用于写实体(&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中,您还可以简单地编写©,或使用实体&copy;或数字实体&00A9;

答案 4 :(得分:0)

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

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