-3

Tibco によって作成された以下の 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>
    </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 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>

しかし、tibco で作成されたこの個々の xml レコードを、上記のように XSLT を使用して単一の xml ドキュメントに変換したいと考えています。タスクを実行できるコードを提供してください。null になる可能性のある他の要素がいくつかあります。

4

1 に答える 1

1

入力ファイルは整形式の XML ではないため、xslt プロセッサはそれを処理できません。私が見る唯一の方法は、最初に xml ファイルを生成し、次のステップで単純な xsl 処理を行うことです。

  1. たとえば、sed または別のツールを使用して、xml イントロ '<?xml version="1.0" encoding="UTF-8"?>' を削除します。
  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

于 2012-09-09T20:41:10.653 に答える