XML---dtd

简介: XML---dtd

1.什么是XML

  • XML 指可扩展标记语言
  • XML 是一种很像HTML的标记语言。
  • XML 的设计宗旨是传输数据,而不是显示数据
  • XML 标签没有被预定义。您需要自行定义标签

1.2XML的作用

  • 企业级:将之前的开发效率提升了10倍
  • 效率提升:框架
  • 框架:设计模式+反射+配置文件
  • 配置文件:XML文件。
  • XML文件:dtd约束+解析+建模

1.3XML的格式:

  • 有且只有一个根元素
  • XML标签大小写正确的区分
  • 正确使用结束标签
  • 正确嵌套标签
  • 使用了合法的标签
  • 定义有效的属性

代码:

<?xml version="1.0" encoding="UTF-8"?>
<rootElement>
   <childElement1>value1</childElement1>
   <childElement2>value2</childElement2>
   <childElement3>value3</childElement3>
</rootElement>
<book category="Children">
   <title lang="en">Harry Potter</title>
   <author>J.K. Rowling</author>
   <year>2005</year>
   <price>29.99</price>
</book>

2.元素定义

2.1元素的特点:

  • 元素必须有开始和结束标记,即使是空元素也要用自闭合标记表示。
  • 元素不能交叉定义
  • 元素名是区分大小写的,常见的命名规则是使用驼峰命名法
  • 属性名是区分大小写的,属性值也应该使用引号。
  • 元素的文本内容可以包含各种字符包括换行制表等,但需要进行转义

2.2元素的声明:

  需要在XML声明加入了DTD

<!DOCTYPE root []>

2.3元素的分类:

  • 空元素 <!ELEMENT element-name EMPTY>
  • 文本元素 <!ELEMENT element-name (#PCDATA)>
  • 混合元素 <!ELEMENT element-name (e1,e2)>

2.4元素的限制:

次数:     0或1 用 ” ? “代替

               0~N:0次到无数次  用 ” * “ 代替

               1~N:至少一次 或无数次  用 ” + “ 代替

                 |    : 或

代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 元素的约束 -->
<!DOCTYPE persons [
  <!-- 根节点下有的节点 -->
  <!ELEMENT persons (person*)>
  <!-- 节点下的元素 -->
  <!ELEMENT person (name,age,contact,br?)>
  <!-- 文本元素 -->
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT age (#PCDATA)>
  <!-- 元素中可有的子元素 -->
  <!ELEMENT contact (phone|email)>
  <!-- 文本元素 -->
  <!ELEMENT phone (#PCDATA)>
  <!ELEMENT email (#PCDATA)>
  <!-- 空元素 -->
  <!ELEMENT br EMPTY>
]>
<persons>
  <person>
    <name>张小明</name>
    <age>10</age>
    <contact>
      <phone>1234567</phone>
    </contact>
    <br/>
  </person>
  <person>
    <name>张大明</name>
    <age>35</age>
    <contact>
      <email>123@qq.com</email>
    </contact>
  </person>
</persons>

3.属性定义

语法:

<!ATTLIST  element-name att_name  type  desc>

注意:属性的约束也是需要声明的,所有也是写在  <!DOCTYPE root []> 里面

       3.1性类型 type

ID

(男|女)

CDATA

IDREF(reference)

       2.属性描述

#REQUIRED 必填

#IMPLIED   非必填

默认值,只有type为(男|女)类型或者单选时 desc才可以用默认值方式

示例如下:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 元素的约束 -->
<!DOCTYPE persons [
    <!-- 根节点下有的节点 -->
    <!ELEMENT persons (person*)>
    <!-- 节点下的元素 -->
    <!ELEMENT person (name,age,contact,br?)>
    <!-- 文本元素 -->
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT age (#PCDATA)>
    <!-- 元素中可有的子元素 -->
    <!ELEMENT contact (phone|email)>
    <!-- 文本元素 -->
    <!ELEMENT phone (#PCDATA)>
    <!ELEMENT email (#PCDATA)>
    <!-- 空元素 -->
    <!ELEMENT br EMPTY>
    <!-- 属性的约束 -->
    <!-- 给person设置属性 -->
    <!ATTLIST person
        pid ID #REQUIRED
        sex (男|女) "男"
        qq CDATA #IMPLIED
        parent IDREF #IMPLIED
    >   
]>
<persons>
    <person pid="p1" sex="男" qq="aaa" parent="p2">
        <name>张小明</name>
        <age>10</age>
        <contact>
            <phone>1234567</phone>
        </contact>
        <br/>
    </person>
    <person pid="p2">
        <name>张大明</name>
        <age>35</age>
        <contact>
            <email>123@qq.com</email>
        </contact>
    </person>


目录
相关文章
|
3月前
|
传感器 API Android开发
雷电模拟器防检测工具, 模拟器防检测 伪装手机,安卓模拟器防检测工具
硬件特征检测通过CPUID指令和显卡信息判断虚拟环境110 系统环境检测通过查找模拟器特有文件和进程112
|
7月前
|
SQL 缓存 分布式计算
vivo 湖仓架构的性能提升之旅
聚焦 vivo 大数据多维分析面临的挑战、StarRocks 落地方案及应用收益。 在 **即席分析** 场景,StarRocks 使用占比达 70%,查询速度提升 3 倍,P50 耗时从 63.77 秒缩短至 22.30 秒,查询成功率接近 98%。 在 **敏捷 BI** 领域,StarRocks 已完成 25% 切换,月均查询成功数超 25 万,P90 查询时长缩短至 5 秒,相比 Presto 提升 75%。 在 **研发工具平台** 方面,StarRocks 支持准实时数据查询,数据可见性缩短至 3 分钟,查询加速使 P95 延迟降至 400 毫秒,开发效率提升 30%。
vivo 湖仓架构的性能提升之旅
|
5月前
|
存储 开发框架 数据管理
【HarmonyOS Next之旅】ArkTS语法(一)
【HarmonyOS之旅】ArkTS语法(一)
411 12
|
3月前
|
人工智能 算法 机器人
人工智能浪潮下的人类社会:重构秩序,还是共舞未来?
人工智能正以前所未有的速度改变社会结构,从工具变为行为参与者。它不仅提升效率,更具备学习、生成与决策能力,重塑就业、法律、财富分配乃至国家治理模式。面对AI风暴,唯有制度创新与全民共享,方能避免技术垄断与社会失衡。
82 0
|
5月前
|
机器学习/深度学习 人工智能 算法
“别让模型坑了人”:数据科学中的那些伦理雷区
“别让模型坑了人”:数据科学中的那些伦理雷区
120 16
|
11月前
|
人工智能 运维 NoSQL
云栖大会|多模+一体化,构建更高效的AI应用
在2024年云栖大会「NoSQL数据库」专场,多位知名企业和阿里云瑶池数据库团队的技术专家,共同分享了阿里云Lindorm、Tair、MongoDB和MyBase的最新进展与实践。Tair推出Serverless KV服务,解决性能瓶颈和运维难题;Lindorm助力AI和具身智能时代的多模数据处理;MongoDB云原生化提升开发效率;MyBase One打破云边界,提供云边端一体化服务。这些技术进展和最佳实践,展示了阿里云在NoSQL数据库领域的创新能力和广泛应用前景。
|
7月前
|
编解码 算法 安全
无感化健康监测,日常使用马桶即可获取心脏健康报告,提升生活品质与安全感
WLEC2模块通过“硬件+算法+云端”的全链路设计,将医疗级心电监测能力融入智能马桶,为用户提供便捷、精准的健康管理服务,同时为厂商提供高可靠性、低成本的集成方案
|
SQL 自然语言处理 关系型数据库
PolarDB上实现一个自然语言查询系统
PolarDB上实现一个自然语言查询系统
|
算法 NoSQL Java
Java实战:分布式ID生成方案
在分布式系统的设计与开发过程中,如何生成全局唯一、有序且高可用的ID是一个绕不开的核心问题。尤其是在电商、社交网络、金融交易等领域,ID不仅是业务数据的重要标识,还可能直接影响系统的稳定性和扩展性。本文将深入剖析分布式ID生成方案的设计原则、常见算法,并通过Java示例展示一种可行的实现方式。
465 2
|
安全 网络协议 网络安全

热门文章

最新文章