2012-09-09 63 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