更多内容请查看: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相关推荐

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

    更多内容请查看:BizTalk动手实验系列目录                       BizTalk 开发系列 目前BizTalk项目的开发人员比较少,但是在开发过程中还是需要命名规范的约束.根 ...

  2. 【Qt编程】基于Qt的词典开发系列十二调用讲述人

    我们知道,win7系统自带有讲述人,即可以机器读出当前内容,具体可以将电脑锁定,然后点击左下角的按钮即可.之前在用Matlab写扫雷游戏的时候,也曾经调用过讲述人来进行游戏的语音提示.具体的Matla ...

  3. Android 10.0 SystemUI下拉状态栏UI定制化开发系列(十二)

    目录 1.概述 2.核心代码 3.核心代码部分分析 3.1 NotificationStackScrollLayout.java代码分析 3.2接下来分析Activat

  4. BizTalk 开发系列(四十二) 为BizTalk应用程序打包不同的环境Binding

    更多内容请查看:BizTalk动手实验系列目录                       BizTalk 开发系列 我们在使用微软或者其他公司提供的BizTalk应用程序MSI包的时候经常会有一个目 ...

  5. BizTalk开发系列(二十二) 开发自定义Map Functoid

    更多内容请查看:BizTalk动手实验系列目录                       BizTalk 开发系列 尽管 BizTalk Server 提供许多Functoid以支持一系列不同的操作 ...

  6. BizTalk开发系列(二十九) 宏的使用

    更多内容请查看:BizTalk动手实验系列目录                       BizTalk 开发系列 在BizTalk中可以使用宏集合动态的让BizTalk发送处理程序使用单独的值来替 ...

  7. BizTalk开发系列(三十八)微软BizTalk Server定价和许可[解读]

    更多内容请查看:BizTalk动手实验系列目录                       BizTalk 开发系列 做BizTalk的项目一段时间了,但是对BizTalk的价格和许可还不是很了解.给 ...

  8. Web 前端开发精华文章推荐(jQuery、HTML5、CSS3)【系列十二】

    2012年12月12日,[<Web 前端开发人员和设计师必读文章>系列十二]和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HT ...

  9. BizTalk开发系列(二十三) BizTalk性能指标参考

    更多内容请查看:BizTalk动手实验系列目录                       BizTalk 开发系列 BizTalk项目目前比较少,使用的客户也不多.大多只知道BizTalk是一个不错 ...

最新文章

  1. mysql源码添加一个命令,MySQL ALTER命令
  2. Linux下Tomcat重新启动以及日志
  3. TiDB适用和不适用场景
  4. java+逆向工程怎么运行_MyBatis逆向工程的创建和使用
  5. 美团面试官:讲清楚MySQL结构体系,立马发offer
  6. jquery jeditable 多选插件 (checkbox or select)
  7. 每日记载内容总结46
  8. PHP返回页面空白原因分析-Nginx+PHP
  9. duilib显示html,Duilib 控件类html富文本绘制
  10. 直播程序源码更简单的搭建方法
  11. MySQL 管理工具:Navicat for MySQL 8.0.19 中文版(破解版)
  12. 基于C++ Qt实现的红色警戒3修改器
  13. win10制作CHM格式API
  14. C++ 使用fdk-aac对音频编码
  15. 35种神奇的心理效应
  16. 螺旋传动设计系统lisp_螺旋传动设计
  17. SkyWalking告警
  18. 腾讯云音视频互动课堂trtc,实现逻辑,服务端混流逻辑
  19. 2018吉大计算机学院复试线,吉林大学2018年考研复试分数线【已公布】
  20. mpu6500-gnss组合导航代码分析

热门文章

  1. 4计算准确率_孩子计算总出错?4个好方法帮助低年级学生提高计算准确率!
  2. 数据库系统内部体系结构与外部体系结构
  3. php使用pdo操作mysql数据库实例_php使用PDO操作MySQL数据库实例_PHP
  4. Java 12 - Java StringBuffer和StringBuilder类
  5. winScp中文乱码设置
  6. Confluence 6 考虑使用自定义 CSS
  7. css:学习CSS了解单位em和px的区别
  8. GARFIELD@12-20-2004
  9. 正则查找倒数第二个符合条件的字符串_EXCEL正则表达式的基础语法
  10. tensorflow log 日志级别设置