新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 关于 XML 的一般性技术讨论,提供 XML入门资料 和 XML教程
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 XML基础 』 → 個人總結的xml,最適合初學者了,不信看看。(轉) 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 64457 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 個人總結的xml,最適合初學者了,不信看看。(轉) 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     gjcn 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:8
      积分:120
      门派:XML.ORG.CN
      注册:2006/1/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给gjcn发送一个短消息 把gjcn加入好友 查看gjcn的个人资料 搜索gjcn在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看gjcn的博客楼主
    发贴心情 個人總結的xml,最適合初學者了,不信看看。(轉)

    以下適我在網上收集的,如有雷同,不要見怪。謝謝!!
    希望大家發現什麼好的也帖出來大家一起共享,謝謝!!
    XML将被用来描述、存储数据,而HTML则是用来格式化和显示数据的。
    XML DTD/Schema <->; 数据库表结构
    XML 文件          <->; 数据库表内容
    XML的文档格式
      首先介绍XML文档内容的基本单元——元素,它的语法格式如下:
      〈标签〉文本内容〈/标签〉
      元素是由起始标签、元素内容和结束标签组成。用户把要描述的数据对象放在起始标签和结束标签之间。例如:
      <姓名>;王平</姓名>;
      无论文本内容有多长或者多么复杂,XML元素中还可以再嵌套别的元素,这样使相关信息构成等级结构。下面的例子中,在<employees>;的元素中包括了所有职员的信息,每位职员都由<employee>;元素来描述,而<employee>;元素中又嵌套了<name>;和<salary>;元素。
      例1:
      <employees>;
        <employee>;
          <name>;Lars Peterson</name>;
          <salary>;25000</salary>;
        </employee>;
        <employee>;
          <name>;Charlotte M. Cooper</name>;
          <salary>;34500</salary>;
        </employee>;
      </employees>;
      除了元素,XML文档中能出现的有效对象是:处理指令、注释、根元素、子元素和属性。
    ● 处理指令
      处理指令给XML解析器提供信息,使其能够正确解释文档内容,它的起始标识是“<?”,结束标识是“?>;”。常见的XML声明就是一个处理指令:
      <?xml version=“1.0”?>;
      处理指令还可以有其他的用途,比如定义文档的编码方式是GB码还是Unicode编码方式,或是把一个样式单文件应用到XML文档上用以显示。
    ● 注释
      注释是XML文件中用作解释的字符数据,XML处理器不对它们进行任何处理。注释是用“<!--”和“ -->; ”引起来的,可以出现在XML元素间的任何地方,但是不可以嵌套:
      <!--这是一个注释-->;
    ● 根元素和子元素
      如果一个元素从文件头的序言部分之后开始一直到文件尾,包含了文件中所有的数据信息,我们称之为根元素。
      XML元素是可以嵌套的,那么被嵌套在内的元素称为子元素。在前面的例子中?lt;employee>;就是<employees>;的子元素。
    ● 属性
      属性给元素提供进一步的说明信息,它必须出现在起始标签中。属性以名称/取值对出现,属性名不能重复,名称与取值之间用等号“=”分隔,并用引号把取值引起来。例如:   <salary currency=“US$”>; 25000 </salary>;
      上例中的属性说明了薪水的货币单位是美元。
    XML的语法
      XML文档的基本结构由序言部分和一个根元素组成。序言包括了XML声明和DTD(或者是XML Schema),DTD(Document Type Define,文档定义类型)和XML Schema都是用来描述XML文档结构的,也就是描述元素和属性是如何联系在一起的。
      例如,在例1的文档前面加上如下的序言部分,就构成了一个完整的XML文档:
      <?xml version=“1.0”?>;
      <!DOCTYPE employees SYSTEM“employees.dtd”>;
      一个XML文档中有且仅有一个根元素,其他所有的元素都是它的子元素,在例1中,<employees>;就是根元素。
      一个XML文档首先应当是“格式良好的”(Well-Formed),该规定的正式定义位于:
      http://www.w3.org/TR/REC-xml
      “格式良好的”XML文档除了要满足根元素唯一的特性之外,还包括:
      ● 起始标签和结束标签应当匹配:结束标签是必不可少的;
      ● 大小写应一致:XML对字母的大小写是敏感的,<employee>;和<Employee>;是完全不同的两个标签,所以结束标签在匹配时一定要注意大小写一致;
      ● 元素应当正确嵌套:子元素应当完全包括在父辈元素中,下面的例子就是嵌套错误:
      <A>;
        <B>;
        </A>;
      </B>;
      正确的嵌套方式如下:
      <A>;
        <B>;
        </B>;
      </A>;
      ● 属性必须包括在引号中;
    单引号双引号都可以,一般是双引号。 <gangster name='George "Shotgun" Ziegler'>
      ● 元素中的属性是不允许重复的。
    数据既可以存储在子元素中也可以存储在属性中, 我的经验是属性在HTML中可能相当便利,但在XML中,你最好避免使用,把数据存储到子元素中。有些时候应该为一个元素设计一个ID引用,通过这个ID可以引用存取特定的XML元素,就象HTML中的name和id属性一样。  
    XML文档的“有效性”是指一个XML文档应当遵守DTD文件或是Schema的规定,“有效的”XML文档肯定是“格式良好的”,有关内容我们会在以后详细说明。 XML Schema(XML模式)是基于XML的DTD的替代品,DTD和Schema可以相互替代。
    ●XML的名称空间
      XML文档中很可能会定义许多名字相同而意义不同的元素或属性,尤其在把不同的XML文档合而为一时,更容易产生冲突。名称空间就是为了解决这个问题而提出的。它用URI(Uniform Resource Indicator,统一资源指示器)加以区别,是在XML文件的元素和属性中出现的所有名称的集合。如下例:
      <pr:payment xmlns:pr=“http://www. microsoft.com/payroll”>;
      <pr:employee>;Lars Peterson</pr:employee>;
      <pr:description>;Reimburse expenses</pr:description>;
      <pr:total>;199.76</pr:total>;
      </pr:payment>;
      有了名称空间,用户就可以保证在文件中使用的名称是唯一的。对元素的属性xmlns进行定义就表示对该元素指定了一个名称空间。namespace_name必须是一个有效的URI。
      如果省略local_prefix(本地前缀),这时就构成了缺省名称空间:
      <payment xmlns=“http://www.microsoft.com/acct”>;
      <customer>;1234</customer>;
      <amount>;500.00</amount>;
      <date_received>;12-03-2000</date_received>;
      </payment>;
      如果对一个元素定义了缺省名称空间,那么该元素及其子元素,包括它们的属性都会自动地成为该名称空间的一部分,不用再在每一个元素和属性前面一一标明了。
    ●使用XML,空白将被保留
    在XML文档中,空白部分不会被解析器自动删除。
    这一点与HTML是不同的。在HTML中,这样的一句话:
    "Hello              my name is Ordm"将会被显示成:“Hello my name is Ordm”,
    因为HTML解析器会自动把句子中的空白部分去掉。
    ●XML元素命名
    XML元素命名必须遵守下面的规则:
    元素的名字可以包含子母,数字和其他字符。
    元素的名字不能以数字或者标点符号开头。
    元素的名字不能以XML(或者xml,Xml,xMl...)开头。
    元素的名字不能包含空格。
    自己“发明”的XML元素还必须注意下面一些简单的规则:
    任何的名字都可以使用,没有保留字(除了XML),但是应该使元素的名字具有可读性,名字使用下划线是一个不错的选择。
    例如: <first_name>, <last_name>.
    尽量避免使用“-”,“.”,因为有可能引起混乱。
    只要你愿意元素的名字可以很长,但也不要太夸张了哦。命名应该遵循简单易读的原则,例如:<book_title>是一个不错的名字,而<the_title_of_the_book>则显得罗嗦了。
    XML文档往往都对应着数据表,我们应该尽量让数据库中的字段的命名和相应的XML文档中的命名保持一致,这样可以方便数据变换。
    非英文/字符/字符串也可以作为XML元素的名字,例如<蓝色理想><经典论坛>这都是完全合法的名字。但是有一些软件不能很好的支持这种命名,所以尽量使用英文字母来命名。
    在XML元素命名中不要使用":",因为XML命名空间需要用到这个十分特殊的字符。

      在本文开始部分,我们对XML这个新兴的技术做了一个概述,对它的优缺点进行了分析,并对其美好的应用前景进行了展望。在本文后半部分则对XML文档的相关语法、格式做了简要的描述,并介绍了几种有用的开发工具。在以后的内容中,我们会全面展开,深入到XML技术内部,去探索一下这个美妙的世界!

    一、显示XML
      XML文档本身只描述数据内容,它的显示功能由样式单来完成。利用样式单技术时,输出平台不局限于显示器,可以是打印机、绘图仪或者是多媒体播放器。使用独立的样式单文件制定显示格式的一大优势在于:对同一份数据文件可以制定不同的样式风格,应用在不同的场合,使数据能够更合理、更有针对性地表现出来,提高了数据的重用性。
      目前,W3C正式推荐的样式单标准有两种: 一种是层叠样式单CSS(Cascading Style Sheets);另一种是可扩展样式单语言XSL。
      CSS最初是用于制定HTML文档显示格式的,现在也可用来对XML文档进行简单的样式规划。CSS在HTML中的应用极为广泛,但它在文本置换、依据文本内容而决定显示方式、对数据进行排序等智能化的显示功能上略显不足。
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <?xml-stylesheet type="text/css" href="cd_catalog.css"?>
      而XSL则较好地解决了CSS的这些问题,它最常用的功能是将XML的置标转换成为HTML的置标并显示输出。而且XSL还可以将XML文档向任何其他格式的结构文档进行转换。这种功能在B2B的商务模式中有着很好的应用前景。
      XSL利用模式匹配的方法,选择XML文档中需要处理的元素/属性,再针对这些特定的对象制定相应的转换规则。借助XSL,我们还可以添加新的元素/属性,对所有元素/属性进行重新排序、循环处理、条件判断等程序化的控制,使其适应各种复杂的需求。
      在XML文档中引用XSL的格式如下:
      <?xml-stylesheet type=“text/xsl” href=“Employees.xsl” ?>;
      一个XML文档只能引用一个XSL样式单。XML解析器在处理XML文档时,遇到处理指令后,会载入指定的XSL样式单,然后根据其中的规则进行相应的转换处理。


    二、绑定XML
      Web服务器与客户机之间的数据传递方式有三种: HTML页面、XML文档以及XML数据岛。其中,XML数据岛通过特定的标签把XML数据直接嵌入到HTML文档中。采用数据岛作为交互手段,不仅可以使数据具备一定的语义信息,同时还能保持HTML原有的一些特色,如利用用户端脚本程序实现动态信息交换等。
      XML数据岛的实现方法是在HTML文档中使用<XML>;标签。代码的嵌入方式有两种: 直接嵌入(如例1)和外部引用(如例2)。
      例1:
      <XML ID=“MyXMLData”>;
      <?xml version=“1.0” ?>;
      ……XML definitions……
      </XML>;
      例2:
      <XML ID=“MyXMLData” SRC=“http://www.microsoft.com/MyXMLData.xml”>;
      </XML>;
      在插入数据岛之后,就可以把XML中的元素同HTML元素链接在一起,利用HTML的表现手法显示XML数据,这种链接关系被称为绑定。绑定的方式按照HTML元素的性质可以分为两种:单值对象和表格对象。
      单值对象的数据绑定需要在HTML元素中设置DATASRC属性和DATAFLD属性。DATASRC属性是区分XML数据岛对象的唯一标识,并且必须加上前缀“#”;DATAFLD属性则标识了数据岛中的元素对象。例3就是把一个HTML文本输入框与<salary>;元素进行了绑定。
      例3:
      <INPUT TYPE=“TEXT”
      DATASRC=“#MyXMLData”
      DATAFLD=“salary”>;
      至于表格对象,主要是与HTML中的<TABLE>;标签绑定。一般地,可以借助DSO(Data Source Object,数据源对象)等ActiveX控件更方便、有效地处理表格数据。具体使用方法在以后的内容中将做详细介绍。
    XML数据岛可以绑定到HTML元素上(比如表格)。
    在下面的例子中,一个XML数据岛(ID=cdcat)被从外部XML文档载入。一个HTML的表格绑定到此数据岛上。HTML表格内部的span元素使用datafld属性和XML文档相应的XML元素相互绑定。
    <html>
    <body>
    <xml id="cdcat" src="cd_catalog.xml"></xml>
    <table border="1" datasrc="#cdcat">
    <tr>
    <td><span datafld="ARTIST"></span></td>
    <td><span datafld="TITLE"></span></td>
    </tr>
    </table>
    </body>
    </html>


    三、访问XML
      Document Object Model(文档对象模型)简称为DOM,是对Web文档进行应用开发、编程的应用程序接口(API),是W3C公布的一种跨平台的、与语言无关的接口规范。
      DOM采用对象模型和一系列的接口来描述XML文档的内容和结构,即利用对象把文档模型化。这种对象模型实现的基本功能包括:
      ● 描述文档表示和操作的接口;
      ● 接口的行为和属性;
      ● 接口之间的关系以及互操作。
      DOM对结构化的XML文档进行解析,文档中的指令、元素、实体、属性等所有个体都可以用对象模型表示。整个文档的逻辑结构类似一棵树,生成的对象模型就是树的节点,每个对象同时包含了方法和属性。
      利用DOM,开发人员可以进行动态地创建XML文档、遍历结构、添加/修改/删除内容等操作。DOM面向对象的特性,使人们在处理和XML解析相关的事务时节省大量精力,是一种符合代码重用思想的强有力编程工具。


    四、XML解析器
    如果浏览器使用JavaScript作为脚本语言,那么利用下面的代码可以创建XML文档对象:
    var xmlDoc=new ActiveXObject("Microsoft.XMLDOM")
    如果浏览器使用VBScript作为脚本语言,那么利用下面的代码可以创建XML文档对象:
    set xmlDoc=CreateObject("Microsoft.XMLDOM")
    如果在ASP程序中使用VBScript脚本语言,那么就可以使用下面的代码形式:
    set xmlDoc=Server.CreateObject("Microsoft.XMLDOM")
    将XML文档载入解析器
    使用脚本代码可以将XML文档载入解析器。
    下面的代码可以将一个XML文档载入解析器:
    <script type="text/javascript">
    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
    xmlDoc.async="false"
    xmlDoc.load("note.xml")
    // ....... processing the document goes here
    </script>
    第二行代码创建Microsoft XML解析器的实例。
    第三行代码关闭异步载入,确保XML解析器在把XML文档完全载入以前不会对XML文档进行解析。
    第四行则告诉解析器需要载入的XML文档名字是note.xml。
    把纯XML文档由字符载入解析器
    解析器可以从一个文本字符串中载入XML文本。
    下面的代码演示了将文本字符串载入解析器:
    <script type="text/javascript">
    var text="<note>"
    text=text+"<to>Tove</to><from>Jani</from>"
    text=text+"<heading>Reminder</heading>"
    text=text+"<body>Don't forget me this weekend!</body>"
    text=text+"</note>"
    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
    xmlDoc.async="false"
    xmlDoc.loadXML(text)
    // ....... processing the document goes here
    </script>
    注意这里载入字符串使用的是"loadXML()"方法)(而不是前面用过的"load()"方法), "loadXML()"是用于载入字符串,"load()"是用于载入XML文档。
    使用JavaScript语言显示XML数据
    可以使用JavaScript语言来显示XML数据。
    JavaScript (或者 VBScript)可以从XML文档中导入数据,并将这些数据在HTML页面中显示出来。
    <html>
    <head>
    <script type="text/javascript"
    for="window" event="onload">
    var xmlDoc=new ActiveXObject("Microsoft.XMLDOM")
    xmlDoc.async="false"
    xmlDoc.load("xml_note.xml")
    nodes=xmlDoc.documentElement.childNodes
    to.innerText=    nodes.item(0).text
    from.innerText=  nodes.item(1).text
    header.innerText=nodes.item(2).text
    body.innerText=  nodes.item(3).text
    </script>
    <title>HTML using XML data</title>
    </head>
    <body bgcolor="yellow">
    <h1>W3Schools.com Internal Note</h1>
    <b>To: </b>
    <span id="to"> </span>
    <br />
    <b>From: </b>
    <span id="from"></span>
    <hr>
    <b><span id="header"></span></b>
    <hr>
    <span id="body"></span>
    </body>
    </html>


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/2/7 14:04:00
     
     gjcn 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:8
      积分:120
      门派:XML.ORG.CN
      注册:2006/1/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给gjcn发送一个短消息 把gjcn加入好友 查看gjcn的个人资料 搜索gjcn在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看gjcn的博客2
    发贴心情 
    這麼好的文章怎麼沒人看啊 ,發言呀,哈哈!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/2/7 14:33:00
     
     kidball 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:0
      积分:56
      门派:XML.ORG.CN
      注册:2006/2/7

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给kidball发送一个短消息 把kidball加入好友 查看kidball的个人资料 搜索kidball在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看kidball的博客3
    发贴心情 
    顶下啊·~这篇文章很不错哦
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/2/7 16:57:00
     
     一条辉 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:9
      积分:96
      门派:XML.ORG.CN
      注册:2005/3/4

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给一条辉发送一个短消息 把一条辉加入好友 查看一条辉的个人资料 搜索一条辉在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看一条辉的博客4
    发贴心情 
    不错 适合初学者
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/2/9 14:03:00
     
     狐思猫响 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:1
      积分:59
      门派:XML.ORG.CN
      注册:2006/2/13

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给狐思猫响发送一个短消息 把狐思猫响加入好友 查看狐思猫响的个人资料 搜索狐思猫响在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看狐思猫响的博客5
    发贴心情 
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/2/13 10:49:00
     
     wjianchina 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:63
      门派:XML.ORG.CN
      注册:2006/2/8

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给wjianchina发送一个短消息 把wjianchina加入好友 查看wjianchina的个人资料 搜索wjianchina在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看wjianchina的博客6
    发贴心情 
    怎么读取ASP产生的XML呀
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/2/13 11:52:00
     
     bigdinosaur 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:70
      门派:XML.ORG.CN
      注册:2006/2/16

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给bigdinosaur发送一个短消息 把bigdinosaur加入好友 查看bigdinosaur的个人资料 搜索bigdinosaur在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看bigdinosaur的博客7
    发贴心情 
    这篇文章很不错哦
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/2/16 16:59:00
     
     gjcn 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:8
      积分:120
      门派:XML.ORG.CN
      注册:2006/1/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给gjcn发送一个短消息 把gjcn加入好友 查看gjcn的个人资料 搜索gjcn在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看gjcn的博客8
    发贴心情 

    大家看看還需要什麼或者還要問什麼?
    我看我有沒有或知道的,謝謝!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/2/18 12:28:00
     
     Taliban 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:7
      积分:85
      门派:XML.ORG.CN
      注册:2005/10/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Taliban发送一个短消息 把Taliban加入好友 查看Taliban的个人资料 搜索Taliban在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看Taliban的博客9
    发贴心情 
    哦,谢谢了,我喜欢这样的文章.
    楼上大哥,我刚学XML的,我们老师要我们做一个XML的数据库,这我可难了,什么都不知道,你可以给我点提示,或者帮忙下吗?谢谢了
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/2/18 22:54:00
     
     gjcn 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:8
      积分:120
      门派:XML.ORG.CN
      注册:2006/1/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给gjcn发送一个短消息 把gjcn加入好友 查看gjcn的个人资料 搜索gjcn在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看gjcn的博客10
    发贴心情 
    能不能说清楚一些,把问题说明白,看我能不能帮你啊。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/2/18 23:08:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML基础 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/13 23:26:12

    本主题贴数40,分页: [1] [2] [3] [4]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    140.625ms