在這一步中我們要解決的最大的問題是怎樣將我們的數據轉變成合作者指定的格式。在這個例子中合作伙伴A要求運送詳細信息如下:
<SHIPTO> <SHIPTONAME>John Doe</SHIPTONAME> <ADDRESS1>Street Address1</ADDRESS1> <ADDRESS2>Apt 1</ADDRESS2> <CITY>CityName</CITY> <STATE>ST</STATE> <ZIP>88888</ZIP> <COUNTRY>US</COUNTRY> <SHIPPING_METHOD>ups_ground</SHIPPING_METHOD> </SHIPTO>
伙伴B的要求是:
<OrderShippingDetails> <Address line="1">John Doe</Address> <Address line="2">Street Address1</Address> <Address line="3">Apt 1</Address> <Address line="4">CityName,ST 88888</Address> <Address line="5">US</Address> </OrderShippingDetails>
這兒,我們看到問題存在于轉換運送信息的時候。一個完全的訂單是相當復雜的。讓我們看一下XSL代碼也就是轉換我們的運送信息到輸出適合合作伙伴A的需要:
<SHIPTO> <SHIPTONAME> <xsl:value-of select="OrderShipping_Details/Name"/> </SHIPTONAME> <ADDRESS1> <xsl:value-of select="OrderShipping_Details/Address1"/> </ADDRESS1> <ADDRESS2> <xsl:value-of select="OrderShipping_Details/Address2"/> </ADDRESS2> <CITY> <xsl:value-of select="OrderShipping_Details/City"/> </CITY> <STATE> <xsl:value-of select="OrderShipping_Details/State"/> </STATE> <ZIP> <xsl:value-of select="OrderShipping_Details/PostalCode"/> </ZIP> <COUNTRY> <xsl:value-of select="OrderShipping_Details/Country"/> </COUNTRY> <xsl:apply templates select="OrderShipping_Details/ShipMethod"/> </SHIPTO>
還有轉換我們的運送方法到合作者,我們調用這個模板:
<xsl:template match="ShipMethod"> <xsl:element name="SHIPPING_METHOD"> <xsl:choose> <xsl:when test=".[.='UPS Next Day Air Saver']">ups_next_day</xsl:when> <xsl:when test=".[.='Standard Shipping']">ups_ground</xsl:when> <xsl:when test=".[.='US Postal Service']">us_firstclass</xsl:when> <xsl:when test=".[.='Federal Express']">us_fedex_priority</xsl:when> <xsl:otherwise>UNKNOWN ?<xsl:value-of select="."/></xsl:otherwise> </xsl:choose> </xsl:element> </xsl:template>
XSL文件是這個應用程序真正的心臟。在步驟一中,處理程序知道如何把我們的數據轉入我們內部的XML訂單文檔。文檔元素之一指示了XSL文件的目錄位置。在此步驟中,處理程序整理此文件,并使用它來轉換到數據包和標簽。在步驟三中,此處理程序動態地使用這些在標簽中的信息來發送數據包。
盡管,當前的系統要求支持發送訂單給兩個合作伙伴,我們能夠簡單的擴展這個應用程序支持多個伙伴。系統總是以同樣的方式做步驟一和步驟二。我們可以簡單地寫一個XSL文件,這個文件將用來解決轉換我們的數據時的細節問題。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/