2017-08-08 62 views
0

我將不得不接收XML消息(類型爲xmlDocument),並將整個xml內容複製到另一個強類型xml消息的單個節點。如何使用XSLT將整個xml(<any type>)複製到單個節點?

我創建瞭如下的通用架構,並在Map中使用它來轉換它,但由於MessageType(Namespace#RootNode)未知,因此無法執行此操作。

<?xml version="1.0" encoding="UTF-16"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:b="http://schemas.microsoft.com/BizTalk/2003"> 
    <xs:element name="Root"> 
    <xs:complexType> 
     <xs:complexContent mixed="true"> 
     <xs:restriction base="xs:anyType"/> 
     </xs:complexContent> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 
+2

咦? XSD與XSLT有什麼關係?但是對於複製完整節點樹,谷歌「XSLT身份轉換」。 – o11c

+0

關鍵詞看,信封架構。您是否嘗試將上面的架構設置爲管道中的XML Assembler上的Envelope模式和有效負載? – Dijkgraaf

回答

1

您可以在編排中使用xpath函數。

1)獲取源XML的在System.Xml.XmlElement變量(內容Variable_1):初始化所述目的地信息與消息Assignement形狀

Variable_1 = xpath(Message_1, "/"); 

2):

xmlDocument = new System.Xml.XmlDocument(); 
xmlDocument.LoadXml("<ns0:Root xmlns:ns0='http://BizTalkMassCopy.Schema1'><Field>Field_0</Field><MyRecord></MyRecord></ns0:Root>"); 
Message_2 = xmlDocument; 

3)在相同的形狀中,使用xpath函數分配XmlElement,在我的情況下,目標節點是'MyRecord':

xpath(Message_2, "/*[local-name()='Root' and namespace-uri()='http://BizTalkMassCopy.Schema1']/*[local-name()='MyRecord' and namespace-uri()='']") = Variable_1; 
相關問題