笑看风云淡

宠辱不惊,看庭前花开花落;去留无意,望天空云卷云舒
posts - 96, comments - 48, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 ::  :: 聚合  :: 管理
很多朋友和我一样初学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中空元素的申明就是这样子的.
这东西就不需要额外的结束标记了.


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

写一XML文档作一小结:
1.元素,属性和值
   <name language="english">Tiger</name>
2.书写XML的规则
   1).根元素是必须的
   2).结束标记是必须的
   3).元素的嵌套要适当
   4).大小写敏感
   5).值必放在引号内
3.申明XML版本.
   <?xml version="1.0" encoding="UTF-8"?>
也就这形式,注意后的UTF.如果你有中文内容,改成gb2312吧
这个encoding是可选的
只有这一个例外.没有结束标记
<?  ..... ?>
4.增加属性,属性是给元素增加一个额外的信息
<name language="English">
5.空元素
两种表式法:
   <name></name>
OR</name>
两者是相同
6.注解:<!--      -->
7.五个特殊的符号

 

   &        & amp;
   <        & lt;
   >        & gt;
   "         & quot;
   '          & apos;


想在XML里表达出前面的符号,就用后面的代替.
差不多这就些吧..
  

XML Schema

XML Schema提供一个更丰富的XML文档结构定义,Schema是XML所写,用XML规范改写的
DTD,同时增加扩充功能.
特点:1.一致性,与XML一致.可被XML编辑器编辑,可被XML分析器解析.
2.扩展性.对DTD进行扩充,引入数据类型
3.易用性.XML API(DOM AND SAX)只对XML实例有效.对DTD无效.
   Schemas可用DOM 和SAX方式
4.规范性,Schema用元素内容和属性来定义文档的整体结构,如那些元素可出现,元素间的关系,元素内容和属性,以及元素出现的顺序.
5.互换性.可交换彼此的Schema

(转载自“中国XML论坛”作者“starting”)


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理