BizTalk开发系列(十二) Schema设计之Group与Order

开发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属性直接指定整个记录的排序类别(如下图所示)。

时间: 2024-12-06 08:40:30

BizTalk开发系列(十二) Schema设计之Group与Order的相关文章

BizTalk开发系列(十五) Schema设计之Qualified 与Unqualified

XML Schema中的命名空间前缀限定包括对元素(Element)或属性(Attribute)的限定,即常见的如 “<ns0:root>...</ns0:root>”之类的格式.一般情况下在BizTalk Schema编辑器中设置架构的属性 elementFormDefault /AttributeFormDefault 在该 schema 的目标命名空间中声明的元素的形式.该值必须是下列字符串之一: "qualified" 或 "unqualifi

BizTalk开发系列(十八) 使用信封拆分数据库消息

之前写了一篇的<BizTalk开发系列(十七) 信封架构(Envelop)> 是关于信封架构及其拆装原理的,都是理论性的内容.信封在BizTalk开发过程中最常用的应该是在读取SQL Server 数据库的时候.一次性读取多条消息,提高了SQL Adapter对SQL Server的读取性能.今天就来做一下这个实例,增强对信封消息的理解. 数据库采用的是SQL Server 2005示例数据库:AdventureWorks 通过select * from Production.Culture选

BizTalk开发系列(十九) BizTalk命名规范

目前BizTalk项目的开发人员比较少,但是在开发过程中还是需要命名规范的约束.根据以往BizTalk项目的经验,整理了BizTalk命 名规范.包括:BizTalk Application, Schema, Map, Pipeline, Orchestration Logic Port, Physical Port等.并提供了相关的示例方便大家参考. <BizTalk命名规范> 通用: 项目中能用英文单词的用单词,否则用拼音. BizTalk项目中的Schema , Map, Orchest

BizTalk开发系列(十六) XML命名空间

BizTalk开发过程中如果有对XML进行开发操作,比如在自定义代码里操作XML消息或者在Mapping的时候使用Xpath对XML进行操 作.则有机会遇到XML命名空间的问题.常见的是使用Xpath选取节点的时候不知道要不要加上命名空间前缀,或者是什么时候该加什么时候不该加.为此, 做一个Sample来校验一下XML命名空间在XML操作过程中的影响. 名称空间是W3C推荐标准提供的一种统一命名XML文档中的元素和属性的机制.使用名称空间可以明确标识和组合XML文档中来自不同标记词汇表的元素和属

BizTalk开发系列(十) ESB Guidance安装笔记

ESB指导工具包(ESB Guidance)是一个运行于BizTalk Server 2006 R2之上的一个框架.详细信息访问ESB指导工具包社区网站 .源码下载 ESB Guidance的安装过程非常复杂牵涉到的问题也是很多方面的.我也是装了数次之后才能成功.以下是安装时的笔记,安装时主要参照ESB Guidance的帮助文档,如果遇到问题可以查此笔记. 1. 安装UDDI不能选择SSL 2. DundasChart 组件运行问题(安装ESB Management Portal需要安装此组件

Silverlight &amp; Blend动画设计系列十二:三角函数(Trigonometry)动画之自由旋转(Free-form rotation)

原文:Silverlight & Blend动画设计系列十二:三角函数(Trigonometry)动画之自由旋转(Free-form rotation) 说到对象的旋转,或许就会联想到对象角度的概念.对象的旋转实现实际上就是利用对象的角度改变来实现的位置变换,在<Silverlight & Blend动画设计系列二:旋转动画(RotateTransform)>一文中有对对象的不同角度变换的实现介绍,本篇要介绍的自由旋转(Free-form rotation)将借助<Fun

BizTalk开发系列(三十三)BizTalk之Excel终极解决方案

Excel作为优秀的客户端数据处理程序得到了广泛的应用. 由于其简单又强大的功能在很多公司或个人的数据处理中占用非常重要的位置. 而BizTalk作为微软的SOA主打产品虽然免费提供了很多Adapter支持各种协议及应用程序. 不过非常可惜没有提供对富客户端程序Excel的"原生态"支持. 所以我们只能自己查找解决办法. 应用程序对Excel的支持网上已经有很多解决方案的,一部分是使用ODBC的excel驱动将Excel作为数据源进行处理,对于规范数据表之类的Excel文档这种方法比较

SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据

原文:SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. 2.具备 Transact-SQL 编程经验和使用 SQL Server Management Studio 的经验. 3.熟悉或了解Microsoft SQL Server 2008中的空间数据类型. 4.具备相应(比如OGC规范.KML规范)的GIS专业理论知识.

嵌入式Linux裸机开发(十二)——iNand简介

嵌入式Linux裸机开发(十二)--iNand简介 一.iNand简介 iNand是SanDisk公司研发的存储芯片,可以看成SD卡或MMC卡芯片化. iNand是SanDisk公司符合eMMC协议的芯片系列名称,内部采用MLC存储颗粒.iNand接口电路设计复杂,功能完善,提供eMMC接口协议,与SoC的eMMC控制器配对通信. 相对MLC NandFlash,iNAND有以下优点: 1.提高性能 A.减少SOC的工作量,节约SOC资源. 如果使用MLC做存储,SOC要参与FLASH的坏块管理