2009-09-03 48 views
3

我正在研究一個XML Schema,它將用於多個應用程序之間的數據傳輸,並非全部都在我們的控制之下。核心數據對於所有人來說都是一樣的,但我們希望允許特定的應用程序存儲額外的數據以允許文件「往返」,以便它們可以保存並重新加載,而不會丟失特定於該應用程序的任何內容。最佳做法是什麼?在XML標準中定義擴展的最佳實踐是什麼?

到目前爲止,我們的想法是爲每個主節點定義一個節點,這將允許我們根據模式進行驗證(沒有意外的節點或節點在錯誤的地方),允許任何東西存儲在擴展節點。

很可能我們也希望將這些擴展模式中的一個或多個作爲模式定義。

請問這是怎麼做的其他標準?我們應該採用什麼?

回答

1

如果原始模式不是爲擴展而編寫的,那麼您的運氣不好。

作爲爲擴展性編寫的模式的示例,請參閱WSDL的模式。請注意,幾乎所有內容都擴展了wsdl:documented類型。需要注意的是許多元素還允許可擴展性:

<complexType name="serviceType"> 
    <complexContent> 
     <extension base="wsdl:documented"> 
      <sequence> 
       <element ref="wsdl:port" minOccurs="0" maxOccurs="unbounded"/> 
       <any namespace="##other" minOccurs="0"/> 
      </sequence> 
      <attribute name="name" type="NCName" use="required"/> 
     </extension> 
    </complexContent> 
</complexType> 

any元素將允許任意的XML被包括在內。


順便說一句,我知道有關XML架構的一切,我從XML Schema由Eric範德VLIST教訓。

出版商:O'Reilly Media公司
出版日期:2002年6月25日
打印ISBN-13:978-0-596-00252-7
頁:

參見第13章,Creating Extensible Schemas

+0

我們正在設計自己的模式,所以可以使它在這個時候做我們想做的任何事情。 – mj2008 2009-09-03 14:54:47

+0

對不起,我錯過了你說「去」的地方。如果你遵循WSDL模式的例子,你會變得很遙遠。 – 2009-09-03 15:00:57

+0

查看我的編輯書籍推薦。 – 2009-09-03 15:04:14