• DTD


    DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。

    它使用一系列的合法元素来定义文档结构。

    DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。

    内部的 DOCTYPE 声明

    假如 DTD 被包含在 XML 源文件中,应当通过下面的语法包装在一个 DOCTYPE 声明中:

    <!DOCTYPE 根元素 [元素声明]>

    如:

    <!DOCTYPE note [

      <!ELEMENT note (to,from,heading,body)>

      <!ELEMENT to      (#PCDATA)>

      <!ELEMENT from    (#PCDATA)>

      <!ELEMENT heading (#PCDATA)>

      <!ELEMENT body    (#PCDATA)>

    ]>

    DTD 位于 XML 源文件的外部,那么它应通过下面的语法被封装在一个 DOCTYPE 定义中:

    <!DOCTYPE 根元素 SYSTEM "文件名">

     DTD:每一个 XML 文件均可携带一个有关其自身格式的描述。独立的团体可一致地使用某个标准的 DTD 来交换数据。应用程序也可使用某个标准的 DTD 来验证从外部接收到的数据。使用 DTD 来验证您自身的数据。

    声明一个元素:

    <!ELEMENT 元素名称 类别>

    或者

    <!ELEMENT 元素名称 (元素内容)>

    空元素

    空元素通过类别关键词EMPTY进行声明:

    <!ELEMENT 元素名称 EMPTY>

    例子:

    <!ELEMENT br EMPTY>

    只有 PCDATA 的元素

    只有 PCDATA 的元素通过圆括号中的 #PCDATA 进行声明:

    <!ELEMENT 元素名称 (#PCDATA)>

    例子:

    <!ELEMENT from (#PCDATA)>

    带有任何内容的元素

    通过类别关键词 ANY 声明的元素,可包含任何可解析数据的组合:

    <!ELEMENT 元素名称 ANY>

    例子:

    <!ELEMENT note ANY>

    带有子元素(序列)的元素

    带有一个或多个子元素的元素通过圆括号中的子元素名进行声明:

    <!ELEMENT 元素名称 (子元素名称 1)>

    或者

    <!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>

    当子元素按照由逗号分隔开的序列进行声明时,这些子元素必须按照相同的顺序出现在文档中。在一个完整的声明中,子元素也必须被声明,同时子元素也可拥有子元素。

    声明只出现一次的元素

    <!ELEMENT 元素名称 (子元素名称)>

    例子:

    <!ELEMENT note (message)>

    声明最少出现一次的元素

    <!ELEMENT 元素名称 (子元素名称+)>

    例子:

    <!ELEMENT note (message+)>

    声明出现零次或多次的元素

    <!ELEMENT 元素名称 (子元素名称*)>

    例子:

    <!ELEMENT note (message*)>

    声明出现零次或一次的元素

    <!ELEMENT 元素名称 (子元素名称?)>

    例子:

    <!ELEMENT note (message?)>

    声明“非.../既...”类型的内容

    例子:

    <!ELEMENT note (to,from,header,(message|body))>

    声明混合型的内容

    例子:

    <!ELEMENT note (#PCDATA|to|from|header|message)*>

    在 DTD 中,属性通过 ATTLIST 声明来进行声明。

    声明属性

    属性声明使用下列语法:

    <!ATTLIST 元素名称 属性名称 属性类型 默认值>

    DTD 实例:

    <!ATTLIST payment type CDATA "check">

    以下是属性类型的选项:

    类型

    描述

    CDATA

    值为字符数据 (character data)

    (en1|en2|..)

    此值是枚举列表中的一个值

    ID

    值为唯一的 id

    IDREF

    值为另外一个元素的 id

    IDREFS

    值为其他 id 的列表

    NMTOKEN

    值为合法的 XML 名称

    NMTOKENS

    值为合法的 XML 名称的列表

    ENTITY

    值是一个实体

    ENTITIES

    值是一个实体列表

    NOTATION

    此值是符号的名称

    xml:

    值是一个预定义的 XML 值

    默认值参数可使用下列值:

    解释

    属性的默认值

    #REQUIRED

    属性值是必需的

    #IMPLIED

    属性不是必需的

    #FIXED value

    属性值是固定的

    列举属性值

    语法:

    <!ATTLIST 元素名称 属性名称 (en1|en2|..) 默认值>

    实体是用于定义引用普通文本或特殊字符的快捷方式的变量。

    实体引用是对实体的引用。

    实体可在内部或外部进行声明。

    一个内部实体声明

    语法:

    <!ENTITY 实体名称 "实体的值">

    注释: 一个实体由三部分构成: 一个和号 (&), 一个实体名称, 以及一个分号 (;)。

    一个外部实体声明

    语法:

    <!ENTITY 实体名称 SYSTEM "URI/URL">

    通过 XML 解析器进行验证

    当您试图打开某个 XML 文档时,XML 解析器有可能会产生错误。通过访问 parseError 对象,就可以取回引起错误的确切代码、文本甚至所在的行。

    load( ) 方法用于文件,而 loadXML( ) 方法用于字符串。

    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")

    xmlDoc.async="false"

    xmlDoc.validateOnParse="true"

    xmlDoc.load("note_dtd_error.xml")

    document.write("<br>Error Code: ")

    document.write(xmlDoc.parseError.errorCode)

    document.write("<br>Error Reason: ")

    document.write(xmlDoc.parseError.reason)

    document.write("<br>Error Line: ")

    document.write(xmlDoc.parseError.line)

    通过把 XML 解析器的 validateOnParse 设置为 "false",就可以关闭验证。

  • 相关阅读:
    asp.net+ tinymce粘贴word
    jsp+ tinymce粘贴word
    jsp+ ueditor word粘贴上传
    php+ ueditor word粘贴上传
    asp.net+ueditor word粘贴上传
    word写博客
    【转】如何使用离线博客发布工具发布CSDN的博客文章
    用word发布CSDN文章
    用word发CSDN blog,免去插图片的烦恼
    如何实现word上传服务器
  • 原文地址:https://www.cnblogs.com/selfimprove/p/4583309.html
Copyright © 2020-2023  润新知