一、xml语法

  1.文档声明

    用来声明xml的基本属性,用来指挥解析引擎怎样去解析当前xml

    通常一个xml都要包括而且仅仅能包括一个文档声明

    xml的文档必须在整个xml的最前面,在文档声明之前不能有不论什么内容

    

    <?xml version="1.0" ?>--version是必须存在的属性,表明当前xml所遵循规范的版本号,眼下位置都写1.0就能够了

    <?xml version="1.0" encoding="utf-8" ?>--encoding用来仅仅会解析引擎在解析xml时使用的编码,一定要保证xml格式的数据在保存时使用的编码和解析时使用的编码必须一致,才不会有乱码问题

    <?xml version="1.0" encoding="utf-8" standalone="yes" />--standalone属性用来指明当前xml是否是一个独立的xml,默认值是yes表明当前文档不须要依赖于其它文档,假设当前文档依赖其它文档而存在则须要将此值设置为no

    

  2.元素

    一个xml标签就是一个元素

    一个标签分为開始标签和结束标签

    在開始标签和结束标签之间能够包括文本内容,这种文本内容叫做标签体

    假设标签的開始标签和结束标签之间不包括标签和子标签则能够将開始标签和结束标签进行合并,这种标签就叫做自闭标签

    一个标签中也能够包括随意多个子标签,可是一定要注意标签一定要合理嵌套

    一个格式良好的xml要包括而且仅仅能包括一个根标签,其它的标签都应该是这个标签的子孙标签

      

      区分大写和小写,比如。<P>和<p>是两个不同的标记。

      不能以数字或标点符号或"_"开头。

      不能以xml(或XML、或Xml 等)开头。

      不能包括空格

      名称中间不能包括冒号(:)。





  

  3.属性

    一个标签能够有多个属性,每一个属性都有它自己的名称和取值,比如:

    <china capital="beijing"/>

    属性的名在定义时要遵循和xml元素同样的命名规则

    属性的值须要用单引號或双引號括起来





 4. 凝视

  <!-- 凝视内容 -->

  凝视能够出如今xml文档的任何位置除了整个文档的最前面.不能出如今文档声明之前

  凝视不能嵌套凝视

  

  

  5.CDATA区/转义字符

    <![CDATA[转义的内容]]>:

      当XML中一段内容不希望被解析器解析时能够使用CDATA区将其包住

      当解析器遇到CDATA区时会将其内容当作文本对待。不会进行解析

      语法:<![CDATA[ 内容 ]]>

     

   转义字符:

    &  --> &amp;

    <  --> &lt;

    >  --> &gt;

    "  --> &quot;

    '  --> &apos;

    





  6.处理指令

    处理指令,简称PI (processing instruction)。处理指令用来指挥解析引擎怎样解析XML文档内容。

    <?

xml-stylesheet type="text/css" href="1.css"?

>









  

二、dtd语法 --- 了解语法,看得懂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 元素名称 元素约束>

            元素约束:

                存放类型:ANY/EMPTY

元素约束:子元素的列表,将能够包括的子元素用小括号括起来

子元素之间能够使用逗号进行切割,表明子元素必须依照顺序出现

子元素之间能够使用竖线进行切割,表面子元素出现当中之中的一个

#PCDATA 表明包括标签体





+ 表示一次或多次

* 0次或多次

?

0次或一次





也能够使用小括号进行组的操作









      (2)属性

<!ATTLIST 元素名 

属性名 属性类型 属性约束

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

......

>





属性类型:

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

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

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





属性约束:

#REQUIRED  ---
表明当前属性是一个必须存在的属性,假设这种属性不存在则在校验时会报错

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

#FIXED '固定值' --- 表明当前属性具有一个固定值,这种属性不须要进行赋值,自己主动就会取这个固定值为值.假设这种属性指定了一个不是固定值的值则校验报错

'默认值'  ---  表明当前属性具有一个默认值,假设给了其它的值就用其它值,假设没有给值则取这个默认值









(3)ENTITY(实体)

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





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

<!ENTITY 实体名称 “实体内容” >

&实体名称;





參数实体:在dtd中引用的实体叫做參数实体

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

%实体名称;









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



解析思想:

dom解析

sax解析

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

sun jaxp既有dom方式也有sax方式,而且这套解析api已经增加到j2se的规范中,意味这不须要导入不论什么第三方开发包就能够直接使用这样的解析方式.可是这样的解析方式效率低下,没什么人用.

dom4j 能够使用dom方式高效的解析xml.

pull



!!dom4j

导入开发包,通常仅仅须要导入核心包就能够了,假设在使用的过程中提示少什么包到lib文件夹下在导入缺少的包就可以









四、Schema -- xml的约束技术  --- 须要掌握名称空间的概念,会读简单的Schema就能够了,不须要大家自己会写





Schema是xml的约束技术,出现的目的是为了替代dtd

本身也是一个xml,很方便使用xml的解析引擎进行解析

对名称空间有很好的支持

支持很多其它的数据类型,而且支持用户自己定义数据类型

能够进行语义级别的限定,限定能力大大强于dtd

相对于dtd不支持实体

相对于dtd复杂的多,学习成本比較的高



怎样在xml中引入Schema --- !!!!!名称空间的概念:全世界独一无二的名字,用来唯一的标识某个资源,一般是公司的域名,仅仅是名字而已并不真的表示资源的位置.





    

    ~~~ Schema的语法---參照Schema的文档,了解就可以

黑马day01 笔记的更多相关文章

  1. python21期day01笔记总结

    2019.3.27 S21 day01笔记总结 一.计算机基础知识 1.计算机组成 用户 应用软件程序开发——用到了两个方面: 1语法 : 2解释器.编译器.虚拟机: 操作系统的开发 硬件组成 2.操 ...

  2. Spring day01笔记

    struts:web层,比较简单(ValueStack值栈,拦截器) hibernate:dao层,知识点杂 spring:service层,重要,讲多少用多少 --> [了解]   sprin ...

  3. Hibernate day01笔记

    框架体系结构   hibernate入门 ORM框架 Hibernate是一个数据持久化层的ORM框架. Object:对象,java对象,此处特指JavaBean Relational:关系,二维表 ...

  4. 毕向东day01笔记--dos-jdk-jre-环境变量等

    1.常用的dos命令,md,rd,dir,c:(进入C盘),del,set classpath 2.JDK和JRE之间的区别: JDK包含JER,JRE包含JVM. 3.环境变量的配置,静态配置--b ...

  5. day01笔记

    linux基本命令的学习: 1.查看主机名 hostname 2.修改主机名 hostnamectl set-hostname s16ds 3.linux命令提示符 [root@s16ds ~]# # ...

  6. 黑马day01 xml 的解析方式

    XML编程:利用java程序去增删改查(CRUD)xml中的数据 解析思想: dom解析 sax解析 基于这两种解析思想市面上就有了非常多的解析api sun jaxp既有dom方式也有sax方式,而 ...

  7. Python 之路 Day01 笔记-什么是变量,常量等

    变量 变量 是 为了存储 程序运算过程中的一些中间 结果,为了方便日后调用 变量的命名规则 1. 要具有描述性 2. 变量名只能'_','数字','字母'组成,不可以是空格或特殊字符(#?<., ...

  8. git day01笔记 常用操作命令 快照 推送 拉取

    ansible 批量在远程主机上执行命令或者脚本 git   做版本控制的一个工具 ## git操作命令: 工作区:当前编辑的区域 缓存区:add 之后的区域 本地仓库:commit之后的区域 远程仓 ...

  9. coco2d学习day01 精灵分析

    day01笔记 using namespace cocos2d; == USING_NS_CC; 一般用后面的 #ifndef __MYLAYER_H__ #define __MYLAYER_H__ ...

随机推荐

  1. CentOS7 搭建Kafka(一)zookeeper篇

    CentOS7 搭建Kafka(一)zookeeper篇 近几年当红小生Kafka备受各路英雄好汉追捧,一点不比老前辈RabbitMQ和ActiveMQ差,因为流行,所以你就得学啊:我这么懒,肯定是不 ...

  2. 使用protobuf传递网络消息

    1.获取protobuf及相关依赖 新建install_protobuf.bat脚本,粘贴以下代码 ::参考文章 https://github.com/google/protobuf/blob/mas ...

  3. nginx单机1w并发设置

    关闭keep-live,提高链接回收 keeplive_timeout 0; events{ worker_connections 1024; } more /proc/sys/net/core/so ...

  4. Oracle 关于oracle自带的行转列函数

    前言: 环境是java+hibernate+oracle11g 目标是将某表中根据id分组后将name字段的值拼接到一列中,且用“,“进行分割 试过用 wm_concat() 结合 group by ...

  5. jq 替换DOM layeui 不刷新

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  6. Javascript语法,变量类型,条件,循环语句,函数,面向对象

    1.JavaScript代码革两种存在形式: <!-- 方式一 --> <script type='txt/javascript' src='/js/comment.js'>& ...

  7. Luogu P1365 WJMZBMR打osu! / Easy

    概率期望专题首杀-- 毒瘤dp 首先根据数据范围推断出复杂度在O(n)左右 但不管怎么想都是n^2-- 晚上躺在床上吃东西的时候(误)想到之前有几道dp题是通过前缀和优化的 而期望的可加性又似乎为此创 ...

  8. React Native未来导航者:react-navigation 使用详解

    该库包含三类组件: (1)StackNavigator:用来跳转页面和传递参数 (2)TabNavigator:类似底部导航栏,用来在同一屏幕下切换不同界面 (3)DrawerNavigator:侧滑 ...

  9. 【Python基础】条件语句

    Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非0和非空(null)值为tr ...

  10. 【剑指Offer】55、链表中环的入口结点

      题目描述:   给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null.   解题思路:   本题是一个比较典型的链表题目,难度适中.首先,对于大多人来说,看到这道题是比较开心的 ...