在HTML,XML和DTD中,有两种特殊的标记结构:
<!
并以标准>
结束,例如<!DOCTYPE html>
和<!--comment-->
<?
,并以另一个问号?>
结束,例如<?xml version="1.0"?>
和<?php phpinfo();?>
我的问题是,每种构造类型都有 不同的名称 ,还是我必须将它们称为“感叹号标记内容“和”问号标记doohicky “永远?
这个答案很大程度上取决于kjhughes的答案。
XML和HTML都没有在其规范中明确命名<!
>
构造,两种<!X
{{1}都有不同的名称结构 - >
代表X
,DOCTYPE
,ELEMENT
,ENTITY
,ATTLIST
,NOTATION
*,或者marked section以--
*。
然而, SGML - HTML和XML的基础。
在SGML中,正确填充的[
<!X
结构称为 SGML标记声明,其中>
为标记声明打开分隔符,<!
是标记声明关闭分隔符。
对于>
<?
构造,SGML和HTML都定义了一个类似的?>
<?X
结构,称为处理指令(>
表示处理指令目标)。在这种情况下,X
被称为处理指令打开分隔符,并与处理指令关闭分隔符配对,这是一个单独的<?
SGML和HTML都不使用>
作为处理指令关闭分隔符的一部分,实质上使?
闭包无效标记。
但是,XML appears to extend原始SGML规范并使用?>
来关闭处理指令而不是?>
,这就是为什么在XML文档中找到此表单的原因。
但要在汤中添加一些头发,>
后跟不区分大小写的<?
x
m
l
,并以{{1}结束保留, 技术上不是处理指令 。此表单目前仅用于XML declarations,但可以说XML声明只是处理XML解析器本身的指令。
TL; DR:
?>
是 SGML标记声明,但未在HTML **或XML ***中明确命名<!
>
是XML中的处理指令,但在SGML和HTML中以<?
结束。
备注:
* HTML 2.0 specification将评论称为“ 评论声明 ”。 Taken together with SGML,这表示每个有效?>
>
表单的名称以“ 声明 ”结尾。
** HTML 4 recommendation 的措辞意味着注释仍然是标记声明的子结构,但它并未将注释称为“注释声明”,如HTML 2.0。 / p>
*** XML does name标记声明;但是,该定义不包括注释或标记的部分,这些部分是XML中自己的类别。
答案 0 :(得分:3)
请参阅W3C Extensible Markup Language (XML) Recommendation了解现代标记术语:
<div>
),结束代码(</div>
)或空代码(<div/>
)之一。也可以看看
What is the correct terminology of XML's elements? <?xml version="1.0" ... ?>
是XML declaration。注意
only one XML declaration is permitted in well-formed XML, and it
must be at the top if anywhere. <?PITarget ... ?>
是processing instruction,前提是
PITarget 不等于xml(以不区分大小写的方式)。<!DOCTYPE html ...>
是document type definition。<!ELEMENT ... >
是element declaration,或者通常为markup declaration。<!-- comment -->
是 comment 。 XML建议书没有明确标注<!
或<?
,但对于那些使用SGML术语是公平的:
<!
是一个标记声明开放分隔符,由标记声明关闭分隔符,>
匹配。<?
是处理指令开放分隔符,由处理指令关闭分隔符,?>
匹配(尽管在SGML中PI关闭分隔符是>
)。答案 1 :(得分:0)
这个答案主要来自kjhughes上面的回答。
XML和HTML都没有在其规范中明确命名<!
>
构造,两种<!X
{{1}都有不同的名称结构 - >
代表X
,DOCTYPE
,ELEMENT
,ENTITY
,ATTLIST
,NOTATION
*,或者marked section以--
*。
然而, SGML - HTML和XML的基础。
在SGML中,正确填充的[
<!X
结构称为 SGML标记声明,其中>
为标记声明打开分隔符,<!
是标记声明关闭分隔符。
对于>
<?
构造,SGML和HTML都定义了一个类似的?>
<?X
结构,称为处理指令(>
表示处理指令目标)。在这种情况下,X
被称为处理指令打开分隔符,并与处理指令关闭分隔符配对,这是一个单独的<?
SGML和HTML都不使用>
作为处理指令关闭分隔符的一部分,实质上使?
闭包无效标记。
但是,XML appears to extend原始SGML规范并使用?>
来关闭处理指令而不是?>
,这就是为什么在XML文档中找到此表单的原因。
但要在汤中添加一些头发,>
后跟不区分大小写的<?
x
m
l
,并以{{1}结束保留, 技术上不是处理指令 。此表单目前仅用于XML declarations,但可以说XML声明只是处理XML解析器本身的指令。
<强> TL; DR:强>
?>
是 SGML标记声明,但未在HTML **或XML ***中明确命名<!
>
是XML中的处理指令,但在SGML和HTML中以<?
结束。
备注:强>
* HTML 2.0 specification将评论称为“评论声明”。 Taken together with SGML,这表示每个有效?>
>
表单的名称以“ 声明 ”结尾。
** HTML 4 recommendation 的措辞意味着注释仍然是标记声明的子结构,但它并未将注释称为“注释声明”,如HTML 2.0。 / p>
*** XML does name标记声明;但是,该定义不包括注释或标记的部分,这些部分是XML中自己的类别。
答案 2 :(得分:-2)
每个标签都有一个名称:
<!DOCTYPE html> = doctype
<!-- = comment
<?php = php tag
<?xml = xml tag