2011-05-19 14 views
1

我正在開發一個相當大的XML Schema來集成多個不同的系統。每個系統都有由多個字段組成的消息。我編寫了模式,以便每個字段都表示爲一種類型(簡單或複雜),而整個消息表示爲具有多種類型序列的元素。具有類型和單獨XML模式文件的約定是什麼?

使用XSD定義類型時,按照如何拆分文件的方式,約定是什麼? 我一直在爲每個我定義的類型分別創建一個XSD文件,然後定義消息並導入所需XSD文件的單個XSD文件。

Here's a simplified example顯示結構(無法發佈圖片,沒有聲望)。

類型模式(字段)具有以「types」結尾的名稱空間,而消息模式具有以「messages」結尾的名稱空間。

我的推理是,如果使用現有類型編寫新類型(如果它們在其自己的文件中定義的話),並且版本化類型可能更容易,則會更容易。

有沒有更好的方法?我對XML和Schemas比較陌生。提前致謝。

回答

0

這是沒有意義的有每一個類型的模式得到進一步對所有這三種不同的架構設計方法的好處/缺點的詳細信息。每個域的一個模式是,但不是每個類型一個。例如,您可能有一個模式來定義與客戶相關的類型,另一個模式可以定義與產品相關的類型。您可能有一個單獨的模式來定義常見的類型,如人員和地址,這可能會被客戶模式以及產品模式(產品銷售代表,供應商地址)使用。

您可以將這些結合到與訂單處理相關的模式中,因爲它涉及客戶爲產品所做的訂單。

+0

嗨,約翰,謝謝你的迴應。假設我有大約500種需要定義的類型,還有80種左右的消息。消息中有一些類型的重用,但不是一噸。你是說我應該在單個文件中定義500個複雜類型,並在另一個文件中定義消息?請記住,類型上的命名空間都是相同的,它們只是在不同的文件中。 – 2011-05-23 12:34:12

+0

我應該澄清,這些消息大部分都在同一個域中。 – 2011-05-23 12:47:43

+0

如果沒有理由將它們分成多個文件,那麼是的,我會將它們保存在一個文件中,而不是使用非理性基礎將它們分成每個文件的一個文件。 – 2011-05-23 13:15:30

0

您創建的獨立xsd文件與彼此完全無關嗎?例如,如果一個xsd文件處理銷售域,另一個處理付款域,則應爲每個模式提供一個唯一的域特定targetNamespace。這種方法被稱爲「異構命名空間設計」,你現在正在使用它。我相信它最適合您的要求。由於您有多個不同的系統,最好將它們保存在具有不同targetNamespaces的單獨xsd文件中。這增強了重用性並減少了類型/字段的冗餘。它還可以防止命名空間衝突。但是,如果您有大量的導入,它將成爲管理的一個挑戰,並且將依賴於導入架構中定義的類型的粒度。

如果它們相互關聯,你應該去「同類命名空間設計」。

XML模式設計還有另外兩種方法:同調命名空間設計和變色龍命名空間設計,它們可能並不適合您的特定需求。您可以在http://technologyandleadership.com/three-schema-design-approaches/

相關問題