html和xml的不同点:
元素和属性
html中的元素和属性都是预先设定的,而xml中没有预想设定的元素和属性,xml是可扩张的标记语言,标记可以用户自定义元素和属性
使用目的
html使用来显示界面的,注重的是外观和功能
而xml是用来传输数据和加载配置的,注重的是传输的效率和便捷
功能
html可以运行,可以与用户进行交互,而xml不能运行,它像是一个单纯存数据的地方,甚至可以认为它就是一个文本文件
大小写敏感
html中的元素大小写不敏感,而在xml中大小写敏感,例如app和App会被认为是两个不一样的元素
空格问题
在html中会把一连串的空格合并为一个,为xml会保留
xml中的约束(个人理解):
由于xml本身是没有约束的,这样的特性使得其他程序难以准确地读取xml中地数据,这样旧违背了xml地初衷,所以xml中可以添加自定义的约束,如果没有按照约束条件书写,xml张的约束有两种,一种是dtd,一种是scheme,scheme是dtd的下一代,功能更加强大
以下是W3C的示例代码:
<?xml version="1.0"?>
<!--约束可以放在xml里,也可以放在xml之外-->
<!DOCTYPE note [
<!ELEMENT alpha (a,b,c,d)> <!--定义了根元素和子元素,一旦确定约束,xml中少写一个都不行,顺序要一致-->
<!ELEMENT a (#PCDATA)> <!--定义元素的类型,这里设置为文本类型-->
<!ELEMENT b (#PCDATA)>
<!ELEMENT c (#PCDATA)>
<!ELEMENT d (#PCDATA)>
]>
<!--以上部分全都是约束,一般在实际的开发过程中不需要我们自己去写约束,约束会由框架提供,我们只要按照约束书写xml代码即可-->
<alpha>
<a>A</a>
<b>B</b>
<c>C</c>
<d>D</d>
</alpha>
一般使用约束是都会使用外部引入:
修改代码如下:
新建dtd后缀文件,名称自拟:
<!--只是去掉了最外层的!DOCTYPE元素-->
<!ELEMENT alpha (a,b,c,d)>
<!ELEMENT a (#PCDATA)>
<!ELEMENT b (#PCDATA)>
<!ELEMENT c (#PCDATA)>
<!ELEMENT d (#PCDATA)>
修改xml如下,一样可以起到约束的效果:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE note SYSTEM "D.dtd">
<alpha>
<a>A</a>
<b>B</b>
<c>C</c>
<d>D</d>
</alpha>
以下示例使用schema(不完整):
新建一个schema(alpha.xsd):
<?xml version="1.0"?>
<!--设置以xs:开头的元素的命名空间,xmls中文意思为XML Namespace(XML命名空间)-->
<!--表示在这个schema中的元素和属性由http://www.w3.org/2001/XMLSchema定义,schema中定义的不算-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
<!--表示被schema定义的元素来自命名空间-->
targetNamespace="..."
<!--表示省缺的命名空间-->
xmlns="..."
<!--表示所有元素都需要表示命名空间前缀-->
elementFormDefault="qualified">
<xs:element name="alpha">
<!--表示alpha元素是复杂元素,类型由子元素来定义-->
<xs:complexType>
<!--表示子元素必须按照给定的顺序出现,不然报错-->
<xs:sequence>
<!--name表示元素的名称,type表示元素的类型-->
<xs:element name="a" type="xs:string"/>
<xs:element name="b" type="xs:string"/>
<xs:element name="c" type="xs:string"/>
<xs:element name="d" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
引用约束(不完整):
<?xml version="1.0"?>
<!--需要在根元素里添加约束-->
<note
xmlns=""
<!--这一行为固定写法,表示以xsi:为前缀的元素的命名空间-->
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<!--第一个值是名称空间的名字,第二个值是模式文档的位置-->
xsi:schemaLocation="... alpha.xsd"
>
<alpha>
<a>A</a>
<b>B</b>
<c>C</c>
<d>D</d>
</alpha>
关于约束的更多解释可以看如下网址的内容:
https://www.w3school.com.cn/schema/schema_schema.asp