2012-03-15 154 views
0

我有一個源模式中的地址可以被給予或者作爲多個「AddressLine」的元件或作爲多個「街」元素,或它們的組合。我的目的地模式只有多個「街道」元素。我無法用functoid的(它與定製的XSLT沒有問題,但我寧願使用此映射的圖解法)映射此。我已經試過都映射元素來源的循環functoid的,然後出到這個目標元素,但是這只是產生XSLT通過源「AddressLine」和「街」元素循環,但不寫什麼到目的地!BizTalk映射值映射環接的functoid

我已經粘貼了以下源和目標模式的相關章節:

來源

<xsd:complexType name="Address"> 
    <xsd:sequence> 
     <xsd:element name="AddressLine" type="xsd:string" minOccurs="0" maxOccurs="unbounded"> 
      <xsd:annotation> 
       <xsd:documentation>Free format address lines may be used instead of (or in addition to) specific Street etc elements.</xsd:documentation> 
      </xsd:annotation> 
     </xsd:element> 
     <xsd:element name="Street" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> 
     <xsd:element name="City" type="xsd:string" minOccurs="0"/> 
     <xsd:element name="State" type="xsd:string" minOccurs="0"> 
      <xsd:annotation> 
       <xsd:documentation>State/County/Province</xsd:documentation> 
      </xsd:annotation> 
     </xsd:element> 
     <xsd:element name="PostCode" type="xsd:string" minOccurs="0"> 
      <xsd:annotation> 
       <xsd:documentation>Post/ZIP code</xsd:documentation> 
      </xsd:annotation> 
     </xsd:element> 
     <xsd:element name="Country" minOccurs="0"> 
      <xsd:complexType> 
       <xsd:simpleContent> 
        <xsd:extension base="xsd:string"> 
         <xsd:attribute name="Code" type="xsd:string" use="optional"/> 
         <xsd:attribute name="Codelist" type="xsd:string" use="optional"/> 
        </xsd:extension> 
       </xsd:simpleContent> 
      </xsd:complexType> 
     </xsd:element> 
    </xsd:sequence> 
</xsd:complexType> 

目標

<xs:element name="Address" minOccurs="0"> 
          <xs:complexType> 
           <xs:sequence> 
            <xs:element name="Street" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> 
            <xs:element name="City" type="xs:string" minOccurs="0"/> 
            <xs:element name="State" type="xs:string" minOccurs="0"> 
             <xs:annotation> 
              <xs:documentation>State/County/Province</xs:documentation> 
             </xs:annotation> 
            </xs:element> 
            <xs:element name="PostCode" type="xs:string" minOccurs="0"> 
             <xs:annotation> 
              <xs:documentation>Post/ZIP code</xs:documentation> 
             </xs:annotation> 
            </xs:element> 
            <xs:element name="Country" minOccurs="0"> 
             <xs:complexType> 
              <xs:simpleContent> 
               <xs:extension base="xs:string"> 
                <xs:attribute name="Code" type="xs:string"/> 
               </xs:extension> 
              </xs:simpleContent> 
             </xs:complexType> 
            </xs:element> 
           </xs:sequence> 
          </xs:complexType> 
         </xs:element> 
+0

你想在.NET方法中使用腳本functoid,或者這基本上就像使用XSLT嗎?就個人而言,我認爲在.NET中編碼比在XSLT中編碼要容易。 – 2012-03-15 19:14:31

+0

我同意,它會更容易恢復到代碼,但我想,如果/使用的functoid怎麼可以這樣做就知道了。 – 2012-03-19 16:05:59

+0

在表循環OCH表提取看着? http://geekswithblogs.net/evankoch/archive/2007/08/07/114470.aspx – Riri 2012-03-21 11:03:30

回答

0

您對循環鏈接functoid的定義只有循環結構。要在定義循環結構後獲取實際數據,必須連接源節點和目標節點。

對於你的榜樣,拖放到設計表面上的循環functoid的。將AddressLine和Street從源連接到循環functoid。然後將循環functoid連接到目的地的街道。現在,將來源中的AddressLine和Street直接連接到目的地的Street。

希望這是有道理的。