首页 > 其他分享 >大二上假期学习——Day02

大二上假期学习——Day02

时间:2023-01-09 22:55:06浏览次数:43  
标签:xml 约束 解析 假期 Day02 元素 DTD 大二 属性

一、XML约束

1.作用:

约束xml文档的写法;对xml进行校验。

2.分类

1)DTD

1.注意:

默认DTD约束在浏览器中是关闭的,可以另外写一个html执行JavaScript脚本开启约束验证。

2.DTD语法:

1)如何在xml中引入DTD
1.外部引入:

可以将DTD的约束内容写在外置DTD文件中,这个文件的后缀必须为.dtd而文件保存必须用utf-8编码保存,再在xml文件中使用。

<!DOCTYPE 根元素名称 SYSTEM 文件的位置>

如果写的是SYSTEM表明当前引入DTD在当前文件系统中,后面指定的文件位置是当前硬盘中的位置。

<!DOCTYPE 文档根结点 PUBLIC "DTD名称" "DTD文件的URL">

如果写的是PUBLIC表明当前引入DTD在当前网络公共位置中,后面要指明DTD的名字和DTD所在网络位置URL地址。

2.内部引入:

直接在xml中书写DTD

  <!DOCTYPE 根元素名称 [

    dtd约束.....

  ]>

2)DTD语法 --了解 
1.元素

  <!ELEMENT 元素名称 元素约束>

  1)元素约束:

    1.存放类型:ANY/EMPTY

    2.元素:子元素的列表,将可以包含的子元素用小括号括起来。

    3.子元素之间可以使用逗号进行分割,表明子元素必须按照顺序出现。

    4.子元素之间可以使用竖线进行分割,表明子元素只能出现其中之一。

    #PCDATA 表明包含标签体

 

    + 表示一次或多次

    * 0次或多次

    ? 0次或1次

 

    可以使用小括号表示组的操作。

2.属性

  <!ATTLIST 元素名 

          属性名1 属性类型 属性约束

          属性名2 属性类型 属性约束

          .......

  >

  1)属性类型:

    CDATA:表示属性的值是一个普通字符串

    ENUMERATED:属性的值是一个枚举列表中的值

    ID:表明属性的值必须在整个文档中都是唯一的,如有重复的ID则校验不通过 ,ID属性的值只能由字母,下划线开始,不能使用数字开始,不能出现空白字符

  2)属性约束:

    #REQUIRED --表明当前属性是一个必须存在属性,如果这样的属性不存在则校验时会报错。

    #IMPLIED --表明当前属性是一个可选的属性,可以有也可以没有。

    #FIXED '固定值' --表明当前属性有一个固定值,这样的属性不需要进行赋值,自动就会取这个固定值为值,如果这样的属性指定了一个不是固定值的值,则校验报错。

    '默认值' --表明当前属性具有一个默认值,如果给了其他的值就用其他值,如果没有给值则取这个默认值。

3.ENTITY(实体)

  <!ENTITY > 就是对于一大段内容的引用,可以简化代码的复用

  1)引用实体:在xml中引用的实体叫做引用实体

    <!ENTITY 实体名称 "实体内容">

    &实体名称;

  2)参数实体:在DTD中引用的实体叫做参数实体

    <!ENTITY % 实体名称 "实体内容">

    &实体名称;

二、XML编程:利用java程序去增删改查(CRUD)xml中的数据

1.dom解析:

过程:形成一颗树,利用Node接口进行操作,树中对象都实现过Node接口

优点:

  1)十分便于进行增删改查的操作

  2)只需解析一次拿到dom对象后可以重复使用此对象,减少解析的次数

缺点:

  1)首次解析过程比较慢,需要将整个文档都解析完成后才能进行操作

  2)需要将整个树的内容都加载到内存中来,比较耗费内存,当文档过大时,这种解析方式对内存的损耗非常的严重

2.sax解析:

过程:解析器逐级解析文档,遇到元素触发事件处理器中的函数

优点:

  1)不需要等待整个xml加载到内存,当解析到某一部分时自动触发到对应的方法去做处理,处理的效率比较高

  2)不需要将整个文档加载到内存中,对内存的损耗比较少,无论多大的xml项目理论上都可以计算

缺点:

  1)每次解析都只能处理一次,下次再想处理还要重新解析

  2)只能进行查询不能进行增删改的操作

3.解析思想:

dom解析

sax解析

基于这两种解析思想市面上就有了很多的解析api:

sun jaxp 既有dom方式也有sax方式,并且这套解析api已经加入到j2se的规范中,意味着不需要导入任何第三方开发包就可以直接使用这种解析方式,但是这种解析方式效率低下。

dom4j 可以使用dom方式高效的解析xml

4.dom4j

导入开发包,一般只需要核心包,若需其它则再导入

流程:

标签:xml,约束,解析,假期,Day02,元素,DTD,大二,属性
From: https://www.cnblogs.com/sodamate/p/17034632.html

相关文章

  • 大二上假期学习——Day01
    一、JUnit测试1.利用@Test实现代码中函数的测试,实现不写主函数也可以测试 2.@Test后加入JUnit包,并且import,然后右侧就出现可用JUnit完成测试的函数列表,右键run3.左侧......
  • day02
    java的三大版本JavaSE标准版(桌面程序,控制台开发)基础核心javaME嵌入式开发(手机,家电)微缩版JAVAEE:企业级开发(web端,服务器开发)JDKJREJVMJDK:javadevelopmentkit用......
  • day02-Promise
    Promise1.Promise基本介绍Promise是异步编程的一种解决方案,可以解决传统Ajax回调函数嵌套问题。传统的Ajax异步调用在需要多个操作的时候,会导致多个回调函数嵌套,导致代......
  • Python学习day02
    一、用户交互1.猜年龄death_age=80name=input("yourname:")age=int(input("yourage:"))print("yourname"name)print("youcanstilllivefor"death_age-age"yea......
  • Java面试题Day02
    11.this和super的区别?this指向的是自身的一个对象,代表对象本身,super指向的是自己的一个超类对象,这个超类对象是最近的一个父类.this()调用的是本类其他构造方法,supe......
  • 前端网页设计day02
    目录元素之间的关系元素选择器伪类选择器伪元素属性选择器元素之间的关系父元素:直接包含子元素的元素子元素:直接被父元素包含的元素祖先元素:直接或间接包含后代元素的......
  • 2023所有假期
    2023所有假期,包含法定节假期和周六周日。20230101,20230102,20230207,20230108,20230114,20230115,20230121,20230122,20230123,20230124,20230125,20230126,20230127,202......
  • HTML培训课程-------Day02(表格和框架)
    表格在网页中表格是一种经常使用到得设计结构,就像表格的内容中可以包含任何的数据,如文字、图像、表单、超链接、表格等等,所有在HTML中可以使用的数据,都可以被设置在表格中,所......
  • 假期在家随笔1
    已经很久没学计算机啦555因为大一了,不过在学校学的是cad这样子,但是其实也不是跟着老师在学,而是等课后有的时候学长会监督我画一些图由此进行学习进步哈哈。不过老师偶尔也......
  • 【Python界面化小程序】注意 | 假期火车票查询系统已完成啦,出行注意看这里哦→
    导语周末、假期来了,七夕也快到了,又到一年中最一票难求的时候了! 那些假期想回家、过节异地恋的小可爱们,能准时抢到回家(约会对象)的城市票嘛?为了让大家尽早的和亲朋好友家人团......