XML入门

来源:互联网 发布:编程makeblock小车 编辑:程序博客网 时间:2024/06/11 20:19
初学XML,我的学习过程分享
很多朋友和我一样初学XML,我也是一个初学XML的新手,让我们在讨论中学习XML.

 

看过很多教程,大家还会问同样一个问题,XML是什么?XML是有什么用?这类问题.
我以自己的话来说明这些问题.

一个正确的概念很重要,其码不会失去方向.下面引用一位朋友的贴子来作回答:

XML初学者普遍存在的问题

1。XML是什么?(不要说是可扩展的标记语言之类的话)
2。XML可以做什么?怎么做?(不需要回答,只需要列举出一个简单的例子即可)


1: XML,是用来描迷数据的.
2:举一个例子说明:有A数据库 B数据库,他们之间的标准不同,不能互传.那么你可以把数据放在XML中,而后就可以让A,B之间可以共同传输数据了.

补充:
首先要有一个概念,你最好不要去用XML设计网页,不是说不可以, 只是要说明,XML不是HTML的替代.

有了这个概念,就不会有很多的看完一个一个的教程,还不知道XML做什么,很明了
XML就是为了描述数据

开始学习XML:
1.工具:XMLSPY2005,个人喜欢英文版.(当前下的2006英文版,注册有问题)
2.学习XML从那里开始?
   即我要说明的是:先写XML还是先写DTD或是XML Schemas.
   大多的教程从XML说起,再说DTD...再说XML Schemas...
   不过我个人觉的,先了解一下XML的基本语法,而后跳过DTD,从Schemas开始.
   这样不会让DTD搞的没兴趣..而后再对DTD作一定了解.这里要说明,我觉的先写
  好一个Schemas再写XML比较好.即,先建立模型.再去填数据.
(这只是我自己的爱好,朋友们别扔板砖)

下面的先从一个很简单的例子开始,让大家有点兴趣...
1.打开XMLSPY2005.点新建

此主题相关图片如下:
按此在新窗口浏览图片
选XSD W3C XML Schemas.
2.

此主题相关图片如下:
按此在新窗口浏览图片
作如图修改,而后点左侧的图标,进入下图
3.

此主题相关图片如下:
按此在新窗口浏览图片
在Book上点右键选择Add child-->sequence.插入一个容器

此主题相关图片如下:
按此在新窗口浏览图片
4.在刚刚的容器上再点右键.作Add child-->ELEMENT

此主题相关图片如下:
按此在新窗口浏览图片
5.做如下填加,如Setup 4.

此主题相关图片如下:
按此在新窗口浏览图片
6.点选最下面的TEXT.如图

此主题相关图片如下:
按此在新窗口浏览图片
这里是源码.

到这里实际上我们做了一个XML Schemas.很简单,以后在说明
具体的意思.
我们现在可以点另存为,存为First.xsd.


下面建立关于这个这个Schemas的XML文件.
再次选新建(不用关闭刚刚的XSD文件),这次选XML DOCUMNET文件.
出现下图:

此主题相关图片如下:
按此在新窗口浏览图片
选Schema.指定刚刚的XSD的保存路径.
这时打开是以TEXT方式,我还是选最下面的Gird,出现下图:

此主题相关图片如下:
按此在新窗口浏览图片
作如下图的改动:

此主题相关图片如下:
按此在新窗口浏览图片
点保存为:First.xml

那么你此时可以点下边的TEXT.回到代码方式.就可以看到XML文件的内容.

你一定听说过"好的格式"与"有效格式"的概念.
到这里,你建立了一个Schemas文件,一个XML文件.
按F5,你可以检查这个XML文件是不是一个"好的格式",再按F8你可以查看他
是不是一个"有效的格式".

下面再分析这个过程:

 先看一下First.xml的代码:
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by  () -->
<Book xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="First.xsd">
 <name>XSLT</name>
 <author>Michael Kay</author>
 <price>$34.99USA</price>
</Book>

 

是不是很容易理解.可能不能理解就是那一长串的"网址",那是一个很重的概念.
NAMESPACE.这个先不说,我们看代码:
<Book>
    <name>XSLT</name>
    <author>Michael Kay</author>
    <price>$34.99USA</price>
</Book>

<Book>...</Book>是根元素.
<name>.<author>.<price>可以说是根元素下的子元素.

这里有几点注意:
1.一定要结束标记.如:<Book>...</Book>
2.XML元素大小写是不一样的:<Book>...</book>必定出错
3.要合理嵌套.<Book><name>...</Book></name>是错的
细节很多,不详细说明.
其实我们现在就可以很容易的写一个XML文档,基于这个方式.
但还是不提倡先写XML再写DTD或是Schemas.
打个比方: XML是一个人,DTD AND SCHEMAS是马甲.首先要理解的就是我们用DTD和Schema是为了定义和约束XML的.好,我们先把这个约束和定义做好,即先做马甲.而后再给那个人穿上..我想这样是容易的,如果你先写XML再写马甲的的话...呵呵

再看那个First.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
 <xs:element name="Book">
  <xs:annotation>
   <xs:documentation>Comment describing your root element</xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:sequence>
    <xs:element name="name"/>
    <xs:element name="author"/>
    <xs:element name="price"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
</xs:schema>

Schemas是以XML的表达形式定义和约束XML文件的.所以在语法上是相似的.

<xs:schema>...</xs:schema>是Schemas申明.后面的接着是命名空间.
<xs:element name="Book">..</xs:element>是定义了元素Book.

<xs:annotation>
    <xs:documentation>Comment describing your root element</xs:documentation>
</xs:annotation>
这个是注释.

<xs:complexType>..</xs:complex>复杂类型申明.[有的朋友会问,还没学简单类型就学复杂类型,这不是...,不过说真的,先说复杂类型还是好理解.]

<xs:sequence>...</xs:sequence>这其实就是在最初的时候所说的容器.相同的还有另外两个<all>...</all> and <choice>..</choice> sequence是顺序出现,all是乱序出现,choice选择性出现.如果你要在复杂类型里加入别的元素或是属性的话,那么必定有一个
容器!

<xs:element name="name"/>
<xs:element name="author"/>
<xs:element name="price"/>
这三个是在Sequence包围中,现在可以理解容器的概念了吧..
上面还有一个要说的.

<xs:element name="name"/>这其实是个空元素.在XML中空元素的申明就是这样子的.
这东西就不需要额外的结束标记了.


这是对两段代码的简单分析...