是的,我用Google搜索过,令人惊讶地得到了令人困惑的答案。
One page says < > & "
是(X)HTML中唯一的保留字符。毫无疑问,这是有道理的。
This page says < > & " '
是(X)HTML中的保留字符。有点混乱,但没关系,这也是有道理的。
接着是this page,其中< > & " © ° £
和非中断空格( 
)都是(X)HTML中的保留字符。这根本没有意义,几乎增加了我的困惑。
知识渊博的人,实际上知道这些内容的人,是否可以澄清(X)HTML 中的保留字符实际上是什么?
编辑:此外,代码中的所有保留字符是否应在<pre>
标记中包含时进行转义?或者只是这三个 - < > &
??
答案 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部分。如果他们需要在其他地方,他们必须逃脱 使用数字字符引用或字符串“&
”和 分别是“<
”。可以表示右尖括号(>
) 使用字符串“>
”,并且为了兼容性,必须进行转义 使用“>
”或字符引用时出现在 内容中的字符串“]]>
”,当该字符串未标记结尾时 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;)用于写实体(&
用于实际想要编写&符号时,&
)。此外,当您在XML文档中编写URL时,您应该使用&
,而不仅仅是&
:www.aaa.com?a=1&b=2
- 是错误的; www.aaa.com?a=1&b=2
- 很好!
XHTML基于XML,因此我所写的内容适用于XHTML。
© ° £
- 这些不是保留的字符。这些是专门为XHTML定义的实体,而不是XML。
在XML中,您只需编写©
即可。在XHMTL中,您还可以简单地编写©,或使用实体©
或数字实体&00A9;
。
答案 4 :(得分:0)
除了其他答案之外,还可以知道还有禁用的字符:ASCII和ISO-8859-1中的所有控制字符,除了TAB,LF和CR。