
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE myfile [ <!ELEMENT myfile (title,author)> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> ]><myfile id="11"> <!--注释信息--> <title>XML</title> <author>hjk</author></myfile>分析
首先前六行是XML文档的序言,包含了此文档的元数据,就是文档的基本数据
<?xml version="1.0" encoding="UTF-8"?>是XML文档的一个声明,有效的XML文档的第一行必须是XML文档的声明;这个格式是基本固定的前面的标签必须写成<?xml,后面version=是版本号,目前只有两个版本1.0和1.1,encoding是编码格式,不管是version还是encoding等于的内容都必须用单引号或者双引号包含。<!ELEMENT myfile (title,author)>这个意思是myfile标签包含两个子标签title,author。<!ELEMENT title (#PCDATA)>表示title是一个PCDATA类型,PCDATA(可解析的字符数据)。第七行到最后就是文档节点
<myfile>是根元素,ids是属性,下面是注释,title和author是子元素上面没有定义处理命令,补充一下:处理指令可以用于将信息传递给应用程序。处理指令可以出现在文档任意位置的标记外部。可以出现在序言中,包括文档的类型定义(DTD),文本内容或者文档之后
处理指令的语法:
<?target instructions?>一个常用的处理指令的例子是通知浏览器对XML进行转换,如下所示:
<?xml-stylesheet type="text/xsl" href="appUsers.xslt" ? >格式良好的XML文档,包含一个或多个元素,并且他们相互之间必须正确的嵌套。必须有且只有一个根元素,包含其他所有的元素。所有元素构成一个简单的层次树,所以元素与元素之间唯一的直接关系就是父子关系。
格式良好的XML文档不一定是有效的XML文档,有效的XML文档肯定是格式良好的XML文档
<?xml version="1.0" encoding="UTF-8"?><title></title></title><title><name>...</name></title> 正确<title><name>...</title></name> 错误有一些字符键盘上是没有的或者是一些图形字符。所以XML文档可以使用Unicode或者十六进制数字将他们字符引用的形式加入
语句为:
©©代码:
<?xml version="1.0" encoding="UTF-8"?><data> <char>©</char> <char>©</char></data>效果:
实体引用时在一个合法的XML名字前面加上一个&,后面加上一个分号
&name;| 实体(这里面最后面应该时英文分号; | 用途 |
|---|---|
| &; | 通常用来代替& |
| <; | 通常代替< |
| >; | 通常代替> |
| &apos; | 通常代替' |
| "; | 通常代替" |
自定义实体引用
必须在文档使用前,在DTD文档中进行定义。
自定义实体定义语法:
<!DOCTYPE filename[<!ENTITF entity-name"entity-content"]>例子
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE student[ <!ELEMENT student (name,sex)> <!ELEMENT name (#PCDATA)> <!ELEMENT sex (#PCDATA)> <!ENTITY me "hjk"> ]><student> <name>&me;</name> <sex>男</sex></student>效果:可以看到
XML命名空间提供了一种避免命名冲突的方法。
命名冲突,就是两个不同的XML文档使用同一个名字,来描述不同元素的情况。如果这两个XML文档时独立的运行的,那没有影响,但是如果恰巧一起使用,就会出现命名冲突的情况。
命名空间通过给标识名称加一个网址(URL)以定位的方法来区别这些名称相同的标识。命名空间需要在XML文档开头部分声明,命名空间声明一般放置在元素的开始标记处。
语法格式
xmlns:prefix="URL"prefix是命名空间的前缀,是可选的。
<?xml version="1.0" encoding="UTF-8" ?><student xmlns="http://www.edu.cn/xxx/xx"> <name>hjk</name> <sex>男</sex></student>我个人理解就是给student加一个唯一的标识,其实这个URL存在正确与否都不重要,只要是唯一的就行,用这个URL来区分这些标签。
<?xml version="1.0" encoding="UTF-8" ?><h:student xmlns:h="http://www.edu.cn/xxx/xx"> <h:name>hjk</h:name> <h:sex>男</h:sex></h:student>明确声明感觉就像是取一个别名,这个元素的每一个子元素和他本身都需要用这个别名的前缀。
上面已经提到了,这里简单说一下
<!DOCTYPE myfile [ <!ELEMENT myfile (title,author)> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> ]>外部DTD的好处就是:它可以方便搞笑的被多个XML文档共享
外部DTA的定义和内部差不多,不在需要<!DOCTYPE>,直接写内容就可以,但是要保存成dtd文件,即文件名为name.dtd,name是文件名
外部dtd文件,文件名myfile.dtd
<!ELEMENT myfile(title,author)><!ELEMENT title(#PCDATA)><!ELEMENT author(#PCDATA)>那么如何引用呢。引用格式为
<!DOCTYPE type-of-doc SYSTEM/PUBLIC"dtdfile-name">实例引用上面mufile.dtd文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE myfile SYSTEM "myfile.dtd"><myfile> <title>XML</title> <author>hjk</author></myfile>解释说明:
以上是目前所学习的理解!!