2016-10-20 76 views
1

我繼承了一個BizTalk應用程序,該應用程序從Dynamics CRM更改事件獲取輸入並在地圖中使用Inline XSLT。如何使用BizTalk factoid處理此值

我正在使用VS 2013並使用測試地圖(您在Visual Studio中右鍵單擊地圖)。

我有這個輸入:

<ns0:DynamicsChangeMessage xmlns:ns0="http://XXXXXX"> 
<ns0:entity>entity_0</ns0:entity> 
<ns0:operation>operation_0</ns0:operation> 
<ns0:userId>userId_0</ns0:userId> 
<ns0:Changes> 
    <ns0:Change> 
     <ns0:Key>gcs_universalcredit</ns0:Key> 
     <ns0:Value>true</ns0:Value> 
    </ns0:Change> 
</ns0:Changes> 

,我已經添加到了現有的XSLT:

<xsl:choose> 
    <xsl:when test="gcs_universalcredit = 'true'"> 
     <UniversalCredit>Yes</UniversalCredit> 
    </xsl:when> 
    <xsl:otherwise> 
     <UniversalCredit>No</UniversalCredit> 
    </xsl:otherwise> 
</xsl:choose> 

我得到這樣的輸出:

<ns3:Person mlns:ns3="http://XXXXXX/Schemas/Canonical/Person/1.0" 
xmlns:ns1="http://XXXXXX/Schemas/Canonical/Person/1.0" 
xmlns:ns4="http://XXXXXX/Schemas/Canonical/Address/1.0" 
xmlns:ns2="http://XXXXXX/Schemas/Canonical/PersonRecord/1.0" 
xmlns:ns0="http://XXXXXX/Schemas/Canonical/ProcessHeader/1.0"> 
<ProcessHeader> 
    <Source>DynamicsOnline</Source> 
    <ProcessName>ChangeProcessing</ProcessName> 
    <ProcessType>Update</ProcessType> 
    <ResubmissionCount>0</ResubmissionCount> 
    <TrackingId>3920dcdc-99e5-44c7-bd7a-d0039e60f235</TrackingId> 
</ProcessHeader> 
    <PersonType> 
     <ADUserId>NotApplicable</ADUserId> 
     <TypeOfPerson>Tenant</TypeOfPerson> 
    </PersonType> 
    <PersonRecord> 
     <UniversalCredit>No</UniversalCredit> 
    </PersonRecord> 

我看網頁和嘗試了各種表情的

<xsl:when test="gcs_universalcredit = 'true'"> 

,但我總是得到

<UniversalCredit>No</UniversalCredit> 

,絕不是。

我在做什麼錯?

回答

1

好的我已經完成了。

<xsl:when test="string(s0:Changes/s0:Change[s0:Key='gcs_universalcredit']/s0:Value/text()) = 'true'"> 
+0

您可能想要在接受的答案上標記自己的答案;-) – Dijkgraaf