2010-09-07 41 views
0

我寫一個軟件包,其任務是從我公司的主要產品出口DB數據轉換成任意的XML格式(與其他應用程序接口)的任意XML數據文件到我們的數據庫的解析可能是下一個。我用C/C++編寫,產品的數據庫以專有格式存儲爲Pervasive BTRV文件。如何指定從專有數據庫到XML的映射?

我需要寫一個映射格式,可以在我們的內部數據元素映射到XML的,所以如果我出口包被賦予一個映射文件,將創建一個從數據庫的內容所需的XML輸出文件。你會推薦我用什麼策略或工具來實現這一點?

有些選項我已考慮:

  1. 制定針對該產品的通用的XML輸出模式,然後寫XSLT文件,這種格式轉換成任意的XML文件。
  2. 編寫定義輸出文件的結構的XSD架構文件,並設計了處理指令集,告訴我的包,其中數據項的元素去。

我認爲自己是使用XML的新手;我熟悉XSLT和XPath,並開始學習Schema,但可能有明顯的工具可以解決我缺少的這個問題。

更新,8:14p PDT:我正在編寫的包被設計用來掛接到我們的通用外部接口模塊,用於導出將被其他應用程序使用的數據。子集將會自動以其他應用程序可以理解的格式導出,我試圖擴展外部接口模塊,使其能夠輸出這些「最終確定」的數據項XML。

我的工作是定義一種指定其他系統期望的XML格式的方法。由於目標模式可能在應用程序之間差別很大,因此我需要一個可以處理一系列可能的XML模式的解決方案; o需要一個易於配置/維護每個接口的解決方案。

將被調用我的代碼的代碼把數據庫的項目,如一系列嵌套的容器,並且用於格式化每個嵌套層提供鉤。這些掛鉤似乎非常類似於在< XSL的比賽屬性:模板>,這是什麼導致我考慮XSLT作爲一個可能的解決方案)

+0

對於每個信息系統,用例都是其定義的一部分。如果這些導出的XML文檔將被使用,那麼應用程序將會使用這些文檔,並且它們將變得非常龐大並且沒有複雜的模式(數據庫轉儲),然後使用數據庫轉儲。如果這些goint具有複雜的模式,而且僅包含大型應用程序和應用程序,請使用定義的模式導出(也許您必須重新考慮您的數據庫引擎功能)。如果將一個導出的XML文檔用於多個可顯示的格式化文檔,則使用多個XSLT樣式表。 – 2010-09-07 22:06:08

回答

0

我會建議輸出數據庫到一個XML文件,並使用XSLT將其轉換爲對方需要的任何XML格式,對每次轉換使用不同的XSLT樣式表。這樣,您只需將您的XSLT文件更改爲連接各種應用程序。

如果您使用的是模式感知處理器或類似的Altova XMLSpy的工具,我建議你創建你的數據庫的XML文件的模式。它可以爲你節省大量的頭髮。如果另一方的XML很複雜,我也會爲此創建一個模式。

模式的優點,除了驗證你的文件,並更好地理解結構,是像XMLSpy的工具會自動幫你用領域,幫助您使用XPath等。此外,像MapForce這樣的工具甚至可以爲您創建XSLT,如果您爲它提供兩個模式(尚未嘗試)。