xml学习
:
1)特殊字符:
&:&
<:<
>:>
":"
':&apos
这里的单引号
' 与HTML里面不一样。html里面的单引号是这样写的:´
2)cdata区:
一个
xml文件里面包含javascript代码时,可以把代码嵌入cdata区中,例如:
<script type="text/javascript">
<![CDATA[
这里是
javascript代码
]]>
</script>
CDATA注意事项
:
CDATA部件之间不能再包含
CDATA部件(不能嵌套)。如果CDATA部件包含了字符"]]>" 或者"<![CDATA[" ,将很有可能出错哦。同样要注意在字符串"]]>"之间没有空格或者换行符。
3)xml约束模式:
符合语法的
XML文档称为结构良好的XML文档。
通过
DTD验证的XML文档称为有效的XML文档。用另外的一篇文档来描述并约束此xml,就好比一种法律约束人的行为一样,目前流行的有两种:DTD,XML Schema,后者有取代前者的趋势,但是目前DTD还是十分流行。
DTD:
<!element 元素名
(子元素1,子元素1,子元素n)>
<!DOCTYPE 根元素名
SYSTEM "DTD文件名">
DTD不使用
XML语法,缺乏对定义数据类型的支持等。所以出现了XML Schema,
XML Schema根元素必须叫
schema,complexType表示是一种综合的类型。sequence表示是按顺序出现的,
maxOccurs="unbounded"表示是没上限的
,可以出现N次,
XML Schema也得遵循一种
XML Schema,语法是这样,
<xs:schema xmlns:xs="http://www.w3.org/2001/XML Schema">
意思就是说凡是以
xs打头的元素必须遵循双引号里面url指定的约束模式,xmlns:xs是一种很特殊的属性,这个url就是一个唯一标识符,这就是名称空间,xs就是此url的简写。它的作用范围就是它本身的元素和它的子元素,这个标识符放在哪里呢?这个用户不需要关心,xml解析工具是知道的。
4)命名空间属性
命名空间属性一般放置在元素的开始标记处,其使用语法如下所示
:
xmlns:namespace-prefix="namespace"
默认的名称空间:
定义一个默认的
XML命名空间使得我们在子元素的开始标记中不需要使用前缀。他的语法如下所示:
<element xmlns="namespace">
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee(这里是空白,可以包含空格,回车,换行等空白字符
)http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
web-app是根元素,第一个“
http://java.sun.com/xml/ns/j2ee”唯一的标识了一个Schema模式文档(这里并没指定此文档的位置),用的是xmlns属性,它没加前缀,说明这个uri是一个默认的名称空间,其作用范围为此元素和它所有的子元素。xsi:schemaLocation里面的http://java.sun.com/xml/ns/j2ee指明上面xmlns属性里面的http://java.sun.com/xml/ns/j2ee的位置在http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd,xsi是一个前缀,它代表xmlns:xsi属性里面指定的uri,schemaLocation属性是从xsi指定的uri中来的。所以在上面就声明了xsi,这个xsi的值为http://www.w3.org/2001/XMLSchema-instance,这个uri是每个xml解析工具都知道的。所以不用指定它的位置。
5)XML标记都是大小写敏感的
这与
HTML不一样, XML标记是大小写敏感的。
在
XML中, 标记<Letter>与标记<letter>是两个不同的标记。
因此在
XML文档中开始标记和结束标记的大小写必须保持一致。
<Message>This is incorrect</message> //错误的
<message>This is correct</message> //正确的
所有的
XML元素必须合理包含
在
XML中不允许不正确的嵌套包含。
在
HTML中,允许有一些不正确的包含,例如下面的代码可以被浏览器解析:
<b><i>This text is bold and italic</b></i>
在
XML中所有元素必须正确的嵌套包含,上面的代码应该这样写:
<b><i>This text is bold and italic</i></b>
所有的
XML文档必须有一个根元素
XML文档中的第一个元素就是根元素。
所有
XML文档都必须包含一个单独的标记来定义,所有其他元素的都必须成对的在根元素中嵌套。XML文档有且只能有一个根元素。
所有的元素都可以有子元素,子元素必须正确的嵌套在父元素中,下面的代码可以形象的说明:
<root>
<child>
<subchild>.....</subchild>
</child>
</root>
属性值必须使用引号
""
在
XML中,元素的属性值没有引号引着是不符合规定的。
如同
HTML一样,XML元素同样也可以拥有属性。XML元素的属性以名字/值成对的出现。XML语法规范要求XML元素属性值 必须用引号引着。
6)XML元素命名
XML元素命名必须遵守下面的规则:
元素的名字可以包含子母,数字和其他字符。
元素的名字不能以数字或者标点符号开头。
元素的名字不能以
XML(或者xml,Xml,xMl...)开头。
元素的名字不能包含空格。
自己“发明”的
XML元素还必须注意下面一些简单的规则:
任何的名字都可以使用,没有保留字(除了
XML),但是应该使元素的名字具有可读性,名字使用下划线是一个不错的选择。
例如
: <first_name>, <last_name>.
尽量避免使用“
-”,“.”,因为有可能引起混乱。
只要你愿意元素的名字可以很长,但也不要太夸张了哦。命名应该遵循简单易读的原则,例如:
<book_title>是一个不错的名字,而<the_title_of_the_book>则显得罗嗦了。
XML文档往往都对应着数据表,我们应该尽量让数据库中的字段的命名和相应的
XML文档中的命名保持一致,这样可以方便数据变换。
非英文
/字符/字符串也可以作为XML元素的名字,例如<蓝色理想><经典论坛>这都是完全合法的名字。但是有一些软件不能很好的支持这种命名,所以尽量使用英文字母来命名。
在
XML元素命名中不要使用":",因为XML命名空间需要用到这个十分特殊的字符。