验证一个xml是否正确,首先是标签是否成对出现,然后是是否遵从DTD规范。

DTD或者后来的schema都是限制xml的标签的,完全可以自定义。这里的限制指的是,根节点是什么,子节点又是什么,这些节点又有什么属性,完全遵从DTD。

xml的属性必须用引号。

<![CDATA[……]]>cdata区,表示里面的数据完整显示,不存在什么特殊字符不要通过转义的。

<?xml version="1.0" encoding="utf-8" standalone="yes">

上面这句的yes指没有与之匹配的DTD,

如果是no的话指有可能有与之匹配的DTD。

当你要在内容里面保留特殊符号比如:回车,空格,TAB的时候建议用<![CDATA[……]]>就可以了,当CDATA区里面有]]>的时候,最后那个用&gt实体字符。

实体码

>      &gt

<      &lt

&      &amp

"       &quot

'        &apos

所有的xml的根节点都是“/”,你就想着,最上面层节点上还有一个“/”节点。这个只是点是在马士兵的xml视频77,15分时看到

两种不同的xml分析模型:(不必掌握,知道有这么2个东西,用到在查)

1、DOM--所有数据位于内存

2、SAX--流程性分析,不必把所有的数据Load到内存中,可分析大型的xml文件,常用于Server-side的xml-xhtml转换。

简易元素无法拥有属性。假如某个元素拥有属性,它就会被当作某种复合类型。但是属性本身总是作为简易类型被声明的。

注意:编写schema的时候,要将属性的设定,放在sequence之后。

当要扩展简单属性的时候

<title lang="en">Learning XML</title> 达到这种效果的时候,可以这么写

<element name="title">
  <complexType>           //不管什么类型,扩展了都是复合的了
    <simpleContent>   //简单类型的扩展
      <extension base="string">  //基于什么类型的扩展
        <attribute name="lang" type="string"></attribute>
      </extension>
    </simpleContent>
  </complexType>
</element>

//复合类型的扩展

<complexType name="z">
  <sequence>
    <element name="color1" default="red" type="string" minOccurs="0"></element>
    <element name="color2" type="string" fixed="black" minOccurs="0"></element>
  </sequence>
</complexType>

<complexType name="zzz">
  <complexContent>     //复合类型的扩展
    <extension base="tns:z">
      <choice>
        <element name="color3" type="string" minOccurs="0"></element>
        <element name="color4" type="string" minOccurs="0"></element>
      </choice>
    </extension>
  </complexContent>
</complexType>

限定只限于普通类型,因为不管复合类型最终的一层都是普通类型

<simpleType name="zz">
  <restriction base="string"> //基于什么类型的限定
    <enumeration value="red1" />
    <enumeration value="red2" />
    <enumeration value="red3" />
    <enumeration value="red4" />
  </restriction>
</simpleType>

<letter>Dear Mr.<name>John Smith</name>.Your order <orderid>1032</orderid>will be shipped on <shipdate>2001-07-13</shipdate>.
</letter>想达到这种混合类容的效果需要设置一个属性
<xs:element name="letter"><xs:complexType mixed="true">  //mixed="true"<xs:sequence><xs:element name="name" type="xs:string"/><xs:element name="orderid" type="xs:positiveInteger"/><xs:element name="shipdate" type="xs:date"/></xs:sequence></xs:complexType>
</xs:element>

当2个以上的schema整合的时候用<include schemaLocation=""></include>//好像要保证命名空间一致

转载于:https://www.cnblogs.com/liyang31tg/p/3524165.html

xml笔记(马士兵)相关推荐

  1. JAVA视频学习笔记-马士兵(六)

    `JAVA视频学习笔记-马士兵` 常用类_字符串相关类(20200614~16) 常用类_字符串相关类(20200617) 常用类_基本数据类型包装类(20200618) 常用类_Math类(2020 ...

  2. JAVA视频学习笔记-马士兵(七)

    `JAVA视频学习笔记-马士兵` 容器_API_Collection1(20200622) 容器_Collection2(20200623) 容器_Iterator(20200624) 容器_Enha ...

  3. java 马士兵 io 代码分析_学习笔记-马士兵java- (IO初步)流

    1. Java 流式输入/输出原理: a. 在JAVA程序中,对于数据的输入/输出操作以"流"(stream)方式进行:J2SDK 提供了各种各样的"流"类,用 ...

  4. 马士兵 java内存_学习笔记-马士兵java-JAVA的面向对象与内存解析

    1. 类的定义:成员变量.方法 ① 声明成员变量格式:[] type [=defaultValue]; (例:private int id;) ② 声明方法格式:[]([argu_list]){ [] ...

  5. java马士兵网络编程_学习笔记-马士兵java - 网络编程

    1. 网络基础 a. 计算机网络:把分布在不同地理区域的计算机与专门的外部设备用通信线路互联成一个规模大.功能强的网络系统,从而使众多的计算机可以方便地相互传递信息,共享硬件.软件.数据信息等资源. ...

  6. 马士兵hibernate(原始笔记)

    马士兵hibernate(原始笔记) 课程内容 1 HelloWorld a) Xml b) annotation 2 Hibernate原理模拟 - 什么是O/R Mapping以及为什么要有O/R ...

  7. 马士兵Hibernate学习笔记

    马士兵hibernate学习笔记 课程内容 6课程内容 1 HelloWorld 6 2 Hibernate原理模拟-什么是O/R Mapping以及为什么要有O/R Mapping 6 3 常见的0 ...

  8. Java高并发编程 (马士兵老师视频)笔记(一)同步器

    本篇主要总结同步器的相关例子:包括synchronized.volatile.原子变量类(AtomicXxx).CountDownLatch.ReentrantLock和ThreadLocal.还涉及 ...

  9. 马士兵mca课程java学习笔记

    马士兵mca课程java学习笔记 大四毕业刚买了马士兵的mca架构课程,包括java从小白到大神的基础工程师课程,左程云左老师的算法与数据结构,mca架构课和大数据架构课.马老师的课程内容实在是太多了 ...

  10. 马士兵JVM课程笔记

    马士兵JVM课程笔记 GC和GC Tuning GC的基础知识 1.什么是垃圾 C语言申请内存:malloc free C++: new delete c/C++ 手动回收内存 Java: new ? ...

最新文章

  1. python将pandas dataframe内容写入ElasticSearch实战
  2. php ajax session失效,PHP中解决ajax请求session过期退出登录问题
  3. 五、MySql索引基本介绍
  4. rref--计算行阶梯矩阵
  5. 系统管理员不可错过的6款服务器监控工具
  6. iOS 7开发快速入门
  7. C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(十)斜度α地图的构造及算法...
  8. javascript基础系列:堆栈内存(stackamp;heap)(二)
  9. TVP5158的多路复用技术
  10. Linux下多线程查看工具(pstree、ps、pstack),linux命令之-pstree使用说明, linux 查看线程状态。 不指定...
  11. 彼之蜜糖,我之砒霜;彼之敝履,吾之瑰宝
  12. html实现验证码效果,html5使用canva实现验证码效果(代码实例)
  13. 龙门上下料样本程序,四轴。用台达AS228T和台达触摸屏编写
  14. Overlay网络与物理网络的关系
  15. 牛逼!这届WWDC依旧展现了那个让你无法复制的苹果!
  16. 今天简单地把vw/vh总结一下
  17. weui学习总结——1、weui表单常用标签
  18. Sonya and Matrix Beauty
  19. 设计商品分类表 mysql_商品分类表设计
  20. 【免费】微软Surface Go出厂镜像百度网盘链接

热门文章

  1. python多线程调用携程_《Python》线程池、携程
  2. 如何获取中间层的结果_如何从0开始做大数据治理(上)
  3. 中缀表达式转后缀表达式规则
  4. Java_脚本引擎_01_用法入门
  5. error while loading shared libraries: libtinfo.so.5
  6. mongodb数组操作
  7. 收藏一篇关于 用两个栈实现一个队列功能的帖子
  8. Root Pane Container(三)
  9. 大型企业网络配置系列课程详解(七) --NAT的配置与相关概念的理解
  10. unity透明物体显示问题