找回密碼
 註冊
搜索
查看: 5753|回復: 0

xml常見問題{收集新手常問的東西}

[複製鏈接]
發表於 2005-5-12 12:37:32 | 顯示全部樓層 |閱讀模式
xml常見問題{收集新手常問的東西}
A.概述性問題
  A.1 什麼是XML?
  XML 全稱是「可擴展標識語言「(Extensible Markup Language)。之所以稱之為可擴展,是因為它不像HTML 那樣只有固定的形式。它是被用來使SGML 能在萬維網上能應用自如。
  XML並不是一個獨立的,預定義的標識語言。它是一種元語言。它是用來描述其他語言的語言。它允許你自己設計你的標識。(HTML 是一種預定義的標識語言。HTML 只是在一類特定的文件中定義了一種描述信息的方法。而XML 能允許你在不同的文件中定義你自己設計的標識語言。)這是因為XML 是用SGML (「通用標識語言標準」國際標準的標識元語言)書寫的。 
  A.2 XML的目的是什麼?
  XML是被設計用來使SGML 能在萬維網上能自如應用的:方便地定義文件類型,方便地製作和管理用SGML定義的文件,在網上方便地傳輸和共享這些文件。 
  A.3 什麼是SGML?
  SGML的全稱是「Standard Generalized Markup Language「(通用標識語言標準)。它是國際上定義電子文件結構和內容描述的標準。在往上有以下相關資源:
  SGML FAQ: http://www.infosys.utas.edu.au/info/sgmlfaq.txt
  SGML 主頁: http://www.oasis-open.org/cover/sgml-xml.html 
  A.4 什麼是HTML?
  HTML的全稱是「HyperText Markup Language 「(超文本標識語言)。它是SGML在網絡上的一個特殊應用。
  A.5 XML,SGML,HTML是不是一回事?
  不竟然。SGML是XML和HTML的母語言。SGML的覆蓋面很廣。它幾乎涉及人們生活的每一個領域。它被用來描述成千上萬中文件。HTML只是其中一種文件類型,是一種在網上最常用的類型。它定義了一種簡單而固定且含標識的文件類型。
  XML是SGML的簡化版。為了實現更加方便地編寫和理解應用程序,更加方便地在網絡上傳輸信息,更加方便地實現互操作性,XML申略了一些SGML中複雜和不常用的部分。但XML還能和SGML一樣通過解析。
  A.6 SGML/XML 和C/ C++?什麼不同?
  C和C++和Fortran, Pascal, Basic, 或是Java一樣都是編程語言。是用來制定運算和操作的。
  而SGML和XML標是說明性的語言。它們是用來表現信息的。它們使得信息能被程序正常地存儲傳輸和處理。就它們本身而言,並不能產生什麼操作。操作要由應用程序來實現。 
  A.7 是由誰負責XML?
  XML是W3C(World Wide Web Consortium 萬維網絡聯盟)的一個項目。XML不是任何一家公司的私有財產。 
  A.8 為什麼XML是一項重要的技術?
  應為它解決了兩個制約網絡發展的問題:
  1.基礎是單一固定的文件類型。(HTML);
  2.完整的SGML過於複雜。 
  A.9 為什麼不只是擴展HTML?
  不同的廠家在開發HTML時產生了許多有趣但卻不兼容的發明。這已使HTML不堪重負。因為這使得你只能用一種方法表現你的信息。XML卻允許許許多多的個人與組織來創造他們自己的標識語言。應用這些標識語言他們可以在自己的領域內自由地交換信息。HTML在表現信息方面是有缺陷的。當然我們必須承認它現在仍然扮演著重要的角色。但許多新的應用領域需要更加強大和靈活的工具。 
  B.SGML的使用(包括HTML的各種瀏覽器) 
  B.1 為什麼我們要推薦XML而不主張HTML?
  1.我們可以用XML設計自己的文件類型。
  2.信息的內容將更加豐富,更加方便使用。在XML中超文本鏈接的能力比HTML更強。
  3. XML能使得瀏覽器的表現形式更加豐富。
  4.處理XML文件比.處理SGML文件來得簡單。信息的開放性和重複使用的性能鬥將提高。
  5.合法(Valid 參見D中Valid與-formed)的XML文件在SGML中也是合法的。
  B.2 我是不是必須由SGML或是HTML轉向XML?
  不是的。現存的SGML和HTML的應用軟件仍能正常處理現有的文件。 
  C. SGML 和HTML的編寫
  C.1 XML是否已取代了HTML?
  沒有。XML並沒有取代HTML。它只是給了你一種新的選擇。HTML將仍在一段時間內廣泛地被使用。HTML的DTD(參見C中DTD)將既有XML版本,又有SGML版本。但XML版本更加簡單。 
  C.2 XML文件是怎樣的?
  它的基本結構和SGML和HTML差不多。XML文件可以非常簡單。它可以不需要文件類型說明,而直接就是你自己設計的內嵌式標識。如下面一段代碼:
  <?xml version="1.0" standalone="yes"?>
  <conversation>
  <greeting>Hello, world!</greeting>
  <response>Stop the planet, I want to get off!</response>
  </conversation>
  當然它也可以更加複雜些。如DTD聲明,內嵌子集,等等:
  <?xml version="1.0" standalone="no" encoding="UTF-8"?>
  <!DOCTYPE titlepage SYSTEM "
  [<!ENTITY % active.links "INCLUDE">]>
  <titlepage>
  <white-space type="vertical" amount="36"/>
  <title font="Baskerville" size="24/30" alignment="centered">Hello, world!</title>
  <white-space type="vertical" amount="12"/>
  <!-- In some copies the following decoration is hand-colored, presumably by the author -->
  <image location="
  <white-space type="vertical" amount="24"/>
  <author font="Baskerville" size="18/22" style="italic">Vitam capias</author>
  </titlepage> 
  C.3 是不是HTML有一個XML版本?
  已經有好幾個HTML的XML版本,但都只是在準備階段,並未完成。 
  C.4 既然說XML是SGML的子集,我能不能用SGML的工具直接處理XML文件?
  是的.而且非常簡單。一個結構完整的XML文件和HTML文件非常相像。當然也有一些小的而且是重要的不同。在實際操作當中最大的不同就是XML文件必須搖遵守一定的法則。HTML的瀏覽器可以允許一些小的錯誤。而如果是XML就行不通了。
  C.5 什麼是DTD?我能在哪兒找到?
  DTD的全稱是「Document Type Definition「(文件類型定義)。具體地說,DTD是一個或是一些用XML書寫的文件。它包含了對一種文件的正式定義。它定義了文件中的元素能用什麼名字,能放在什麼位置,應該怎樣組合。在這裡舉一個簡單的例子。比如說你想要你的文件可以描述一組<List>,其中每個<List>由可以包含若干個<Item>。那麼你的DTD中應該有以下語句:<!ELEMENT List (Item)+>
  <!ELEMENT Item (#PCDATA)>
  這樣一個框架定義了一個表(list),它可以包含若干個項(items)。每一個項只能包括文本的內容。當處理器處理XML文件時將自動檢查DTD,以此確定文件中元素從哪而來,以及它們之間是什麼關係。上面的框架允許你生成下面的一個表:
  <List><Item>Chocolate</Item><Item>Music</Item><Item>Surfing</Item></List>
  而這樣一個表在屏幕上是怎樣一個表象,取決於你的樣式表(Stylesheet)。在HTML中你要在文件中指定應是怎樣的形式。使用DTD表明你能夠確定一類文章的結構和格式。
  要想找一個DTD看看嗎?實際上,各個領域裡的SGML DTD由成千上萬。你可以參看SGML 的網頁。 
  C.6 我總是聽說DTD的替代者Schema,它到底是什麼?
  有許多XML的開發者並不滿意XML的規範。原因有兩點:
  1.既然XML在說明結構信息是有很多好處,那麼用來描述文件類型的結構的文件(這就是Schema)為什麼不是也用XML書寫的呢?這樣做的好處不光是統一,而且便於用正規的文件工具編輯管理Schema。
  2.過去的DTD對數據的限制不夠。比如說你想要一個元素只取負值,或是必須有一個值,DTD很難做到。 
  C.7 我能用XML作算術運算嗎?
  只要你的文件類型提供算術類型,知識可以的。W3C已經有了一個MathML(Mathematical Markup Language數學標識語言)的計劃。清參看W3C最新(1999年7月)發佈的MathML規範。
  C.8 在XML中,我能使用Java, ActiveX嗎?
  這取決於瀏覽器製造者運用的工具. XML是用來描述信息的; 描述性語言和用來描述內嵌函數功能的語言的目的是使得信息能在客戶端被操作.. XML本身提供了一種定義標識的方法,而這些標識是描述性語言所必需的. XML是一個中立的標準.他不支持或是反對任何一種描述性語言.所以說它是一個開放的領域. 描述性語言是在」Extensible Style Language」XSL (可擴展類型語言).計劃中提出的.
  C.9 我能用Java編寫或是管理XML文件嗎?
  可以.我們可以用任何一種編程語言從任何一種XML格式的信息中提取數據.
  D.高級開發者和應用者(包括網絡管理員和服務器操作人員)
  D.1哪兒可以找到XML的規範?
  請參見: http://www.w3.org/TR/REC-xml
  D.2 "DTDless" ,"valid",和"well-formed"這些術語是什麼意思?
  在完整的SGML中,我們用DTD描述特定文件中的各種標識.但DTD的生成是一件極其複雜的工作.所以XML被設計成可以缺省DTD. DTDless表示您可以創造一個標識而不需正式的定義.當然這也要付出代價.您不能在其他的文件中對同樣的形式採用自動的處理. DTDless的文件是以一種非正式的方式定義它的標識的.標識是在哪兒出現的就在哪兒定義它.但當一個比方說是瀏覽器的XML應用程序打開了一個DTDless的文件,它必須要有辦法來理解文件的結構.但它又沒有DTD,所以規則上有了一些改變. 舉一個例子:
  HTML中的<img> 是被定義為」EMPTY」(空)的.它並不需要」end-tag」(結尾標籤). DTD 的XML應用程序在打開一個缺省DTD. 的文件,讀到<img>時不知道是否需要一個」end-tag」.所以」well-formed」(結構良好)的定義也變得重要了. 」well-formed」可以使得一般元素和」EMPTY」元素區分開來.
  D.2.1 」well-formed」(結構良好的)文件
  1.如果一個文件沒有DTD,它必須在開頭處有一個"Standalone Document Declaration"(獨立文件聲明):
  <?xml version="1.0" standalone="no" encoding="UTF-8"?>
  <foo>
  . <bar> ...<blort/>...</bar>
  </foo>
  2.除了空素以外, 標記必須前後匹配.
  3.所有的」attribute」值都要用引號括起來.
  4. 」EMPTY」元素的tag要麼用」/>」結尾,要麼要補成」non-EMPTY」(非空)的元素. 比如說: <BR>要麼寫為<BR/> 或是<BR></BR>
  5.文件中必須不能出現」markup-start 「(標識開始符), 比如」<」或是「&」.
  6.元素必須遵守SGML的規則,正確嵌套.
  D.2.2」Valid 「(合法的)XML
  合法的XML是指有DTD的文件.它必須是」well-formed」的.
  D.3 在DTD中,我什麼時候用屬性, 什麼時候用元素?
  這並沒有唯一的答案.著取決於您設計文件的風格.以下是兩個極端的例子,它們的功能是一樣的:
  1. <l n="184"><sp>ortia</sp><text>The quality of mercy is not strain』d,</text></l>
  2. <line speaker="ortia" text="The quality of mercy is not strain』d">184</line>
  D.4 SGML 和XML之間還有什麼區別?
  主要的區別在於DTD的內容.為了簡化語法和編寫軟件的過程, XML中對SGML做了很大縮減.
  D.5 現在有哪些XML的軟件可以使用?
  由於更新速度太快,我們建議您參看: http://www.oasis-open.org/cover/xml.html.
  D.6 要使用XML,我是否要改變服務器的軟件?
  要的,但改動不大.您只要編輯您的mime-types文件,加上以下一句:
  application/xml xml XML



經典問答

    一.HTML已經這樣流行了,為什麼還要發展XML?  
      
    簡單地講,HTML不能完成,我們希望XML所要完成的任務。原因很簡單,XML所要完成的任務,必須由元置標語言來完成,而HTML只是一個實例置標語言。 在XML發佈之前,國際互聯網的發展受到HTML如下幾個問題的束縛:  
    1) HTML無法描述數據內容,而這一點恰恰是數據檢索、電子商務所必須的。  
    2) HTML對數據表現的描述能力是十分不夠的,如HTML還不能描述矢量圖形、  科學符號等對象,目前只能通過圖像來表現這些對象。  
    3) HTML實例置標語言的地位,完全不能適應對新標記需求的發展需要。  
      XML的出現,使上述問題都得到很好的解決。  
    試想在互聯網世界,如果大家都講方言,互相交換信息時都要進行翻譯,那將是一個多麼難以溝通和交流的世界。在互聯網世界,XML之所以重要,恰恰是由於它扮演了"國際語言"角色的緣故。此外,XML更為互聯網世界提供了定義各行各業的"專業術語"的工具。  
      
    二.如何在瀏覽器中閱讀XML?  
      
    閱讀XML文檔的工具一般稱為XML解析器, 也稱為XML處理器。 XML處理器將數據傳送到應用軟件, 以便處理, 出版, 查詢, 或顯示。XML不給應用軟件提供 應用程序接口 (API), 它只是把數據傳給應用軟件. XML處理器不解析非構造良好的數據。 Netscape 和 Microsoft 都已經將XML解析器包含在其瀏覽器中。 XML開發者團體提供免費的XML閱讀器和解析器, 以便在應用軟件或XML製作軟件中進行應用。  
      
    三.為什麼要使用XML而不是HTML?  
      
    比較重要的原因有以下六條:  
      1)作者和供應商能使用XML設計自己的文檔類型,不必被HTML所約束。  
      2)由於XML的超文本鏈接能力比HTML強得多,XML提供的信息內容比      HTML更豐富,也更易於使用。  
      3)XML能提供更多更好的機制方便瀏覽器的信息表現和優化性能。  
      4)XML捨棄了SGML的複雜性,因此編寫處理XML的應用程序會很容易。  
      5)信息易於存儲,可重複使用。  
      6)XML文件在SGML環境中也可使用,不一定要局限於在WEB中使用。  
      
    四.可以用Java創建和管理XML文件嗎?  
      
    是的,任何程序設計語言都能被用來從XML形式的源文檔中輸出數據。已經出現了許多的前端和後台工具使得程序設計和數據管理更加方便。下面兩個網址有更加詳細的說明: http://www.markwatson.com/XMLdb_0_1.htm http://developerlife.com  
      
    五.為什麼XML文件的分析結果出現亂碼?  
      
    這是由編碼問題引起的。XML標準規定,XML分析器必須支持「UTF-8」和「UTF-16」編碼,而且必須能夠自動區分這兩種編碼的文件,對於其他編碼(包括常用的中文編碼「GB2312」或「BIG5」)並不要求支持。如果XML文件中包含編碼聲明,分析器則按照聲明的編碼進行處理,否則就按照識別結果進行處理(識別的結果總是「UTF-8」和「UTF-16」中的一種)。因此,如果XML文件的編碼在這兩種之外,你必須在XML文件前加上編碼聲明,如:<?xml version="1.0" encoding="gb2312"?>就表示XML文件的編碼是「gb2312」。  
      
      現有的XML分析器大多不支持中文編碼「GB2312」或「BIG5」,因此無法讀取包含中文的XML文件。你可以使用支持中文編碼的分析器,如MSXML,IBMJAVA4C,IBMJAVA4J等進行XML分析。你也可以用內碼轉換工具,將編碼轉換為「UTF-8」或「UTF-16」後進行解析,然後將解析結果轉換回原來的編碼。本站的軟件園地中的ccnv(Code Converter)就是這樣的工具。當然,你也可以自己寫一個內碼轉換程序。  
      
      關於「UTF-8」和「UTF-16」編碼的詳細信息,請查看本站標準薈萃中的UTF-16和UTF-8標準。  
      
    六.XML如何與數據庫連接?  
      
      
    XML是一種文件格式,它沒有規定與數據庫的連接方法,你需要用傳統的方法連接數據庫,進行數據庫查詢,然後將查詢結果轉化為XML格式。現在有一些工具提供了XML與數據庫的連接過程大都遵循這樣的步驟。下面是一個利用ASP直接生成XML文件的例子,你可以訪問http://www.xml.net.cn/Asps/test/roster1.asp查看執行效果。  
      
    <%@ language="VBScript" %>  
    <?xml version="1.0" encoding="gb2312"?>  
    <?xml:stylesheet type="text/xsl" href="..image oster.xsl"?>  
    <roster>  
    <%  
    set cConn = Server.CreateObject("ADODB.Connection")  
    call cConn.Open("DSN","USER", "WD")  
    set rs = cConn.Execute("SELECT DISTINCT * FROM roster")  
    Do While Not rs.EOF %>  
    <Record>  
    <Name><%=trim(rs("name"))%></Name>  
    <NativePlace><%=trim(rs("NativePlace"))%></NativePlace>  
    <Age><%=trim(rs("Age"))%></Age>  
    <Telephone><%=trim(rs("Telephone"))%></Telephone>  
    </Record>  
    <% rs.MoveNext  
    Loop  
    rs.Close  
    set rs=nothing  
    set cConn=nothing  
    %>  
    </roster>  




xml應用實例



本文介紹3個XML的基本應用實例,旨在帶領你快速步入XML編程世界。實例包括:在.NET中使用XML、讀取XML文件,插入數據到XML文檔中。
  在.NET中使用XML
  如果使用過MSXML3,那麼在.NET應用程序中使用XML將是一個相當簡單的過程。即時沒有接觸過MSXML3,也不要緊,你會發現使用.NET平台提供的相關類也是很容易的一件事情。
  有兩種主要API可用於訪問建立在XML文檔中的數據,它們包括只向前的無緩衝存取以及隨機存取,而且自始至終都使用到文檔對像模型DOM。有關這2個API的類位於System.XML集合中。
  如果要快速有效地訪問XML文檔中的數據,就需要使用XmlTextReader類。這個類採取「拉」模式處理方式,要比簡單XML API(SAX)中的「推」模式處理方式優越許多。使用XmlTextReader類之前首先要引用System.Xml集合,在C#中是使用「using」關鍵字來引用,在Visual Basic中則是使用「imports」關鍵字。引用了集合後,就可以像下面的代碼所示開始例示讀操作了:
  XmlTextReader reader = new XmlTextReader(pathToXmlDoc);
  int elementCount = 0;
  while (reader.Read()) {
  if (reader.NodeType == XmlNodeType.Element) {
  elementCount++;
  }
  }
  XmlTextReader類中有幾個不同的構造器,上面所示的負責接收一個XML文件的路徑作為字符串參數。
  雖然只向前的「拉」模式處理相當有效率,但它卻是只讀的,所以不能允許執行插入、刪除或者更新XML文檔節點的操作。當需要對XML文檔施加更多的控制並需要更大的靈活性時,我們可以看一看文檔對像模型DOM。DOM API的功能將XML文檔中的每一個節點裝載到一個樹形結構中,看起來就像是一個「家譜」。內存中有了這個結構,隨機存取XML文檔中的不同節點就變得可行。
  開始創建DOM樹形結構前,首先引用System.Xml集合,然後例示XmlDocument類:
  XmlDocument xmlDoc = new XmlDocument();
  xmlDoc.Load(pathToXmlDoc);
  XmlNode root = xmlDoc.DocumentElement;
  通過使用XmlDocument類中的相關方法,在樹形結構中添加節點的操作可以很容易地完成。下面的例子演示了如何從一個文件中裝載XML,然後在根節點root下添加一個子元素以及它的相關屬性:
  XmlDocument xmlDoc = new XmlDocument();
  XmlDoc.Load(pathToXmlDoc);
  XmlElement root = xmlDoc.DocumentElement;
  XmlElement newNode = doc.CreateElement("newNode");
  newNode.SetAttribute("id","1");
  root.AppendChild(newNode);
  以上代碼執行後,將產生下面的XML文檔:
  <?xml version="1.0"?>
  <root>
  <newNode id="1"/>
  </root>
  當需要將包含XML的字符串裝載進DOM中時,可以使用XmlDocument類的LoadXml()方法。裝載進去後,就可以按照下面的方式操作XML:
  string myXml = "<root><someNode>Hello</someNode></root>";
  XmlDocument xmlDoc = new XmlDocument();
  xmlDoc.LoadXml(myXml);
  //....manipulation or reading of the nodes can occur here
  除了以上幾種,在System.Xml集合中還有多種其他類可用於執行不同的任務。上面的介紹僅僅是淺嘗則止,大量的應用還需要更多的練習。
  讀取XML文件
  下面介紹如何使用XmlTextReader類讀取XML文檔,並將數據顯示輸出。
  System.XML名稱空間中定義了兩個類-XmlReader與XmlTextReader,其中XmlTextReader類來源於XmlReader類,而XmlTextReader類就可以用於讀取XML文檔,這個文檔的Read函數將讀取文檔內容,直到節點尾部。
  以下是具體的實現步驟:
  1、引用名稱空間
  因為相關XML的類是在System.XML名稱空間中定義的,所以第一件事情就是引用這個名稱空間:
  using System.Xml;
  2、打開XML文檔
  XmlTextReader類的構造器可用於打開一個XML文件。本例程的XML文件叫做xmltest.xml,位於C:\temp目錄下。打開文件c:\temp\xmltest.xml的命令如下:
  XmlTextReader reader = new XmlTextReader("C:\\temp\\xmltest.xml");
  3、讀取數據
  讀取XML文件的數據,可以使用XmlTextReader類的Read方法:
  while ( reader.Read() )
  {
  Console.WriteLine(reader.Name);
  }
  4、完整執行代碼readxml.cs
  namespace WriteToXML
  {
  using System;
  using System.Xml;
  /// <summary>
  /// Summary description for Class1.
  /// </summary>
  public class Class1
  {
  public Class1()
  {
  }
  public static int Main(string[] args)
  {
  try
  {
  XmlTextWriter writer = new XmlTextWriter("C:\\temp\\xmltest.xml", null);
  writer.WriteStartDocument();
  writer.WriteComment("Commentss: XmlWriter Test Program");
  writer.WriteProcessingInstruction("Instruction","erson Record");
  writer.WriteStartElement("p", "person", "urn:person");
  writer.WriteStartElement("LastName","");
  writer.WriteString("Chand");
  writer.WriteEndElement();
  writer.WriteStartElement("FirstName","");
  writer.WriteString("Chand");
  writer.WriteEndElement();
  writer.WriteElementInt16("age","", 25);
  writer.WriteEndDocument();
  }
  catch (Exception e)
  {
  Console.WriteLine ("Exception: {0}", e.ToString());
  }
  return 0;
  }
  }
  }
  插入數據到XML文檔中
  要實現將XML數據插入到一個現存文檔或者一個新文檔中的目的,可以使用XmlNode類和XmlDocument類。具體的實現步驟如下:
  1、引用名稱空間
  因為相關XML的類是在System.XML名稱空間中定義的,所以第一件事情就是引用這個名稱空間:
  using System.Xml;
  2、裝載XML到文檔中
  我們可以使用XmlDocument的LoadXml方法將XML數據裝載到一個文檔中,或者是裝載一個現存的XML文檔。下面的代碼裝載XML數據到文檔中:
  XmlDocument doc = new XmlDocument();
  doc.LoadXml("<XMLFile>" +
  " <SomeData>Old Data</SomeData>" +
  "</XMLFile>");
  3、插入XML數據
  下面的代碼將XML數據插入到文件中,然後保存為InsertedDoc.xml:
  try
  {
  XmlNode currNode;
  XmlDocument doc = new XmlDocument();
  doc.LoadXml("<XMLFile>" +
  " <SomeData>Old Data</SomeData>" +
  "</XMLFile>");
  XmlDocumentFragment docFrag = doc.CreateDocumentFragment();
  docFrag.InnerXml="<Inserted>" +
  " <NewData>Inserted Data</NewData>" +
  "</Inserted>";
  // insert the availability node into the document
  currNode = doc.DocumentElement.FirstChild;
  currNode.InsertAfter(docFrag, currNode.LastChild);
  //save the output to a file
  doc.Save("InsertedDoc.xml");
  }
  catch (Exception e)
  {
  Console.WriteLine ("Exception: {0}", e.ToString());
  }
  代碼執行後,新文檔的內容如下:
  - <XMLFile>
  - <SomeData>
  Old Data
  - <Inserted>
  <NewData>Inserted Data</NewData>
  </Inserted>
  </SomeData>
  </XMLFile>(完)




xml的應用是什麼?xml到底能做什麼?

  首先說,xml的技術有兩項的很顯著的特點。
1,數據和現實的分離。
2,數據的自描述性。
下面我就從這兩個方面,結合自己的經驗和叢書中瞭解的知識,簡單的談一下。
第一:數據和現實的分離。
比如說你手頭上有一篇的資料(我們這裡先假定是文字的資料,因為如果涉及到圖,影像等範圍就太廣了,也不是我只能力所及),是xml的數據的格式,好了,如果你的客戶想通過互聯網看看你的資料。你就可以使用一個aaa.xsl把你的xml的數據格式化為HTML的格式,同時這裡面有個補充一點,因為你可以控制你要顯示的內容,你可以過濾掉對於客戶不能看到的信息。但是這裡面你並沒有動原來的數據。
如果你的老闆想把資料打印出來,作為報表向上級匯報,還是用原來的數據,再寫一個bbb.xsl,把xml的數據輸出為一個漂亮的報表的形式。ok了。
如果你以前的數據是txt的格式,你就必須從新的要做兩種的格式,
一個html的,一個報表的。你的工作最多時copy,copy的
2,數據的自描述性。
比如說我的個人信息。
對於數據庫來說,可能建立一個users的表。建立不同的字段。
數據取得可以是
rs("name")="jiangtianpeng"
rs("Emial")="wfxian@263.net"
rs("Id")="dadapeng"
但是沒有了rs或者對於外部來說又如何的區分id和name的區別。
dadapeng是id?還是name?
jiangtianpeng是name?還是id?

ok
用xml描述一下個人信息
<person>
   <name>jiangtianpeng</name>
   <id>dadapeng</id>
   <natio>china</nation>
....
   <email>wfxian@263.net</email>
</person>

是不是一目瞭然。
實際上面的問題就涉及到了不同系統之間的xml的交換。xml是不同系統之間的橋樑。

我談一下我工作的xml經驗
我現在的工作是一個中文,英文,俄文三種語言的網站,
比如我們通過com組件的得到一個用戶的信息
可能是
<user id='feiddd' name_CN="王" name_EN="ddddf"
name_RU='這裡是俄文' 。。。。等等的信息  />

在中文上就寫一個顯示中文的xsl,
在英文上就寫一個顯示英文信息的xsl。



如果不用這種技術,將會很麻煩的。
----------------------------------------------
本人只會一點點XML.
和ASP.以及FLASH.其它都不太懂.

大家多多指教.
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

Archiver|手機版|彩色筆小沛的知識庫

GMT+8, 2024-4-16 18:29 , Processed in 0.020207 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回復 返回頂部 返回列表