BizTalk开发系列(十二) Schema设计之Group与Order
更多內容請查看:BizTalk動手實驗系列目錄
? ? ? ? ? ? ? ? ? ? ??BizTalk 開發系列
????? 開發BizTalk項目的時候會先約定各系統之間往來的消息格式. 由于BizTalk內部唯一使用XML文檔。因此消息的格式為XML Schema(XML Schema 用于描述 XML 文檔的結構)。雖然BizTalk提供了對于XML消息的驗證功能。但是往往在BizTalk Schema設計器設計Schema的時候對于Group的用途不是很在意。今天我們來了解一下它的作用,希望對于設計靈活的Schema有點幫助。
???? 首先,我們來了解一下Group的概念,在W3C的定義中. Group是用于定義在復雜類型定義中使用的元素組。BizTalk 定義的Schema當然也是符合W3C規范的.但是Group概念跟W3C規定的稍微有點區別的:除了Attriubte Group(元素組)之外通過BizTalk Schema設計的Group不會真正創建組,即在Schema文件中不會出現Group Name。而是通過相應的Order指示器定義一個復雜類型。我們以下講的Group都是通過BizTalk Schema設計器定義的Group.
???? 從Schema設計器中可以得到以下幾種類型的Group:
???????? 1. Sequence 規定子元素必須按照特定的順序出現
???????? 2. Choice 指示器規定可出現某個子元素或者可出現另外一個子元素(可理解為單選)
???????? 3. All 子元素能夠以任意順序出現,每個子元素可出現零次或一次。
???????? 4. Attriubte 屬性組
? Group 示例
???? 打開VisualStudio創建一個BizTalk項目并且新建一個Schema文件。在Schema文件上右擊屬性在輸入輸出屬性中輸入同一個文件的路徑。在接下來的測試中可以直接通過右擊Schema選擇生成實例和驗證實例這兩項目來測試效果。
? Sequence Group
????? 在Root節點中新建一個Record(記錄)節點,名為SequenceRecord。在該節點新建Sequence Group. 在Group下創建三個Element(元素)。如下圖所示
????? 生成Schema的XML實例,打開源碼可得到如下的XML內容。?
<ns0:Root xmlns:ns0="http://schemasample.schema1"/>? <SequenceRecord>
??? <First>First_0</First>
??? <Second>Second_0</Second>
??? <Third>Third_0</Third>
? </SequenceRecord>
</ns0:Root>?
???? 驗證Schema實例可以輸出窗口看到成功通過驗證的消息。這時更改節點的位置.將Third節點移到First節點之前,保存文件。再次驗證Schema實例。可以在輸出窗口看到如下消息:
? E:\Projects\SchemaSample\Msgs\Schema1.xml: error BEC2004: The element 'SequenceRecord' has invalid child element 'Third'. List of possible elements expected: 'First'.?
Choice Group
??? 在Root節點中新建一個Record(記錄)節點,名為ChoiceRecord。在該節點下新建Choice Group. 在Group下創建兩個Element(元素)。如下圖所示
?? 生成Schema的XML實例.打開源碼可得到如下XML內容(節選)
<ChoiceRecord>??? <Female>Female_0</Female>
? </ChoiceRecord>?
? 驗證Schema實例可以輸出窗口看到成功通過驗證的消息。這時在ChoiceRecord節點下添加如下內容:
<Male>Male_0</Male>?保存文件,再次驗證Schema實例。在輸出窗口得到如下內容:
E:\Projects\SchemaSample\Msgs\Schema1.xml: error BEC2004: The element 'ChoiceRecord' has invalid child element 'Male'.這時可去掉Female節點,再次驗證。在輸出窗口亦可看到驗證成功的消息。
Attriubte Group
在Root節點中新建一個Record(記錄)節點,名為AttributeGroup。在該節點下新建Attribute Group. 在Group下創建兩個Attribute(屬性)。如下圖所示
設計器只允許在Attribute Group下面創建Attribute字段。
??
生成Schema的XML實例可得到如下內容(節選)
<AttributeRecord Attribute_1="Attribute_1_0" Attribute_2="Attribute_2_1"?/>??
總結
通過以上的Sample了解了BizTalk Group的類別及作用。Sequence,Choice,All類型是W3C中定義的Order指示器(Order 指示器用于定義元素的順序),但不知為何ALl Group一直是灰色的。所以本實例就沒有對All類型進行測試。 另外還可能通過直接定義Record的Group Order Type屬性直接指定整個記錄的排序類別(如下圖所示)。
轉載于:https://www.cnblogs.com/cbcye/archive/2008/10/05/1304159.html
總結
以上是生活随笔為你收集整理的BizTalk开发系列(十二) Schema设计之Group与Order的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Springboot + Mybati
- 下一篇: 原生类型的autoboxing和auto