Я изо всех сил пытался выяснить, как преобразовать XML с помощью XSLT.Основная цель - взять исходные данные XML и заставить их повторять / создавать новые строки на основе данных месяцев.Например, в настоящее время каждая строка имеет количество «X» данных о месяцах как одну строку.Я пытаюсь разобраться с этим, чтобы каждая строка содержала данные за один месяц.Тогда следующая строка будет содержать ту же информацию заголовка, но данные следующих месяцев для исходной строки источника.Надеюсь, это имеет смысл.Я также пытаюсь выяснить, как настроить столбец месяца в строке, чтобы инициировать новое значение для числового значения этого месяца в качестве нового значения в целевом 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_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>
Пример результатов 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>
Благодарим Вас за любую помощь.Спасибо