XML之dtd

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: XML之dtd

一.什么是格式良好XML

   


格式良好的XML(eXtensible Markup Language)是指XML文档按照规范的语法和标准的标记规则编写,其中每个元素都被正确地嵌套和关闭,属性值使用正确的引号,并且符合XML相关规范。这种格式的XML文档能够被最终用户以及计算机程序正确地读取和解析,并且具有容易阅读和维护的优点。


 为什么要学XML:

与其他格式兼容:XML是一种非常灵活的文本格式,可以轻松地与许多其他软件和语言一起使用。它通常被用作各种领域的数据交换格式,并被广泛应用于Web服务、数据库、电子商务、移动应用等领域。


处理复杂数据:XML在数据建模和存储方面非常强大,可以帮助处理和组织任意结构的数据。由于XML的可扩展性和丰富的标记语言,它可以轻松地表示复杂的数据关系和包含递归元素,使其成为处理数据密集型的应用程序的极佳选择。


易于理解和学习:XML使用标记和结构来定义文本中的数据,使其易于读取、解析和理解。它的语法简单明了,与HTML类似,因此易于学习和实现。


支持数据验证和数据交换:XML可以使用DTD或Schema等结构来验证数据,确保数据的正确性和完整性;同时,XML也可以用作各种系统之间的通用格式,便于系统之间的数据交换和互操作。


 XML的作用:

数据交换和存储:XML是一种通用的数据格式,可以用于数据交换、存储和传输,与Python、Java、PHP等各种编程语言和Web技术无缝集成,广泛应用于电子商务、金融、医疗、移动应用和半导体制造等领域。


数据建模和描述:XML可以用作数据建模语言,用于描述数据结构、元数据、文档和业务规则。它可以根据特定的需求定义合适的数据模式,并提供有效的数据字典和说明文档。


数据验证和处理:XML可以通过定义相应的DTD或Schema来验证和处理数据。这些定义规则可确保XML文档与特定模式或格式相匹配,并在应用程序处理和处理数据时更加可靠和稳定。


数据发布和检查: XML可以用于发布和共享信息,例如RSS、Atom等网站新闻源,以及SOAP、REST等Web服务。XML也可以用于检索和查询文档和数据库,如XPath和XQuery等查询语言。


          1.数据交互:

这段代码演示如何解析名为"employees.xml"的XML文件。每个employee元素都包含包括id、firstName和lastName在内的信息。在这个例子中,我们使用DOM解析器来读取XML数据,并将其转换为Java中的对象,以便在Java代码中进行操作。

public class XmlParserExample {
    public static void main(String[] args) {
        try {
            // 创建DOM Parser
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            // 解析XML文件
            Document doc = builder.parse("employees.xml");
            // 获取所有 employee 元素 
            NodeList employees = doc.getElementsByTagName("employee");
            // 遍历每个 employee 元素
            for (int i = 0; i < employees.getLength(); i++) {
                Element employee = (Element) employees.item(i);
                String id = employee.getAttribute("id");
                String firstName = employee.getElementsByTagName("firstName").item(0).getTextContent();
                String lastName = employee.getElementsByTagName("lastName").item(0).getTextContent();
                System.out.println("Employee " + id + ": " + firstName + " " + lastName);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}



       

2.做配置:

<?xml version="1.0" encoding="UTF-8"?>
<database>
    <server>localhost</server>
    <port>3306</port>
    <dbname>mydb</dbname>
    <username>user</username>
    <password>password</password>
</database>

 标准的XML格式:

XML标准指的是XML文档的结构和语法规范。XML标准由W3C制定和管理,主要由三个部分组成:XML、XML命名空间和XML模式。其中,XML指的是可扩展标记语言,是一种用于传输和存储数据的文本格式。

 

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <employee>
      <id>小狗子</id>
      <firstName>John</firstName>
      <lastName>Doe</lastName>
      <email>john.doe@example.com</email>
      <phone>123-456-7890</phone>
   </employee>
   <employee>
      <id>小流氓</id>
      <firstName>Jane</firstName>
      <lastName>Smith</lastName>
      <email>jane.smith@example.com</email>
      <phone>123-456-7890</phone>
   </employee>
</root>

二.元素定义:

XML元素,也称为XML标签,是XML文档的基本组成单元,是用于存储、传输和处理数据的标记符号。每个XML元素由开始标记、结束标记和中间的数据组成。开始标记和结束标记都是用一对尖括号"<" 和 “>” 包围的字符序列,中间的数据是元素的内容。


以下是XML元素的定义格式:

<element>content</element>

在这个格式中,<element>是元素的开始标记,</element>是结束标记,content是元素的内容。XML元素也可以没有内容,例如:

<empty-element/>

在这个例子中,使用斜杠和尖括号表示该元素没有内容。


XML元素可以具有属性,这些属性用于存储元素的附加信息。属性是元素的一个名称或值对,位于开始标记内。例如:

<book id="101">
    <title>The Great Gatsby</title>
    <author>F. Scott Fitzgerald</author>
    <year>1925</year>
</book>

在这个例子中,<book>元素具有一个id属性,该属性储存了该元素的唯一标识符。属性值须用引号(单引号或双引号)包围。


XML元素的命名遵循某些规则,包括:


名称必须以字母或下划线开头;

名称不能以数字或标点开头;

名称只能包含字母、数字、下划线、短横线、点、冒号和非ASCII字符;

名称必须在整个文档中唯一。

       在XML加入DTD声明

在XML中加入DTD声明

要在XML中加入DTD声明,可以在XML文件的开头添加以下行:

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

其中,<!DOCTYPE>是DTD声明的关键字,根元素名是XML文件中根元素的名称,DTD文件路径是DTD文件的路径。举例来说,假设XML文件的根元素为myroot,DTD文件名为mydtd.dtd,则在XML文件的开头应添加以下行:

<!DOCTYPE myroot SYSTEM "mydtd.dtd">


        元素分类:

             空元素:

DTD中的空元素是一种没有内容的元素。它们通常用于声明只有一个标记的元素。


DTD中可以使用“EMPTY”或“ANY”关键字来表示空元素。其中,"EMPTY"表示该元素没有子元素且没有内容,而"ANY"表示该元素允许包含任何内容。


例如,以下是定义一个空元素 “image” 的DTD:

<!ELEMENT image EMPTY>
<!ATTLIST image
    src     CDATA   #REQUIRED
    alt     CDATA   #IMPLIED
    width   CDATA   #IMPLIED
    height  CDATA   #IMPLIED
>

              文本元素:

DTD中的文本元素用于定义包含纯文本信息的元素,这些元素不能包含其他元素或标记,只能包含文本内容。


在DTD中可以使用“ (#PCDATA)”关键字表示文本元素。其中,“#PCDATA”代表解析器可以解析的“解析器数据”,即文本数据。


例如,以下是一个定义为文本元素的DTD示例:

<!ELEMENT message (#PCDATA)>

上述示例中,定义了一个名为 “message” 的元素,并使用 “(#PCDATA)”关键字来表示该元素只能包含纯文本内容,不能包含其他元素。


在XML文档中,可以使用文本元素来表示短语、说明、注释等纯文本内容。例如:

<message>Hello World!</message>

              混合元素:

DTD中可以使用混合模式来定义元素内容,即 XML 元素可以同时包含文本和其他元素。


在混合模式中,可以使用“(#PCDATA)”表示可以包含文本,同时也可以使用其他元素的名称表示可以包含其他元素。在语法中,可以使用“ | ”或“,”分隔符表示可以包含多种内容。


例如,以下示例中定义了一个混合元素:

<!ELEMENT person (#PCDATA | name | age | gender)*>

上述示例中,“person” 元素的内容可以包含任何次序的文本或者 “name”、“age” 和 “gender” 元素。其中“ * ”表示可以出现 0 次或多次。


在 XML 文档中,混合元素可以像下面这样使用:

<person>
   My name is <name>John Doe</name>.
   I am <age>30</age> years old and my gender is <gender>male</gender>.
</person>

上述示例中, “person” 元素的内容中混合了文本和三个其他元素。





        元素的额限制:

例如,以下是一个限制出现次数的 DTD 示例:

<!ELEMENT message (greeting, text, signature?)>

上述示例中,“ signature?” 代表该元素为可选元素,出现 0 次 或 1 次。


上述示例中,“ () ” 中的元素依次排列,表示在 XML 文档中, “ greeting ” 节点必须先出现, “ text ” 节点出现在 “ greeting ” 后面,最后可选地出现 “ signature ” 节点。


通过以上方式,我们可以在 DTD 中灵活地定义元素的出现次数和顺序。这有助于确保 XML 文档符合指定的格式和结构。


在元素类型定义中,可以使用括号和逗号来限制元素的出现顺序。例如,以下是一个限制元素出现顺序的 DTD 示例:

<!ELEMENT message (greeting, text, signature?)>
  1. 在 DTD 中,可以使用以下方式来限制元素的出现次数和顺序:
  2. 限制元素出现次数:
  3. 在元素类型定义中,可以使用以下符号来限制元素出现次数:
  4. “?”:表示该元素出现 0 或 1 次。
  5. “*”:表示该元素出现 0 次或任意多次。
  6. “+”:表示该元素必须出现至少一次。
  7. 限制元素出现顺序:

三.属性定义:

在XML DTD中,可以使用<!ATTLIST>声明来定义元素的属性,<!ATTLIST>用于定义一个元素可用的属性及其值域和默认值等信息,语法格式如下:

<!ATTLIST 元素名 
  属性名1 属性类型1 属性默认值1 
  属性名2 属性类型2 属性默认值2 
     ... 
  属性名n 属性类型n 属性默认值n>

其中,元素名为要定义属性的元素名称,属性名、属性类型和属性默认值分别为属性的名称、类型和默认值。每个属性的定义需占用一行,各个属性定义之间必须以空格或制表符分隔。


以下是一个例子:

<!ELEMENT book (title, author)>
<!ATTLIST book
          id CDATA #REQUIRED
          lang CDATA "en"
          edition CDATA "1">

语法:

<!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to (#PCDATA)>
  <!ELEMENT from (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body (#PCDATA)>
  <!ATTLIST note date CDATA #IMPLIED>
]>

     属性类型Type

      下面是几种常见的属性类型:

  1. CDATA:表示普通的字符串,即标准文本;
  2. NMTOKEN:表示不含空格或其他分隔符的标记名称,如元素和属性的名称;
  3. ID:表示一个唯一的标识符,不能重复,并且只能出现一次;
  4. IDREF:表示一个对文档中某个元素的唯一引用,只能引用元素ID;
  5. IDREFS:表示一个对文档中多个元素的唯一引用,可以引用多个元素ID,用空格分隔;
  6. ENTITY:表示一个外部实体的名称,与 ENTITY 声明一起使用;
  7. ENTITIES:表示多个外部实体的名称,可以用空格分隔;
  8. NOTATION:表示专门用于标识一种特定类型的属性值,与 PUBLIC 和 SYSTEM 声明一起使用。

属性类型 Type 需要在 DTD 中进行声明。例如,要声明 ID 和 CDATA 类型的属性:

1. <!ELEMENT person (name, email)>
2. <!ATTLIST person
3. id ID #REQUIRED
4. email CDATA #REQUIRED>

这个 DTD 将元素 person 定义为必须拥有 ID 和 email 属性,并且 ID 属性值必须是唯一的。

      属性描述:

XMLDTD 指的是 XML Document Type Definition,它是一种用于定义 XML 文档结构的语法规则。在 XMLDTD 中,可以使用属性描述来定义 XML 元素的属性。属性描述定义了属性的名称、数据类型、默认值和可选项,以及其他限制和规则。

属性描述可以包含以下内容:

  1. 属性名称:使用属性名称来定义属性。
  2. 属性数据类型:使用数据类型来限制属性的取值范围。
  3. 属性默认值:使用默认值来指定未提供属性值时的默认值。
  4. 属性可选项:使用可选项来定义属性是否必填。
  5. 属性其他限制和规则:使用其他限制和规则来定义属性的其他限制和规则,比如允许的最小值、最大值等。

例如,以下是一个示例 XMLDTD 的属性描述:

<!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
<!ATTLIST note date CDATA #IMPLIED priority (high|normal|low) "normal" >
]>

在上面的示例中,note 元素定义了两个属性:date 和 priority。其中 date 属性的数据类型是 CDATA,表示可以包含任意字符数据;priority 属性的数据类型是一个枚举类型,取值必须是 high、normal 或 low 之一。同时,priority 属性还指定了一个默认值 normal。

目录
相关文章
|
XML 存储 数据可视化
XML DTD原理及使用
是一种可扩展的标记语言,用于存储和交换数据,它被设计成具有简单、易于理解的格式,并能够方便地在不同的系统和应用程序之间共享数据。XML的语法规则类似于HTML,但XML的目的不仅仅是用于显示数据,更是用于描述数据的结构和关系。与HTML相比,XML更加严格和规范,它需要通过或RELAX NG等方式定义文档的结构,同时还可以使用命名空间和XSLT等技术来处理和转换XML文档。独立于任何特定的操作系统、平台或开发环境。可以与许多不同的编程语言和应用程序进行交互。
|
XML 开发框架 JSON
J2EE基础XML(dtd)
J2EE基础XML(dtd)
59 0
|
XML 存储 开发框架
J2EE之XML(dtd篇超详细)
J2EE之XML(dtd篇超详细)
56 0
|
XML JSON 数据格式
XML之DTD
XML之DTD
61 0
|
3月前
|
XML 数据格式
DTD和XML Schema之间的区别?
【8月更文挑战第22天】
66 0
|
6月前
|
XML 存储 数据格式
探索 DTD 在 XML 中的作用及解析:深入理解文档类型定义
DTD(文档类型定义)用于定义XML文档的结构和合法元素、属性。它允许不同团体就数据交换标准达成一致,并用于验证XML数据的有效性。DTD可通过内部声明(在XML文档内)或外部声明(在单独文件中)来定义。内部声明示例显示了如何定义`note`元素及其子元素的结构,而外部声明则引用外部DTD文件。元素、属性、实体和PCDATA/CDATA是XML构建模块。DTD中,元素通过ELEMENT声明定义,属性通过ATTLIST声明定义,实体声明提供特殊字符或外部资源的快捷方式。
113 0
|
XML 数据管理 数据处理
XML入门,之dtd属性与元素详解
XML入门,之dtd属性与元素详解
56 1
|
6月前
|
XML 设计模式 数据格式
XML中的DTD
XML中的DTD
39 0
|
11月前
|
XML 存储 设计模式
XML以及DTD详解
XML以及DTD详解
166 0
|
XML 存储 数据格式
XML之DTD
XML之DTD
86 0