本主题涉及 XML 模式生成的行为。例如,可以使用从消息定义文件生成的模式在以后验证由 WebSphere Message Broker 编写的 XML 实例文档。
不严格的生成影响内容验证设置为开放/开放定义或组合设置为无序集的复杂类型是如何在生成的模式中渲染的。注意,这样的验证模式将允许比 MRM 解析器验证更广范围的消息。
<element name="xmlNameOfMessage"> <complexType> <sequence> <any processContent="lax" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType> </element>
对于内容验证设置为开放定义的,使用下列模式:(所列的名称空间是包含消息集中定义的所有名称空间。)
<element name="xmlNameOfMessage"> <complexType> <sequence> <any processContent="lax" minOccurs="0" maxOccurs="unbounded" namespace="http://www.ns1 http://www.ns2" /> </sequence> </complexType> </element>
<element name="xmlNameOfMessage"> <complexType> <sequence maxOccurs="unbounded" minOccurs= "(minOccurs of original sequence) * (items in original sequence)"> <choice> .. sequence contents .. </choice> </sequence> </complexType> </element>
严格的生成影响内容验证设置为开放/开放定义或组合设置为无序集的复杂类型是如何在生成的模式中渲染的。注意,这样的验证模式将允许比 MRM 解析器验证更窄范围的消息。
严格是缺省生成选项,且在没有消息扩展的情况下,生成匹配消息定义文件中保存的模式的模式。
如果生成模式时指定了 XML 物理格式,有线格式定制将应用于逻辑模型。这些属性控制当元素在 XML 有线格式的消息中出现时模型中的元素实际渲染的方式。请参阅XML 呈现选项以获取可用的不同的渲染选项。下面给出的生成的模式示例显示对于局部元素可用的不同渲染选项生成了什么;注意这些示例不修改任何标识特性名称或值特性名称属性的名称空间,并假设 complexType1 中指定的所有元素是模式内置类型字符串。
<xsd:complexType name="complexType1"> <xsd:sequence> <!-- Local element Render = 'XMLElement' --> <xsd:element name="localElement1" type="xsd:string"/> <!-- Local element Render = 'XMLElementAttrID' ID Attribute Name = 'id' --> <xsd:element name="localElement2"> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="id" type="xsd:string"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <!-- Local element Render = 'XMLElementAttrVal' Val Attribute Name = 'val' --> <xsd:element name="localElement3"> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="val" type="xsd:string"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <!-- Local element Render = 'XMLElementAttrIDVal' ID Attribute Name = 'id' Val Attribute Name = 'val' --> <xsd:element name="localElement4"> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="val" type="xsd:string"/> <xsd:attribute name="id" type="xsd:string"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> </xsd:sequence> <!-- Local element Render = 'XMLAttribute' --> <xsd:attribute name="localElement5" type="xsd:string"/> </xsd:complexType>
不支持 xsd:Attributes 的渲染。用户只能更改属性的名称。
这些都在消息定义文件中建模,因为元素的 minOccurs 和 maxOccurs 都设置为 0 且具有一个预定义的 ComIbmMrm_xxx 类型之一。 在模式生成期间,这种元素的类型更改为各自 ComIbmMrm_xxx 类型的基本类型。
如果有从这些 ComIbmMrm_xxx 类型继承的全局简单类型,这些更改从相应的 ComIbmMrm_xxx 类型继承。
生成的模式文件将不会出现任何这些 ComIbmMrm_xxx 类型。
例如,带有下面定义的类型的全局元素:
<element name="globalElement1" type="ns1:ComIbmMrm_BaseValueBinary"/>
将导致生成的模式文件全局元素带有下面定义的相应的 xsd 基本类型:
<element name="globalElement1" type="hexBinary"/>