1
XSLTを使用してXMLを変換する方法を理解しようとしています。主な目的は、XMLソースデータを取得し、月データに基づいて新しい行を繰り返し作成することです。例えば、現在、各行は、「X」量の月データをすべて1つの行として有する。私はこれを解消しようとしているので、各行には1ヶ月分のデータしか含まれていません。次に、次の行には同じヘッダ情報が含まれますが、元のソース行の次の月のデータが含まれます。うまくいけばそれは理にかなっている。また、私の例に見られるように、その月の数値の新しい値をターゲットXML内の新しい値としてトリガーするために月の列を構成する方法を理解しようとしています。どんな提案も大いに感謝しています。XSLT XMLを新しい要素グループと属性に変換する方法
ソースコード:結果のXML
<?xml version="1.0"?>
<?xml-stylesheet type="txt/xsl" href="transform.xsl"?>
<Report>
<ReportData>
<DataSet>
<Row rowNum="1">
<Column name="Title 1"><Val xsi:type="xsd:string">Sample 1</Val></Column>
<Column name="Title 2"><Val xsi:type="xsd:string">Sample 2</Val></Column>
<Column name="Title 3"><Val xsi:type="xsd:string">Sample 3</Val></Column>
<Column name="Title 4"><Val xsi:type="xsd:string">Sample 4</Val></Column>
<Column name="Title 5"><Val xsi:type="xsd:string">160X600</Val></Column>
<Column name="Title 6"><Val xsi:type="xsd:string" xsi:nil="true"></Val></Column>
<Column name="Title 7"><Val xsi:type="xsd:integer">1325600</Val></Column>
<Column name="MAR_Month_ID"><Val xsi:type="xsd:integer">3</Val></Column>
<Column name="YEAR"><Val xsi:type="xsd:integer">2012</Val></Column>
<Column name="MAR_Month_Total"><Val xsi:type="xsd:float">19.00</Val></Column>
<Column name="MAR_Month_Total_B"><Val xsi:type="xsd:float">22.00</Val></Column>
</Row>
<Row rowNum="2">
<Column name="Title 1"><Val xsi:type="xsd:string">Sample 1</Val></Column>
<Column name="Title 2"><Val xsi:type="xsd:string">Sample 2</Val></Column>
<Column name="Title 3"><Val xsi:type="xsd:string">Sample 3</Val></Column>
<Column name="Title 4"><Val xsi:type="xsd:string">Sample 4</Val></Column>
<Column name="Title 5"><Val xsi:type="xsd:string">160X600</Val></Column>
<Column name="Title 6"><Val xsi:type="xsd:string" xsi:nil="true"></Val></Column>
<Column name="Title 7"><Val xsi:type="xsd:integer">1325600</Val></Column>
<Column name="APR_Month_ID"><Val xsi:type="xsd:integer">4</Val></Column>
<Column name="YEAR"><Val xsi:type="xsd:integer">2012</Val></Column>
<Column name="APR_Month_Total"><Val xsi:type="xsd:float">18.00</Val></Column>
<Column name="APR_Month_Total_B"><Val xsi:type="xsd:float">35.00</Val></Column>
</Row>
<Row rowNum="3">
<Column name="Title 1"><Val xsi:type="xsd:string">Sample 1</Val></Column>
<Column name="Title 2"><Val xsi:type="xsd:string">Sample 2</Val></Column>
<Column name="Title 3"><Val xsi:type="xsd:string">Sample 3</Val></Column>
<Column name="Title 4"><Val xsi:type="xsd:string">Sample 4</Val></Column>
<Column name="Title 5"><Val xsi:type="xsd:string">160X600</Val></Column>
<Column name="Title 6"><Val xsi:type="xsd:string" xsi:nil="true"></Val></Column>
<Column name="Title 7"><Val xsi:type="xsd:integer">1325600</Val></Column>
<Column name="MAY_Month_ID"><Val xsi:type="xsd:integer">5</Val></Column>
<Column name="YEAR"><Val xsi:type="xsd:integer">2012</Val></Column>
<Column name="MAY_Month_Total"><Val xsi:type="xsd:float">25.00</Val></Column>
<Column name="MAY_Month_Total_B"><Val xsi:type="xsd:float">15.00</Val></Column>
</Row>
<Row RowNum="4">
<Column name="Title 1"><Val xsi:type="xsd:string">Sample 5</Val></Column>
<Column name="Title 2"><Val xsi:type="xsd:string">Sample 6</Val></Column>
<Column name="Title 3"><Val xsi:type="xsd:string">Sample 7</Val></Column>
<Column name="Title 4"><Val xsi:type="xsd:string">Sample 8</Val></Column>
<Column name="Title 5"><Val xsi:type="xsd:string">250X600</Val></Column>
<Column name="Title 6"><Val xsi:type="xsd:string" xsi:nil="true"></Val></Column>
<Column name="Title 7"><Val xsi:type="xsd:integer">5600</Val></Column>
<Column name="MAR_Month_ID"><Val xsi:type="xsd:integer">3</Val></Column>
<Column name="YEAR"><Val xsi:type="xsd:integer">2012</Val></Column>
<Column name="MAR_Month_Total"><Val xsi:type="xsd:float">0.00</Val></Column>
<Column name="MAR_Month_Total_B"><Val xsi:type="xsd:float">5.00</Val></Column>
</Row>
<Row RowNum="5">
<Column name="Title 1"><Val xsi:type="xsd:string">Sample 5</Val></Column>
<Column name="Title 2"><Val xsi:type="xsd:string">Sample 6</Val></Column>
<Column name="Title 3"><Val xsi:type="xsd:string">Sample 7</Val></Column>
<Column name="Title 4"><Val xsi:type="xsd:string">Sample 8</Val></Column>
<Column name="Title 5"><Val xsi:type="xsd:string">250X600</Val></Column>
<Column name="Title 6"><Val xsi:type="xsd:string" xsi:nil="true"></Val></Column>
<Column name="Title 7"><Val xsi:type="xsd:integer">5600</Val></Column>
<Column name="APR_Month_ID"><Val xsi:type="xsd:integer">4</Val></Column>
<Column name="YEAR"><Val xsi:type="xsd:integer">2012</Val></Column>
<Column name="APR_Month_Total"><Val xsi:type="xsd:float">18.00</Val></Column>
<Column name="APR_Month_Total_B"><Val xsi:type="xsd:float">35.00</Val></Column>
</Row>
<Row rowNum"6">
<Column name="Title 1"><Val xsi:type="xsd:string">Sample 5</Val></Column>
<Column name="Title 2"><Val xsi:type="xsd:string">Sample 6</Val></Column>
<Column name="Title 3"><Val xsi:type="xsd:string">Sample 7</Val></Column>
<Column name="Title 4"><Val xsi:type="xsd:string">Sample 8</Val></Column>
<Column name="Title 5"><Val xsi:type="xsd:string">250X600</Val></Column>
<Column name="Title 6"><Val xsi:type="xsd:string" xsi:nil="true"></Val></Column>
<Column name="Title 7"><Val xsi:type="xsd:integer">5600</Val></Column>
<Column name="MAY_Month_ID"><Val xsi:type="xsd:integer">5</Val></Column>
<Column name="YEAR"><Val xsi:type="xsd:integer">2012</Val></Column>
<Column name="MAY_Month_Total"><Val xsi:type="xsd:float">18.00</Val></Column>
<Column name="MAY_Month_Total_B"><Val xsi:type="xsd:float">35.00</Val></Column>
</ROW>
</DataSet>
</ReportData>
</Report>
の
<?xml version="1.0"?>
<?xml-stylesheet type="txt/xsl" href="transform.xsl"?>
<Report>
<ReportData>
<DataSet>
<Row rowNum="1">
<Column name="Title 1"><Val xsi:type="xsd:string">Sample 1</Val></Column>
<Column name="Title 2"><Val xsi:type="xsd:string">Sample 2</Val></Column>
<Column name="Title 3"><Val xsi:type="xsd:string">Sample 3</Val></Column>
<Column name="Title 4"><Val xsi:type="xsd:string">Sample 4</Val></Column>
<Column name="Title 5"><Val xsi:type="xsd:string">160X600</Val></Column>
<Column name="Title 6"><Val xsi:type="xsd:string" xsi:nil="true"></Val></Column>
<Column name="Title 7"><Val xsi:type="xsd:integer">1325600</Val></Column>
<Column name="MAR_Month_Total"><Val xsi:type="xsd:float">19.00</Val></Column>
<Column name="MAR_Month_Total_B"><Val xsi:type="xsd:float">22.00</Val></Column>
<Column name="APR_Month_Total"><Val xsi:type="xsd:float">18.00</Val></Column>
<Column name="APR_Month_Total_B"><Val xsi:type="xsd:float">35.00</Val></Column>
<Column name="MAY_Month_Total"><Val xsi:type="xsd:float">25.00</Val></Column>
<Column name="MAY_Month_Total_B"><Val xsi:type="xsd:float">15.00</Val></Column>
</Row>
<RowNum="2">
<Column name="Title 1"><Val xsi:type="xsd:string">Sample 5</Val></Column>
<Column name="Title 2"><Val xsi:type="xsd:string">Sample 6</Val></Column>
<Column name="Title 3"><Val xsi:type="xsd:string">Sample 7</Val></Column>
<Column name="Title 4"><Val xsi:type="xsd:string">Sample 8</Val></Column>
<Column name="Title 5"><Val xsi:type="xsd:string">250X600</Val></Column>
<Column name="Title 6"><Val xsi:type="xsd:string" xsi:nil="true"></Val></Column>
<Column name="Title 7"><Val xsi:type="xsd:integer">5600</Val></Column>
<Column name="MAR_Month_Total"><Val xsi:type="xsd:float">0.00</Val></Column>
<Column name="MAR_Month_Total_B"><Val xsi:type="xsd:float">5.00</Val></Column>
<Column name="APR_Month_Total"><Val xsi:type="xsd:float">24.00</Val></Column>
<Column name="APR_Month_Total_B"><Val xsi:type="xsd:float">10.00</Val></Column>
<Column name="MAY_Month_Total"><Val xsi:type="xsd:float">36.00</Val></Column>
<Column name="MAY_Month_Total_B"><Val xsi:type="xsd:float">15.00</Val></Column></Row>
</DataSet>
</ReportData>
</Report>
例は、どのような援助を感謝しています。 おかげ
つの質問:1.常に月の二つの連続した列を占有します、または連続した列の異なる数は月のためにそこだろうか? 2.あなたは年を取っていますか?提供されたXML文書にそのようなデータはありません。 –
はい。月の売上値には常に2つの列があります。 1つはグロス、もう1つはネットです。 MonthIDの1つの列に加えて。年は常にレポートが実行されている現在の年になります。ありがとう – Icudycm