xml基础
XML(可扩展的标签语言):
可以定义语义和语法。HTML语法是别人定义好的,XML是自己定义的,格式和HTML类似。
用处:
- 结构化语言(是一种结构化的数据,可以传东西给客户端。类似的还有json。),可以传输数据。可以存储二维的数据,可以表示一个数据表的内容。
- 异构设备之间的数据交换。XML是通用的。开发苹果用C,安卓用JAVA,交互数据的时候就可以用XML。或者假如要把MySQL数据库转化为Oracle数据库,就可以先转化为xml。
GML 通用的标签语言,SGML国际化的通用标签语言。
XML是简化小型的SGML。(W3C推荐的),这样就比较适用于互联网。
xml语义严谨
任何一个小差错都会出现错误。(就比如属性值没有双引号,或者没有大小写,或者标签没有合理嵌套)
- 一个文档只能有一个根节点。就是这个xml最开始的那个标签。
- 属性值必须用双引号括起来
- 大小写敏感
- 有开始标签就要有结束标签
- id值不能重复
- 文档的开始必须是xml声明。
XML版本声明:
<?xml version= “1.0” encoding= “utf-8” standalone=”yes” ?>
version
:版本
encoding
:当前页面的编码,一般给utf-8
standalone
:当前xml语法是否完整。(它是独立的文档吗?yes就是它不依赖于其他文档,就是当前文档的语义语法在当前文档定义。No的话就是新建一个文档专门定义这个文档的语义和语法。)
文档类型声明:
(用来指出定义XML语义所用的DTD,有两种格式)
(其实就是定义这个xml中所用到的标签,包括这个标签的属性啊,出现多少次啊,顺序啊什么的。)
1.DTD在外部文档中。
<!DOCTYPE hello SYSTEM “hello.dtd”>
这里的hello
代表:当前页面的根节点叫hello。
这里的SYSTEM
代表,这个是私有的。(公有的是PUBLIC
)
这里最后面这个代表:当前这个xml的语义和语法由谁来定义。
2.在XML中直接给出DTD
<!DOCTYPE hello[
<!ELEMENT hello(#PCDATA)>
]>
例子:
<hello>
hello
</hello>
元素:
- 空元素:
<br />
- 带属性的元素
<hello id=”1”> </hello>
- 带内容的元素
<hello>hello</hello>
- 带内容和属性的元素
<hello id=”1”>hello</hello>
元素的内容构成:
- 子元素:可以是标签也可以是内容
看下面例子,就像下面city标签的子元素就有5个,因为转行也算一个。
例子:
<hello>
<city id=”1”>
<level>1</level>
<name>xi’an</name>
</city>
<city id=”1”>
<level>2</level>
<name>yan’an</name>
</city>
</hello>
- 字符数据 不包括(&、<、]]>)
<articles>
<art>
<title>明天下雨</title>
<msg>
不能出现”<”:这里的内容是以HTML的方式提交给服务器。如果这里出现了<h1></h1>之类的标签就会变得很复杂。
不能出现”]]>”:比如if(i[i[0]]>0),或者是CDATA段。
</msg>
</art>
</articles>
- 预定义实体引用
就是预先定义一个东西,然后在xml中就能用&…;这样的字段来代替。
比如:&——–&
<————<
>————>
"———“
在DTD文档中:<!ENTITY writer “Bill Gates”>
在xml文档中就可以这样调用:&writer;
页面在显示的时候就会自动将&writer;
替换成Bill Gates。 - CDATA段
假如在<msg>
标签中就是想写HTML语言并且不想被浏览器读成HTML,就可以使用CDATA段。
<![CDATA[这里放你想要显示的字符]]>
其实如果想不被识别成CDATA段,可以在]]>这三个字符之间任意位置加一个空格。
注释:
要注意的是-->
,解决方法也是加空格。
处理指令:
Xml遇到了处理不了的内容的时候,就要加上处理指令,就比如css的代码。
例如:<?xml-stylesheet href=”hello.css” type=”text/css”?>
的意思是,如果文档中用到了hello.css这种文件,我声明mime类型是text/css,这个的默认程序是ie。
行尾处理:
回车:CR #xA
换行:LF #xD
格式良好的xml:
DTD:
是保证xml文档格式正确的有效方法,可以比较xml和dtd文件来看文档是否符合规范,元素和标签是否使用正确。
一个DTD文档包含:元素定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则。
具体的在W3School里面学习。
XML Schema:
XML Schema:是以xml语言为基础的,用于替代DTD。也被称为XSD。
<schema>在这里面定义</schema>
这里有个概念叫名词空间,意义和Java的包一样。就是当遇到一样名字的类(标签)的时候,有包(名词空间)就能区分开来。
比如:xmlns:xs=http://www.xxx.xxx.com
用的时候就:<xs:element name=”note”/>
这个也可以在W3School里面看。