代码之家  ›  专栏  ›  技术社区  ›  Ben van Hartingsveldt 'Y'

带有额外信息的空DTD元素

  •  1
  • Ben van Hartingsveldt 'Y'  · 技术社区  · 7 年前

    我知道DTD是如何工作的,以及何时需要申报 <br> <br/>

    <!ELEMENT br EMPTY>
    

    https://www.w3.org/MarkUp/html-spec/html.dtd

    <!ELEMENT BR    - O EMPTY>
    

    我知道大多数都是一样的,但是它们之间有什么不同呢 - O 制作我在哪里可以了解更多?

    谢谢

    1 回复  |  直到 5 年前
        1
  •  1
  •   imhotap    7 年前

    这个 - O (字母O)字符是SGML标记省略指示符,并(向SGML解析器)声明可以分别省略元素的开始标记和/或结束标记(如果 O - ). 第一个 O 字符表示开始元素标记,第二个字符表示结束元素标记。

    例如,一个有效的HTML文档可以如下所示(其中“公共标识符”被缩短为 ...

    <!DOCTYPE html PUBLIC "...">
    <title>A valid HTML document</title>
    <p>Body Text
    

    <!DOCTYPE html PUBLIC "...">
    <html>
      <head>
        <title>A valid HTML document</title>
      </head>
      <body>
        <p>Body Text</p>
      </body>
    </html>
    

    带有标记省略指示符的元素声明将使SGML解析器到达推断和规范标记

    <!ELEMENT html O O (head,body)>
    <!ELEMENT head O O (title)>
    <!ELEMENT body O O (#PCDATA,p)+>
    <!ELEMENT p - O (#PCDATA)>
    

    案例 br EMPTY 元素(HTML将这些元素称为“void元素”,并具有其他元素,例如 img hr 空的 在传统的SGML中,根本不允许有结束元素标记,并且使用结束标记省略指示符是多余的,甚至会产生误导。

    http://sgmljs.net/blog/blog1701.html .

    编辑:还想澄清一下 <br/> 在XML中 ,你不必申报 ; 事实上,你根本不需要申报任何东西;另外,既然你要求,你可以去(我们的网站) http://sgmljs.net/docs/sgmlrefman.html 了解有关SGML的更多信息