XML的学习2
XML学习2 一只纯菜鸟的角度....持续更新中。一如既往,求指教,求更正。
先解决上篇提到的两个问题:xml 为什么要解析?怎么解析? 现在看到这两个问题,就觉得我当时的IQ...一走出去,整条街的平均水平都被我拉低了不少。 xml主要用于配置信息和数据交换,设想下:一个很大的系统(比如一个跨国企业的管理系统)的两个模块用的是不同的语言开发,但由于业务需要者两个模块间必须进行大量的数据交换,xml就提供了很好的解决方案,但对方拿到数据后怎么读懂这些xml文件呢?于是xml解析就出现了。 Xml的解析方式,按模式分可分为:
DOM—DOM是面向模型的,一次将XML文档加入内存,编程简单,适合小型文件的解析 SAX —SAX是面向事件的,读一部分解析以部分,编程复杂一些,适合大型文件的解析。
按具体实现技术又可以分成很多。这些在我现在还不清楚,以后再写。 昨天用DTD定义了个xml并做了超简单的解析。当时就觉得DTD有些蛋疼,语法晦涩难懂,又看不出有什么牛X的地方。好在今天学到了新的一招:Schema 它搭载更简单的语法,而且语法和xml类似。实现更好效果。 我也不知道Schema是DTD的后继者还是另一种技术,但对于我们99%的程序猿来说:英雄不问出处,能解决问题就行所以就别去纠结了。下面就通过简单的实例来入门吧。补充说下XSLT:本质上说xslt也是个xml,它里面包含Xpath(用来遍历xml文件的),经过它修饰后的xml能实现数据和显示的分离,但由于这厮的效率太低所以用的很少。现在是个打酱油的了。 目的:用schema+xml实现下面的表中的要求,xml用XSLT修饰
--------------------------------------------schema文件 students.xsd <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:bl="http://www.xxoo.ckon" targetNamespace="http://www.xxoo.ckon" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:simpleType name="myprice"> <xs:restriction base="xs:int"> <xs:maxExclusive value="500"/> <xs:minInclusive value="5"/> </xs:restriction> </xs:simpleType> <xs:element name="students"> <xs:complexType> <xs:sequence> <xs:element name="student"> <xs:complexType> <xs:sequence> <xs:element name="name"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="1"/> <xs:maxLength value="20"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="age"> <xs:simpleType> <xs:restriction base="xs:int"> <xs:minInclusive value="18"/> <xs:maxInclusive value="35"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="sex"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="男"/> <xs:enumeration value="女"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="relationtel"> <xs:complexType> <xs:attribute name="address" use="required"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="10"/> <xs:maxLength value="100"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="cellphone" use="optional"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[1][3,5]d{9}"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="phone" use="optional"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="0731-d{7,8}"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="stuid" use="required"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[T][d,10,11,12]{1}"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> -----------------.xml文件 <?xml version="1.0" encoding="UTF-8"?> <bl:students xmlns:bl="http://www.xxoo.ckon" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xxoo.ckon F:SHHXMLsrccnbltest1students.xsd"> <bl:student stuid="T4"> <bl:name>鬼见愁</bl:name> <bl:age>23</bl:age> <bl:sex>男</bl:sex> <bl:relationtel address="在阿里沙山得到的视频吗个" cellphone="15200399866" phone="0731-2599991"></bl:relationtel> </bl:student> </bl:students> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |