2012-09-09 39 views
-3

我有Tibco的如何改造indidual XML消息轉換成通用的XML文檔使用XSLT

<?xml version="1.0" encoding="UTF-8"?> 
<SalesInData> 
    <COMPANYID>AIN2003</COMPANYID> 
    <ENDDATE>20120825</ENDDATE> 
    <FILENAME>2-SG4_2244_20120815.xml</FILENAME> 
    <SalesInRecord> 
     <ROW_NUM>7</ROW_NUM> 
     <BUY_QTY>5</BUY_QTY> 
     <HP_PRODUCT_ID>Apj45685</HP_PRODUCT_ID> 
     <LOCATION_ID/> 
     <LOCATION_NAME>XYZ XY</LOCATION_NAME> 
     <UNIT_BUY_PRICE>999999999</UNIT_BUY_PRICE> 
    </SalesInRecord> 
    <STARTDATE>20120819</STARTDATE> 
    <SUBMITDATE>20120827</SUBMITDATE> 
</SalesInData> 
<?xml version="1.0" encoding="UTF-8"?> 
<SalesInData> 
    <COMPANYID>AIN2003</COMPANYID> 
    <ENDDATE>20120825</ENDDATE> 
    <FILENAME>2-SG4_2244_20120815.xml</FILENAME> 
    <SalesInRecord> 
     <ROW_NUM>1</ROW_NUM> 
     <BUY_QTY>5</BUY_QTY> 
     <HP_PRODUCT_ID>Apj45678</HP_PRODUCT_ID> 
     <LOCATION_ID>2-PQL-3401</LOCATION_ID> 
     <LOCATION_NAME>XYZ el</LOCATION_NAME> 
     <UNIT_BUY_PRICE>999999999</UNIT_BUY_PRICE> 
    </SalesInRecord> 
    <STARTDATE>20120819</STARTDATE> 
    <SUBMITDATE>20120827</SUBMITDATE> 
</SalesInData> 
<?xml version="1.0" encoding="UTF-8"?> 
<SalesInData> 
    <COMPANYID>AIN2003</COMPANYID> 
    <ENDDATE>20120825</ENDDATE> 
    <FILENAME>2-SG4_2244_20120815.xml</FILENAME> 
    <SalesInRecord> 
     <ROW_NUM>1</ROW_NUM> 
     <BUY_QTY>5</BUY_QTY> 
     <HP_PRODUCT_ID>Apj45678</HP_PRODUCT_ID> 
     <LOCATION_ID>2-PQL-3401</LOCATION_ID> 
     <LOCATION_NAME>XYZ el</LOCATION_NAME> 
     <UNIT_BUY_PRICE>999999999</UNIT_BUY_PRICE> 
    </SalesInRecord> 
    <STARTDATE>20120819</STARTDATE> 
    <SUBMITDATE>20120827</SUBMITDATE> 
</SalesInData> 

創建,但預計產量將下面的XML消息:

<?xml version="1.0" encoding="UTF-8"?> 
<SalesInData> 
    <COMPANYID>AIN2003</COMPANYID> 
    <ENDDATE>20120825</ENDDATE> 
    <FILENAME>2-SG4_2244_20120815.xml</FILENAME> 
    <SalesInRecord> 
     <ROW_NUM>7</ROW_NUM> 
     <BUY_QTY>5</BUY_QTY> 
     <HP_PRODUCT_ID>Apj45685</HP_PRODUCT_ID> 
     <LOCATION_ID/> 
     <LOCATION_NAME>XYZ XY</LOCATION_NAME> 
     <UNIT_BUY_PRICE>999999999</UNIT_BUY_PRICE> 
     <GOODS_RECIVED_DATE/> 
    </SalesInRecord> 
    <SalesInRecord> 
     <ROW_NUM>1</ROW_NUM> 
     <BUY_QTY>5</BUY_QTY> 
     <HP_PRODUCT_ID>Apj45678</HP_PRODUCT_ID> 
     <LOCATION_ID>2-PQL-3401</LOCATION_ID> 
     <LOCATION_NAME>XYZ el</LOCATION_NAME> 
     <UNIT_BUY_PRICE>999999999</UNIT_BUY_PRICE> 
     <GOODS_RECIVED_DATE/> 
    </SalesInRecord> 
    <SalesInRecord> 
     <ROW_NUM>1</ROW_NUM> 
     <BUY_QTY>5</BUY_QTY> 
     <HP_PRODUCT_ID>Apj45678</HP_PRODUCT_ID> 
     <LOCATION_ID>2-PQL-3401</LOCATION_ID> 
     <LOCATION_NAME>XYZ el</LOCATION_NAME> 
     <UNIT_BUY_PRICE>999999999</UNIT_BUY_PRICE> 
     <GOODS_RECIVED_DATE/> 
    </SalesInRecord> 
    <STARTDATE>20120819</STARTDATE> 
    <SUBMITDATE>20120827</SUBMITDATE> 
</SalesInData> 

,但我想要改造這個將單獨的xml記錄在tibco中創建爲具有XSLT的單個xml文檔,如上所示。請提供可執行任務的代碼。還有其他一些可以爲空的元素。

+3

請點擊這裏閱讀常見問題解答。本網站不是'請提供代碼'問題的地方。 – bmargulies

+0

什麼是「個人」? – 2012-09-09 16:30:44

+0

Tibco用命名空間爲每個xml記錄創建一個命名空間,但是我想將所有單獨的xml記錄分組到一個xml文檔中,這個文檔可以通過一個常見的XSD進行分析 – user1658369

回答

1

您的輸入文件沒有格式良好的XML,因此沒有xslt處理器可以使用它。我看到的唯一方法是首先生成一個xml文件,然後在下一步中進行簡單的xsl處理。

  1. 刪除xml引擎'<?xml version =「1.0」encoding =「UTF-8」? >「例如有SED或其他工具
  2. 把結果放入自己的根元素
  3. 執行所需的XSLT穿越 -

#simple bash example
sed -e 's/<?xml version="1.0" encoding="UTF-8"?>//g' YOUR_INPUT > temp.file
echo '<?xml version="1.0" encoding="UTF-8"?>' > temp2.file
echo "<MyStart>" >> temp2.file
cat temp.file >> temp2.file
echo "</MyStart>" >> temp2.file
xsltproc YOUR_STYLESHEET temp2.file > YOUR_RESULT