BizTalk奇怪的映射问题

时间:2009-09-21 12:34:23

标签: biztalk

我正在将HL7架构映射到自制架构。现在我的架构看起来像这样:

<xs:element name="Patienten">
 <xs:complexType>
 <xs:sequence>
 <xs:element name="Patient">
 <xs:complexType>
 <xs:sequence>
  <xs:element minOccurs="0" name="ContactNummer" nillable="true" type="xs:string" /> 
  <xs:element minOccurs="0" name="Voornaam" type="xs:string" /> 
  <xs:element minOccurs="0" name="Naam" type="xs:string" /> 
  <xs:element minOccurs="0" name="Plaats" type="xs:string" /> 
  <xs:element minOccurs="0" name="Straat" type="xs:string" /> 
  <xs:element minOccurs="0" name="Campus" type="xs:string" /> 
  <xs:element minOccurs="0" name="Kamer" type="xs:string" /> 
  <xs:element minOccurs="0" name="Bed" type="xs:string" /> 
  <xs:element minOccurs="0" name="Ontslagen" type="xs:string" /> 
  <xs:element minOccurs="0" name="CampusCode" type="xs:string" /> 
  <xs:element minOccurs="0" name="TelefoonCode" type="xs:string" /> 
  </xs:sequence>
  </xs:complexType>
  </xs:element>
  </xs:sequence>
  </xs:complexType>
  </xs:element>

当我从HL7模式映射元素时,当我使用测试文件时,我收到一个错误:“命名空间blabla中的元素Patienten不完整。可能的元素列表:患者”。

我注意到我的testfile没有填写“straat”和“plaats”元素。如果我删除这两个元素的映射链接,地图工作正常。但我显然需要它们。如果我将Patient元素属性设置为minOccurs =“0”,则验证成功,但我得到一个空的xml:

  <ns0:Patienten xmlns:ns0="http://nextel.zna.be/ZNA_Nextel_Patient.xsd" /> 

如果我删除“Patient”元素并只使用其他元素作为“Patienten”的子元素,那么地图工作正常!但我需要子根“患者”。我一直玩弄最小和最大的周期发生,因为我注意到这些有所不同,但我仍然没有达到我的解决方案。如果我使用测试示例它工作正常,所以我不明白为什么它不工作...

任何人有任何想法或类似问题吗?

1 个答案:

答案 0 :(得分:2)

您定义的架构要求Patient元素存在,就像您在修改minOccurs属性时所指出的那样。可能是你正在使用的测试文件和地图根本没有填充任何子元素,因此没有创建Patient元素?

检查这种方法的方法可能是为其中一个目标元素使用静态值,这样就可以确保目标文档不为空。