2008-11-06 81 views
0

查看如Xml or Sqlite, When to drop Xml for a Database?What are good alternative data formats to XML?這樣的問題很明顯,XML最適合用於在系統,組織和軟件程序之間交換數據。對於內部使用,其他格式趨向於更緊湊和可擴展,如自制純文本格式,常規源代碼或使用數據庫。從哪裏可以獲得XML文件格式

一旦需要將數據移出到XML中的某個其他程序/工具/系統/組織:何處以及如何定義封裝在XML文件中的數據格式?很顯然,你需要嚴格的規則來確定哪裏去了什麼,然後需要樹中所有節點的含義。 XML不是自我記錄,這似乎很清楚。

你用別人的設計,還是自己推出?有沒有關於如何進行文檔設計的一些很好的指導?

/雅

回答

1

任何將與外部世界共享的XML文檔都應該有一個模式。使用模式爲您提供了一種拒絕流程無法理解的XML文檔的簡單確定性方式。

由於它是確定性的,因此它也會讓人們試圖與您的系統進行互操作,這種方法類似於簡單的知道他們生成的XML符合您的基本要求的方式。

您還可以使用模式中的註釋元素來記錄模式無法表示的業務規則。這些規則當然不會自動執行,但架構通常是一個明智的地方。 (編寫XSLT也很簡單,它可以從註釋模式中生成可讀HTML文檔。)

如果您有一個好的工具,創作模式會輕鬆得多。如果你寫了很多模式,XML Spy會爲自己付出代價 - 而XML Spy的成本非常高昂。

我一直在做系統集成工作20年,而XML Schema是天賜之物。我的經驗法則是,即使是最簡單的界面,我寫的每個模式都至少可以消除兩次​​會議和五次電話。它還消除了成品系統中的全部缺陷。

1

我如何處理它:

  • 一個元素包裝整個事情(XML標準)爲每個 「對象」 內的
  • 一個元素。
  • 每個Property的元素的屬性,當它們的長度合理時。
  • 該元素的InnerXml文本中包含大量文本的屬性(只提供了一個文本)
  • 元素嵌套在元素中,如果有幾個屬性包含大量文本。

(不好意思,編輯是不會讓我發佈XML。預覽和提交的版本,甚至不匹配)

如果你寫在VisualStudio中的XML文件的樣本版本,有一個工具欄按鈕點擊它會自動爲該文件創建一個xsd模式。將「targetNamespace」屬性添加到XSD,並將其複製到C:\Program Files\Microsoft Visual Studio 8\Common7\Packages\schemas\xml(由VS版本輕微改變)。

然後爲你的根元素添加一個xmlns =「{你的名字空間}」屬性,並且VS會爲你的標籤賦予它Intellisense。

0

您可以使用XML Schema(http://www.w3.org/TR/xmlschema-0/

這是一個好主意寫您使用的所有XML文檔的正確模式,雖然它有時是痛苦定義結構和數據類型和限制XML文檔!否則,您無法保證您寫出的XML與另一個(或同一個!)程序所期望的XML相同。

就我個人而言,我發現XML Schema讓我頭疼,但原則是好的,如果我能避免它,我不會使用沒有正確定義scema的XML格式。

0

這可能取決於您試圖表示的內容。如果已經存在標準格式(即模式),那麼使用該標準是有利的。所以有音樂表現,化學,國際象棋和名單很長。如果你正在做一些沒有被任何現有標準覆蓋的東西,那麼你的角色就是你自己的。

我同意約翰,你應該總是創建一個架構。你永遠不知道你的應用程序將走多遠。

1

實際上,與DTDXSD一起使用時,XML是自行記錄的,與純文本文件相比,這是其優勢之一。

正如你所猜測的,儘管如此,使用XML來正確傳輸數據確實需要一些工作。我發現w3schools.com上的XML tutorialXSD tutorial會有所幫助。如果你順着這條路走,你可能也會對tutorial感興趣,XSLT

起初,作爲Vincent suggests,如果可用的話,您可能想要使用現有的模式。另一方面,如果您構建自己的(可能使用現有的作爲起點),則可能會發現學習XSD更容易。

0

考慮使用稱爲RDF或資源描述框架的更專門形式的XML。 RDF將一切都模擬爲一系列的三元組;主語,謂語,賓語。你最終得到的是一個相當平坦的XML,它引用了處理任意深度的層次結構。

RDF大量使用名稱間距。命名空間的缺點是它使XML看起來更加繁忙,所以人類閱讀起來有點困難。命名空間的好處在於它使您的模式更容易與其他模式混合,從而變得更具可擴展性。

您可以在RDF上使用標準的XML解析器,或者使用許多開源的庫中的一個來執行RDF特定的解析並使用該主題,謂詞和對象調用您的代碼SAX樣式。

如果這聽起來像是一個好主意,那麼這個網站是directory of published RDF schemas,可能會證明是有用的。即使您找不到完美匹配,您也可能會發現一些模式非常接近,並指出了您如何建模自己的數據的一些問題。即使你不使用RDF,也很值得花一點時間研究這個網站。如果您沒有找到自己想要的內容並最終創建自己的RDF Schema,那麼可以考慮在此網站上發佈它。

相關問題