2009-09-21 63 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元素?

一種檢查方法可能是爲目標元素之一使用靜態值,這樣可以確保目標文檔不爲空。