CDATA 部分是一个标记部分。在 SGML 中既有抽象语法也有具体语法。标记部分声明的抽象语法以标记声明打开(mdo)分隔符开头,后跟声明子集打开(dso)分隔符。紧随其后的是第二个声明子集打开(dso)分隔符的状态关键字。标记部分以标记部分关闭(msc)分隔符结尾,后跟标记声明关闭(mdc)分隔符。因此,标记部分声明的抽象语法是:
mdo dso status-keyword dso my-data msc mdc
为每个文档定义了具体的语法。此语法在与每个文档相关的 SGML 声明中指定。具体语法定义要用于文档的分隔符。我假设在 ISO 8879:1986 中定义的默认 SGML 分隔符如下:
- 标记声明打开:
<!
- 声明子集打开:
[
- 标记部分关闭:
]]
- 标记声明关闭:
>
但是您可以自由定义自己的具体语法,因此可以修改用作分隔符的字符。
因此,标记部分声明的默认具体语法是:
<![ status-keyword [my-data]]>
可能的状态关键字有:CDATA、RCDATA、IGNORE、INCLUDE、TEMP
这使我们:
<![ CDATA [my-data]]>
请参阅Martin Bryan的《 SGML 和 HTML 解释》一书中的以下章节: