XML的学习2

XML学习2

一只纯菜鸟的角度....持续更新中。一如既往,求指教,求更正。

 

先解决上篇提到的两个问题:xml 为什么要解析?怎么解析?

现在看到这两个问题,就觉得我当时的IQ...一走出去,整条街的平均水平都被我拉低了不少。

xml主要用于配置信息和数据交换,设想下:一个很大的系统(比如一个跨国企业的管理系统)的两个模块用的是不同的语言开发,但由于业务需要者两个模块间必须进行大量的数据交换,xml就提供了很好的解决方案,但对方拿到数据后怎么读懂这些xml文件呢?于是xml解析就出现了。 Xml的解析方式,按模式分可分为:

 

DOMDOM是面向模型的,一次将XML文档加入内存,编程简单,适合小型文件的解析

SAX SAX是面向事件的,读一部分解析以部分,编程复杂一些,适合大型文件的解析。

 

按具体实现技术又可以分成很多。这些在我现在还不清楚,以后再写。

昨天用DTD定义了个xml并做了超简单的解析。当时就觉得DTD有些蛋疼,语法晦涩难懂,又看不出有什么牛X的地方。好在今天学到了新的一招:Schema 它搭载更简单的语法,而且语法和xml类似。实现更好效果。

我也不知道SchemaDTD的后继者还是另一种技术,但对于我们99%的程序猿来说:英雄不问出处,能解决问题就行所以就别去纠结了。下面就通过简单的实例来入门吧。补充说下XSLT本质上说xslt也是个xml,它里面包含Xpath(用来遍历xml文件的),经过它修饰后的xml能实现数据和显示的分离,但由于这厮的效率太低所以用的很少。现在是个打酱油的了。

目的:schema+xml实现下面的表中的要求,xmlXSLT修饰

 

字段名

数据类型和约束

编号

唯一/类似于:T03-12/必需         作为属性

姓名

1---30个字符/必需

年龄

18---35的数字/必需

性别

男或女/必需

联系方式

家庭住址

10---100个字符/必需

手机

11个数字/可以多个

固定电话

类似:0735-2599991或010-87654673/可以多个

 

--------------------------------------------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:\SHH\XML\src\cn\bl\test1\students.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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值