2009-09-21 61 views
0

我将HL7模式映射到自制模式。现在我的模式是这样的:BizTalk奇怪的映射问题

<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架构元素,当我使用一个测试文件,我得到一个错误:“在命名空间布拉布拉元素Patienten是不完全的可能元素的列表:患者”。

我注意到我的测试文件没有填充“straat”和“plaats”元素。如果我删除这两个元素的映射链接,地图工作正常。但我显然需要他们。如果我设置了患者元素propertie的minOccurs =“0”,那么验证是全成,但我得到一个空的XML:

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

如果我删除了“患者”元素,只是用其他元素的子元素“ Patienten“,那么地图工作正常!但我需要subroot“Patient”。我一直在用最小和最大来执行任务发生是因为我注意到这些有所作为,但我仍然没有得到我的解决方案。如果我使用测试示例,它工作正常,所以我不明白为什么它不工作...

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

回答

2

您定义的模式需要Patient元素存在,就像您在修改minOccurs属性时所记录的一样。难道你所使用的测试文件和地图根本不会填充任何子元素,因此不会创建Patient元素?

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