用XSL翻譯Web服務應用程式

2021-04-17 08:41:42 字數 1846 閱讀 5475

web

服務應用

程式存在的乙個常見問題是,真正的後端軟體不支援xml(或者至少不支援你

web服務所使用的標準化的xml)。要解決這個問題,很多架構都實施了乙個

翻譯階段,用來解釋收到的xml,並將它轉換成為後端系統能夠識別的更加適當的格式。雖然將xml

翻譯成不同的格式有很多種方式法,但是可擴充套件樣式表語言(extensiblestylesheet language,

xsl)提供了乙個強健的、標準的和對xml友好的解決方案。

一些常見的問題

在xml訊息和將要處理它的應用程式之間,存在著很多種可能需要翻譯的地方。但是,這也存在著很多常見的問題,包括:

對映在本質上是將來自乙個欄位的值重新分配為另乙個值。例如,在xml裡,你可能有乙個accountnumber元素,它需要被重新分配成為乙個叫做customeraccountnumber的新元素。

聚合處理是將兩個或者更多來自xml的專案組合成乙個用於後端系統的單個專案。乙個常見的例子是將姓和名字段組合成單一的姓名(字段)。分割是聚合的逆向操作,它是將xml的乙個值分成兩個或者更多分開的元件。

公式處理一般涉及對乙個或者更多xml值的計算,以獲得乙個用於新應用程式的值。乙個例子是利用xml裡子定單來計算定單的總量。

最後,重排序是更改xml裡專案的序列或者結構的處理,這樣它們就能夠符合目標系統所期望的序列或者結構。

對映舉例

現在讓我們用乙個例子來更加仔細地看看這個過程。我們假設收到的xml就像listing 1裡的一樣:

listing 1: webserviceorder.xml

<?xml version="1.0" ?>

8100

99213

2388

uber widget

1510.95

6273

flangeoid

1052.00

現在,我們的訂單系統需要乙個稍有不同的格式。我們所需要做的是將從web服務收到的訂單轉換成為listing 2裡的這種格式。

<?xml version="1.0" encoding="utf-8" ?>

99213

8100

2388

10.95

15164.25

6273

52.00

10520

翻譯由於這是乙個經過簡化的例子,所以我們在轉換格式的時候需要對xsl模板所做的只有不多的一些事情。我們要注意的第一件事是:我們必須對映一些元素:

把order對映成neworder

把accountnumber對映成customeraccountnumber

把ordernumber對映成customerordernumber

把item對映成orderitem

把priceper對映成customerprice

然後,我們需要將orderitem元素重新安排到乙個叫做orderitems的新元素之下。最後,我們加入乙個叫做subtotal的新元素,它會根據(商品)單價和數量進行計算。

對映翻譯是最簡單的,因為你只需要簡單地在模板裡定義新元素,並指明這個新元素擁有來自收到的xml文件裡元素的值。對items的重排序是通過將item子模板呼叫放進乙個叫做orderitems的新元素裡實現的。最後,使用乙個簡單的xpath表示式來進行計算。listing 3顯示了用來將收到的xml轉換成針對應用程式的xml的xsl文件。

listing 3: translate.xsl

xsl:template>

xsl:template>

xsl:stylesheet>

本文作者brian schaffner是富士通諮詢公司的副主任。他為富士通的技術諮詢公司提供架構、設計和開發支援。

用C 建立Web應用程式

我們將要編寫的c 元件同時作為邏輯層和資料訪問層。如果打算將來把程式移植到另一種資料庫中,比如oracle,那麼需要把邏輯層和資料訪問層分別放在兩個元件中。本文中只使用sql server,所以不需要分開它們。這個應用程式需要兩個頁面 default.aspx 和 productlist.aspx。...

python中web應用程式與web服務

網上衝浪過,那麼可能已經使用過web應用程式進行研究,付帳,傳送郵件 作為乙個程式,你也許用其他語言編寫過web應用程式。http中的4個基本操作通過4個命令 動作實現 get檢索資源的表示形式 post 修改資源使用其符合新的表示形式 put依賴提供的表示形建立新資源 delete 刪除某個已經存...

QT中翻譯應用程式

編寫乙個應用程式可以用到多個國家語言,感覺很好把!qt可以很容易的將編寫的程式翻譯到其他國家語言,下面就來敘述使用的過程 先寫一小段程式 qtranslator的方法load用於裝載翻譯的各種配置,translator會去尋找test.qm,這個檔案中包含了要翻譯的語言,如果不提供這個檔案,那麼程式...