【发布时间】:2019-08-30 09:47:19
【问题描述】:
在进一步处理之前,我必须在 BizTalk 中验证传入的 XML 消息(示例如下)。 “详细信息”(重复)记录可以在 XML 消息中以任何顺序出现。
<Document>
<Details>
<Name>ABC</Name>
</Details>
<Details>
<Name>DEF</Name>
</Details>
<Details>
<Name>GHI</Name>
</Details>
<Details>
<Name>JKL</Name>
</Details>
<Details>
<Name>MNO</Name>
</Details>
</Document>
我在 Orchestration 的循环中提取所有“名称”字段值,但无法对其进行验证。
如果符合以下 2 个条件,则 XML 应该是有效的:
- “文档”记录必须有 3 个(强制)“详细信息”记录,其中“名称”元素匹配“ABC”、“DEF”和“GHI”
- “文档”记录最多可以有 2 个(可选)“详细信息”记录。如果是,“名称”元素必须匹配“JKL”或“MNO”
【问题讨论】:
-
那么 ABC、DEF、GHI、JKL 和 MNO 是唯一有效的值吗?如果是这样,您可以通过仅允许这些值以及将 Min Occurrence 设置为 3 并将 Max Occurrence 设置为 5 来对其中的一部分进行模式验证。在 Orchestration 中,您可以执行一些 XPath 来检查“ABC”、“ DEF' & 'GHI' 存在,你甚至不需要循环。
-
谢谢@Dijkgraaf。 Schema 是这样的,它也可以具有其他有效值,具体取决于少数其他字段。在 Orchestration 中检查传入消息中的其他字段值后,我现在正在验证这部分。所以不能在模式上设置 Min/Max Occurs。
标签: xml schema biztalk biztalk-2013