1: 概述

1.1 什么是XML

1.2 三个重点

1.3规则

1.4 常用转义

2: Xml声明

XML 中,空格会被保留

XML 以 LF 存储换行

3:Xml标签

4:Xml元素

5:XML 属性

6:验证XML

7:最佳命名习惯

8:XML进阶

1: 概述

1.1 什么是XML

XML指可扩展标记语言。它是从标准通用标记语言派生的基于文本的标记语言(SGML).

1.2 三个重点

XML是可扩展的: XML允许你创建自己的自描述性的标签,或语言,适合您的应用程序.

XML进行数据 : 不存在它:XML允许你无论存储将如何呈现这些数据.

XML是一个公共标准 : XML是由一个组织开发的名为万维网联盟(W3C),并可以作为一个开放的标准.

 1.3规则

基本语法:

1. xml文档的后缀名 .xml

2. xml第一行必须定义为文档声明

3. xml文档中有且仅有一个根标签

4. 属性值必须使用引号(单双都可)引起来

5. 标签必须正确关闭

6. xml标签名称区分大小写 (标签 属性)

         7. xml只允许只有一个根(Root)标签

         8. xml标签的属性也是区分大小写的

      1.4 常用转义

2: Xml声明

  xml分为两个部分, xml声明 xml标签

版本:

编码

是否依赖于信息从外部源,诸如外部的文档类型定义(DTD)的语法分析程序,其内容。默认值被设置为无。将其设置为yes告诉处理器有需要解析的文件没有外部声明

yes no

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>

xml注释:

<!-- -->

XML 中,空格会被保留

Hello           Tove   ====>转换为 Hello Tove

XML 以 LF 存储换行

在 Windows 应用程序中,换行通常以一对字符来存储:回车符(CR)和换行符(LF)。

在 Unix 和 Mac OSX 中,使用 LF 来存储新行。

3:Xml标签

完整闭合标签

<address>这是正确的句法</address>

空标签

<hr></hr> #或者 <hr/>

4:Xml元素

可以包含一个或者多个元素,这些元素允许两种不同的赋值方法

<?xml version="1.0" encoding="UTF-8"?> <note>  <to>Tove</to>  <from>Jani</from>  <heading>Reminder</heading>  <body>Don't forget me this weekend!</body> </note>

5:XML 属性

属性必须加引号

<person sex="female"> 或者这样也可以: <person sex='female'>

多个属性

<person name="tom" sex="female">

尽量使用元素代替属性

属性不能包含多个值(元素可以)

属性不能包含树结构(元素可以)

属性不容易扩展(为未来的变化)

数据库中用于标识某个元组

使用id表示某一组数据

<?xml version="1.0" encoding="utf-8"?> <messages>  <note id="501">    <to>Tove</to>      <from>Jani</from>      <heading>Reminder</heading>      <body>Don't forget me this weekend!</body>  </note>   </messages>

6:验证XML

DTD验证

本地验证: <!DOCTYPE note SYSTEM "Note.dtd">

网络验证:<!DOCTYPE note PUBLIC "URL">

<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE note SYSTEM "Note.dtd"> // 指定验证的文件 <note>  <to>Tove</to>    <from>Jani</from>    <heading>Reminder</heading>    <body>Don't forget me this weekend!</body> </note>

schema验证

XSD:描述

7:最佳命名习惯

使名称具有描述性。使用下划线的名称也很不错:<first_name>、<last_name>。

名称应简短和简单,比如:<book_title>,而不是:<the_title_of_the_book>。

避免 "-" 字符。如果您按照这样的方式进行命名:"first-name",一些软件会认为您想要从 first 里边减去 name。

避免 "." 字符。如果您按照这样的方式进行命名:"first.name",一些软件会认为 "name" 是对象 "first" 的属性。

避免 ":" 字符。冒号会被转换为命名空间来使用(稍后介绍)。

 显示XML

使用CSS

使用XLAT

 8:XML进阶

XML命名空间

xmlns:f="http://www.w3cschool.cc/furniture"   f就是指定的命名空间

Android中 布局标签就是使用的这种命名空间

CDATA数据

   对于某些数据需要直接按照文本形式处理的 如@lt @gt 就不会处理

<![CDATA[ if (a < b && a < 0) then 具体数据  ]]>

XML 数据岛

XML 数据岛是嵌入到 HTML 页面中的 XML 数据。

XML 数据岛只在 Internet Explorer 浏览器中有效。

1: 基本使用

2:声明元素

3 xml属性

4:xml实体

 定义:  文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。

 PCDATA:

PCDATA 的意思是被解析的字符数据(parsed character data)。

可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本。

PCDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。

 CDATA:

CDATA 是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。

 XML外部 内部:

<!DOCTYPE tglib SYSTEM "URL|本地路径">

<!DOCTYOE tglib PUBLICK "URL"> // 声明为公共的DTD文件

1: 基本使用

声明DTD开始部分

<!DOCTYPE DTDNAME [    <!-- 具体的元素 属性 实体--> ]>

2:声明元素

 空元素

<! ELEMENT name EMPTY> # 实例 <!ELEMENT br EMPTY> <by/>

     多个元素

含有多个元素的元素,子元素必须连续声明

<!ELEMENT name (att1,att2) # 实例 <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>

    PCDATA元素(可以被解析为元素的)

<!ELEMENT name (#PCDATA)> # 实例 <!ELEMENT body (#PCDATA)>

    带有任何内容的元素

<!ELEMENT name ANY> # 实例 <!ELEMENT body ANY>

 声明只出现一次的元素

<!ELEMENT element-name (child-name)> # 实例: <!ELEMENT note (message)>

声明最少出现一次的元素 +

<!ELEMENT element-name (child-name+)> # 实例: <!ELEMENT note (message+)>

声明出现零次或多次的元素 *

<!ELEMENT element-name (child-name*)> # 实例: <!ELEMENT note (message*)>

声明出现零次或一次的元素 ?

<!ELEMENT element-name (child-name?)> # 实例: <!ELEMENT note (message?)>

声明 |可选内容

实例: <!ELEMENT note (message|body)>

声明混合型的内容

实例: <!ELEMENT note (#PCDATA|to|from|header|message)*>

3 xml属性

    格式

<!ATTLIST elename attname type value> #          元素名  属性名   类型  属性值 # 实例 <!ATTLIST User name CDATA  " "> # 这个" " 可以不给 可以给限定值 #REQUIRED #FIXED #IMPLIED

    提供的类型

类型

描述

CDATA

值为字符数据 (character data)

(en1|en2|..)

此值是枚举列表中的一个值

ID

值为唯一的 id

IDREF

值为另外一个元素的 id

IDREFS

值为其他 id 的列表

NMTOKEN

值为合法的 XML 名称

NMTOKENS

值为合法的 XML 名称的列表

ENTITY

值是一个实体

ENTITIES

值是一个实体列表

NOTATION

此值是符号的名称

xml:

值是一个预定义的 XML 值

提供的属性

解释

属性的默认值

#REQUIRED

属性值是必需的

#IMPLIED

属性不是必需的

#FIXED value

属性值是固定的

   

    完整例子

<!ELEMENT Address EMPTY> <!ATTLIST Address street CDATA "" > # 应用 <Address street="幸福大街" />

     强制要求值 可选 固定值

<!ELEMENT Address EMPTY> <!ATTLIST Address street CDATA #REQUIRED > //那street 这个属性必须给出 # 实例 <Address street='xxx'/> <!ATTLIST Address street CDATA #FIXED "必须给出固定的值"> // <!ATTLIST Address street CDATA #IMPLIED > //可选

列举属性值

DTD: <!ATTLIST payment type (check|cash) "cash"> # XML 例子: <payment type="check" /> 或 <payment type="cash" />

    指定ID IDREF

<!ATTLIST User id ID #REQUIRED > // # <User id="101"/> <!ATTLIST User2 id IDREF #REQUIRED> <User2 id="101"> // 引用别人的ID值 <User2 id="101 102 103"> // 表示引用多个ID值

4:xml实体

  定义

<!ENTITY entity-name value> # 实例 <!ENTITY name1  "tom"> <!ENTITY name2  "gory"> # 应用 <author>@name1;@name2</author>

5 一些题目

根据上面的内容写出DTD约束文件

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE Teams {
<!ELEMENT Teams (Team+)>
<!ELEMENT Team (#PCDATA)>
<!ELEMENT Team (Teamname,Country,Member+)>
<!ELEMENT Teamname (#PCDATA)>
<!ELEMENT Country (#PCDATA)>
<!ELEMENT Member (#PCDATA)>
<!ATTLIST Member Name CDATA #REQUIRED>
<!ATTLIST Member Age CDATA #REQUIRED >
<!ATTLIST Member Sex CDATA (Female|Male) "Male">
]>
<Teams>
<Team>
<Teamname>Roma</Teamname>
<Country>Italy</Country>
<Member Name=”AAA ”Age="36" Sex="Male" />
<Member Name=”BBB ”Age="26" Sex="Female" />
</Team>
</Teams>

XSD Schema  描述

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/NewXMLSchema"
xmlns:tns="http://www.example.org/NewXMLSchema"
elementFormDefault="qualified">
<xs:element name="Teams">
<xs:complexType>
<xs:sequence>
<xs:element name="Team" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Teamname" type="xs:string"></xs:element>
<xs:element name="Country" type="xs:string"></xs:element>
<xs:element name="Member" maxOccurs="100">
<xs:complexType>
<xs:attribute name="Name" type="xs:string"></xs:attribute>
<xs:attribute name="Age" type="xs:integer"></xs:attribute>
<xs:attribute name="Sex" type="xs:string"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

XML文档

<?xml version="1.0" encoding="UTF-8"?>
<Teams xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="NewXMLSchema.xsd"
<Team>
<Teamname>Roma</Teamname>
<Country>Italy</Country>
<Member Name="AAA" Age="34" Sex="Male"/>
<Member Name="AAA" Age="34" Sex="Male"/>
</Team>
</Teams>

XML与DTD(够用)的更多相关文章

  1. 【PHP XML与dtd概述【完整版】】

    一.XML文件简介 关于XML的大多数人都知道一些,HTML->xhtml->xml,这个顺序本来应当是HTML发展的顺序. XML可以当做配置文件使用,还可以充当小型的数据库. vers ...

  2. XML约束——DTD约束

    参考: 方立勋老师的讲课视频.   什么是XML约束 •在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束. 为什么需要XML约束 常用的约束技术 •XML DTD • ...

  3. xml约束DTD演示

    此演示xml和DTD在一个文件中 book.xml <?xml version="1.0" encoding="utf-8"?> <!DOCT ...

  4. jdom dom4j解析xml不对dtd doctype进行验证(转)

    一.写在所有之前:因为dom4j和jdom在这个问题上处理的方法是一模一样的,只是一个是SAXBuilder 一个SAXReader,这里以jdom距离,至于dom4j只需要同理替换一下就可以了.二. ...

  5. XML 和 DTD

    1.XML 1.1xml简介 a)xml,eXtensible Markup Language,可扩展标记语言,是一种标记语言: b)xml是一种非常灵活的语言,没有固定的标签,所有的额标签都可以自定 ...

  6. 【JAVA与XML、dtd约束、Schema约束】

    一.XML. (1)XML:Extensible Markup Language (2)XML是一种标记语言. (3)XML的设计宗旨是传输数据,而不是显示数据. (4)XML标签没有被预定义,即使用 ...

  7. 【php基础】XML,DTD实例

    要求一:能看懂别人写的DTD文件,自己能写更好.例如products.dtd: <!ENTITY AUTHOR "John Doe"> <!ENTITY COMP ...

  8. javaweb学习总结八(xml约束DTD)

    一:XML约束概念 xml约束:可以编写一个文档来约束xml文件的书写规范. xml语言格式比较严谨,不可能让程序员随意编写,所以必须要有约束. 二:常用的xml约束技术 1:DTD,document ...

  9. 关于XML的DTD概述

    1 DTD概述 1.1 什么是DTD DTD(Document Type Definition),文档类型定义,用来约束XML文档.或者可以把DTD理解为创建XML文档的结构!例如可以用DTD要求XM ...

随机推荐

  1. SpringBoot 日志系统

    日志框架 开发一个大型系统的简易步骤: system.out.println("..") 将关键的数据在控制台输出 框架记录系统的一些运行时的信息,---日志框架. 牛逼的功能-- ...

  2. Python监控主机是否存活,并发报警邮件

    利用python写了简单测试主机是否存活脚本,此脚本不适于线上使用,因为网络延迟.丢包现象会造成误报邮件,那么后续会更新判断三次ping不通后再发报警邮件,并启用多线程处理. #!/usr/bin/e ...

  3. Linux系统学习 十八、VSFTP服务—虚拟用户访问—配置虚拟用户访问

    配置虚拟用户访问 首先至少要关闭userlist 改完配置文件是要重启服务来使它生效 其实在刚装好vsftp的时候的配置文件不用修改的情况下配置虚拟用户访问控制是最好的 local_root选项不影响 ...

  4. 从荣耀 xSport Pro 运动蓝牙耳机发布看蓝牙立体声耳机的新动态

    10月22日,荣耀在北京举行新品发布会,不仅带来了荣耀20青春版手机,还正式发布了荣耀xSport PRO运动蓝牙耳机.该款耳机是荣耀全新一代颈戴式运动蓝牙耳机,兼具运动和时尚属性,高颜值的渐变色机身 ...

  5. git commit vim报错

    window平台,使用git bash,填写git commit时,退出时vim报错: 错误信息 启动失败 Vim: Caught deadly signal SEGV 在工程目录下,进.git目录, ...

  6. JavPlayer:AI破坏马赛克,大量马赛克破坏版影片流出

    这是最近几个月业界讨论比较火的话题,发酵到现在, 终于可以给大家总结下最近的马赛克破坏版影片到底是怎么回事? 马赛克破坏版,简单讲就是利用AI技术,在打有马赛克影片的马赛克基础上进行修复操作, 来实现 ...

  7. windows 使用 curl 命令

    什么是curl命令? curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在Unix.多种Linux发行版中,并且有DOS和Win32.Win64下的移植版本. 如何在windo ...

  8. Selenium(八):其他操作元素的方法、冻结界面、弹出对话框、开发技巧

    1. 其他操作元素的方法 之前我们对web元素做的操作主要是:选择元素,然后点击元素或者输入字符串. 还有没有其他的操作了呢?有. 比如:比如鼠标右键点击.双击.移动鼠标到某个元素.鼠标拖拽等. 这些 ...

  9. thinkphp 5.x No input file specified 解决

    原规则: <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond ...

  10. JS For

    JS For 循环可以将代码块执行指定的次数. JavaScript 循环 document.write(cars[0] + "<br>"); document.wri ...