学东西怎么学,是什么,能做什么,怎么去做!!

1.xml的简介

1.eXtensible Markup Language:可扩展标记型语言

  • 标记型语言:html是标记型语言

    • 也是使用标签来操作
  • 可扩展
    • html里面的标签是固定,每个标签都有特定的含义<h1> <br/> <hr/>
    • 标签可以自己定义,可以写中文的标签<person></person> <猫></猫>

2.xml用途

  • html是用于显示数据,xml也可以显示数据(不是主要功能)
  • xml主要功能,为了存储数据

3.xml是w3c组织发布的技术

4.xml有两个版本 1.0 1.1

  • 使用都是1.0版本,(1.1版本不能向下兼容)

2.xml的应用

1.不同的系统之间的传输数据

2.用来表示生活中有关系的数据

3.经常用在配置文件

  • 比如现在连接数据库,肯定知道数据库的用户名和密码,数据库名称
  • 如果修改数据库的信息,不需要修改源代码,只要修改配置文件就可以了

3.xml的语法

1.xml的文档声明

* 创建一个文件 后缀名是 .xml
* 如果写xml,第一步 必须要有一个文档声明(写了文档声明之后,表示写xml文件的内容)
* `<?xml version="1.0" encoding="utf-8" ?>`
* 文档声明必须写在 第一行 第一列
* 属性
* version:xml的版本 1.0(使用) 1.1
* encoding:xml编码 gbk utf-8 iso8859-1(不包含中文)
* standalone:是否需要依赖其他文件 yes/no
* xml的中文乱码问题解决
* 画图分析乱码问题
* 保存时候的编码和设置打开时候的编码一致,不会出现乱码

2.定义元素(标签)

3.定义属性

4.注释

5.特殊字符

6.CDATA区(了解)

7.PI指令(了解)

4.xml的元素定义

1.标签定义

  • 标签定义有开始必须要有结束:<person></person>
  • 标签没有内容,可以在标签内结束:<aa/>
  • 标签可以嵌套,但必须是包含形式的嵌套
  • 一个xml中,只能有一个根标签,其他标签都是这个标签下面的标签
  • 在xml中把空格和换行都当成内容来解析,下面这两段代码含有是不一样的。
<aa>1111111111</aa>
------
<aa>
1111111111
</aa>
  • xml标签可以是中午
  • xml中标签的名称规则
    • xml代码区分大小写
    • xml的表情不能以数字和下划线(_)开头
    • xml的标签不能以xml,XML,Xml等开头
    • xml的标签不能包含空格和冒号

5.xml中属性的定义

1.html是标记型文档,可以有属性

2.xml也是标记型文档,可以有属性

3.属性定义的要求

* 一个标签上可以有多个属性
* 属性名称不能相同
* 属性名称和属性值之间使用= ,属性值使用引号包起来(可以是单引号,也可以是双引号)
* xml属性的名称规范和原始的名称规范一致

6.xml中的注释

1.写法<!-- xml注释 -->

2.注释不能嵌套

3.注释也不能放到第一行,第一行第一列必须放文档声明

7.xml中的特殊字符

1.如果想要在xml中显示a<b,不能正常显示,因为把<当作标签

2.如果就想要显示,需要对特殊字符 < 进行转义

特殊字符    1替代符号
& &amp;
< &lt;
> &gt;
" &quot;
' &apos;

8.CDATA区

1.可以解决多个字符都需要转义的操作 if(a<b && b<c && d>f) {}

2.把这些内容放到CDATA区里面,不需要转义了

3.写法<![CDATA[ if(a<b && b<c && d>f) {} ]]>

4.把特殊字符,当作文本内容,而不是标签

9.PI指令(处理指令)

1.可以在xml中设置样式

2.写法:<?xml-stylesheet type="text/css" href="css的路径">

3.设置样式,只能对英文标签名称起作用,对于中文的标签名称不起作用的。

10.xml的语法的总结

1.所有 XML 元素都须有关闭标签

2.XML 标签对大小写敏感

3.XML 必须有正确地嵌套顺序

4.XML 文档必须有根元素(只有一个)

5.XML 的属性值须加引号

特殊字符必须转义 --- CDATA

6.XML 中的空格、回车换行会解析时被保留

11.xml的约束

1.为什么需要约束

比如现在定义一个person的xml文件,只想要这个文件里面保存人的信息,比如name age等,但是如果在xml文件中写了一个标签<猫>,发现可以正常显示,因为符合语法规范,但是猫肯定不是人的信息,xml的标签是自定义的,需要技术来规定xml中只能出现的元素,这个时候需要约束。

2.xml的约束技术:dt的约束 和 schema约束

12.dtd的快速入门

1.创建一个文件 后缀名 .dtd

步骤:

  • 看xml中有多少个元素,有几个元素,在dtd文件中写几个<!ELEMENT>
  • 判断元素是简单元素还是复杂元素
    • 复杂元素:有子元素的元素 <!ELEMENT 元素名称 (子元素)>
    • 简单元素:没有子元素 <ELEMENT 元素名称 (#PCDATA) >
  • 需要在xml文件中引入dtd文件 <!DOCTYPE 根元素名称 SYSTEM "dtd文件的路径">

2.打开xml文件使用浏览器打开的,浏览器只负责校验xml的语法,不负责校验约束

3.如果想要校验xml的约束,需要使用工具(myeclipse工具)

4.打开myeclipse开发工具

* 创建一个项目 test
* 在test的src目录下面创建一个xml文件和一个dtd文件
* 当xml中引入dtd文件之后,比如只能出现name age,多写了一个a,会提示出错

13.dtd的三种引入方式

1.引入外部的dtd文件 <!DOCTYPE 根元素名称 SYSTEM "dtd"路径>

2.使用内部的dtd文件

<!DOCTYPE person [
<!ELEMENT person (name,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
]>

3.使用外部的dtd文件(网络上的dtd文件)

  • <!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD文档的URL">
  • 后面学到的框架struts2使用配置文件 使用 外部的dtd文件
  • <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">

14.使用dtd定义元素

1.语法:<!ELEMENT 元素名 约束>

2.简单元素:没有子元素的元素

  • <!ELEMENT name (#PCDATA)>

    • (#PCDATA):约束name是字符串类型
    • EMPTY :元素为空(没有内容)
    • ANY:任意

      3.复杂元素:
  • <!ELEMENT person (name,age,sex,school)>

    • 子元素只能出现一次
  • <!ELEMENT 元素名称 (子元素>

  • 表示子元素出现的次数

    • + 表示一次或者多次
    • ? 表示零次或者一次
    • * 表示零次或者多次
  • 子元素直接使用逗号进行隔开

    • 表示元素出现的顺序
  • 子元素直接使用|进行隔开

    • 表示元素只能出现其中的任意一个

15.使用dtd定义属性

1.语法:<!ATTLIST 元素名称 属性名称 属性类型 属性的约束>

2.属性类型

  • CDATA:字符串
  • 枚举:表示只能在一定的范围内出现值,但是只能每次出现其中的一个
  • ID:值只能是字母或者下划线开头

3.属性的约束

  • #REQUIRED:属性必须存在
  • #IMPLIED:属性可有可无
  • #FIXED:表示一个固定值 #FIXED "AAA"
    • 属性的值必须是设置的这个固定值
  • 直接值
    • 不写属性,使用直接值
    • 写了属性,使用设置那个值

16.实体的定义

1.语法: <!ENTITY 实体名称 "实体的值">

  • <!ENTITY TEST "HAHAHEHE">
  • 使用实体 &实体名称; 比如 &TEST;

2.注意

  • 定义实体需要写在内部dtd里面,如果写在外部的dtd里面,有某些浏览器下,内容得不到。

17.xml的解析的简介(写到java代码)

1.xml是标记型文档

2.js使用dom解析标记型文档?

  • 根据html的层级结构,在内存中分配一个树形结构,把html的标签,属性和文本都封装成对象
  • document对象、element对象、属性对象、文本对象、Node节点对象

3.xml的解析方式(技术):dom和sax

  • 画图分析使用dom和sax解析xml过程

  • dom方式解析

    • 根据xml的层级结构在内存中分配一个树形结构,把xml的标签,属性和文本都封装成对象
    • 缺点:如果文件过大,造成内存溢出
    • 优点:很方便实现增删改操作
  • sax方式解析

    • 采用事件驱动,边读边解析

      • 从上到下,一行一行的解析,解析到某一个对象,返回对象名称
    • 缺点:不能实现增删改操作
    • 优点:如果文件过大,不会造成内存溢出,方便实现查询操作

    4.想要解析xml,首先需要解析器

    • 不同的公司和组织提供了针对dom和sax方式的解析器,通过api方式提供

      • sun公司提过了针对dom和sax解析器 jaxp
      • dom4j组织,针对dom和sax解析器 dom4j(*** 实际开发中)
      • jdom组织,针对dom和sax解析器 jdom

JavaWeb_05_xml相关&dtd快速入门的更多相关文章

  1. JAVA WEB快速入门之从编写一个基于SpringBoot+Mybatis快速创建的REST API项目了解SpringBoot、SpringMVC REST API、Mybatis等相关知识

    JAVA WEB快速入门系列之前的相关文章如下:(文章全部本人[梦在旅途原创],文中内容可能部份图片.代码参照网上资源) 第一篇:JAVA WEB快速入门之环境搭建 第二篇:JAVA WEB快速入门之 ...

  2. 【个人笔记】002-PHP基础-01-PHP快速入门-02-PHP语言相关介绍输

    002-PHP基础-01-PHP快速入门 02-PHP语言相关介绍 1.PHP是什么 Hypertext Preprocessor超文本预处理器 是一种通用开源脚本语言 Personal Home P ...

  3. SuperSocket快速入门(二):启动程序以及相关的配置

    如何快速启动第一个程序 既然是快速入门,所以,对于太深奥的知识点将不做讲解,会在后续的高级应用章节中,会对SS进行拆解.所有的实例90%都是来自SS的实例,外加本人的注释进行讲解. 一般应用而言,你只 ...

  4. SpringMvc_快速入门,深入分析

    目录  一.前言二.spring mvc 核心类与接口三.spring mvc 核心流程图 四.spring mvc DispatcherServlet说明 五.spring mvc 父子上下文的说明 ...

  5. Spring MVC 教程,快速入门,深入分析

    http://elf8848.iteye.com/blog/875830/ Spring MVC 教程,快速入门,深入分析 博客分类: SPRING Spring MVC 教程快速入门  资源下载: ...

  6. Spring_MVC_教程_快速入门_深入分析

    Spring MVC 教程,快速入门,深入分析 博客分类: SPRING Spring MVC 教程快速入门  资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf Spring ...

  7. Hibernate第一篇【介绍Hibernate,简述ORM,快速入门】

    前言 前面已经学过了Struts2框架了,紧接着就是学习Hibernate框架了-本博文主要讲解介绍Hibernate框架,ORM的概念和Hibernate入门 什么是Hibernate框架? Hib ...

  8. Maven3 快速入门

    Maven3 快速入门 Maven 是目前大型项目构建的必备知识.本章会通过介绍 Maven 的作用,Maven 的基本语法,以及搭建企业级项目架构来快速入门 Maven .前两部分是理论知识只需要了 ...

  9. springMVC学习总结(一)快速入门

    springMVC学习总结(一)快速入门 一.初步认识 springMVC执行流程 主要组件 DispatcherServlet(中央控制器) 配置在web.xml中的前端控制器,客户端请求的入口,调 ...

随机推荐

  1. win32 UNICODE 支持

    #include <string> #ifdef _UNICODE #define tstring std::wstring #define __T(quote) L##quote #el ...

  2. Poj_1011_Sticks(剪枝)

    一.Description 乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过50个长度单位.然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度. ...

  3. border-radius实现圆弧阴影效果

    1 原理 利用border-radius实现一个圆弧边的矩形,并添加box-shadow,然后放在目标元素的下方 demo: html <div class="demo1"& ...

  4. js关于为DOM对象添加自定义属性的方式和区别

    DOM对象的三种在添加自定义属性的方式 一是 通过 “.”+“属性名” 二是 setAttribute()(getAttribute()获取) 三是 直接在元素标签上加属性  如:<div  n ...

  5. CI框架3.0版本以后,前后台分离的方法。

    笔者认为,CI框架官方其实并没有考虑这个前后台分离的问题,所以没有官方的分离方法.而且,2.0版本的分离,也被官方认为这是一个bug.所以在前后台分离这个问题上,其实并不如thinkphp框架. 在C ...

  6. Mathematics Base - Tensor

    以下是我对张量的理解,备注是具体解释,Xmind导出的图片没法显示出来,主要还是将张量间的关系画出来,方便理解. 图1 张量

  7. vim配置----YouCompleteMe配置

    YouCompleteMe是一个功能极强的自动补全插件,安装这个插件折磨了我好久,找了很多博客查看都无果,最后还是感谢stack overflow.和其它的一些插件相比,YCM能够基于语法来给出相应的 ...

  8. 用 Heapster 监控集群

    Heapster 是 Kubernetes 原生的集群监控方案.Heapster 以 Pod 的形式运行,它会自动发现集群节点.从节点上的 Kubelet 获取监控数据.Kubelet 则是从节点上的 ...

  9. poj 2769 感觉♂良好 (单调栈)

    poj 2769 感觉♂良好 (单调栈) 比尔正在研发一种关于人类情感的新数学理论.他最近致力于研究一个日子的好坏,如何影响人们对某个时期的回忆. 比尔为人的一天赋予了一个正整数值. 比尔称这个值为当 ...

  10. To the max(求最大子矩阵和)

    To the Max Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 47985   Accepted: 25387 Desc ...