1
XSLT를 사용하여 XML을 변환하는 방법을 알아 내려고 애 쓰고 있습니다. 주요 목표는 XML 소스 데이터를 가져 와서 월 데이터를 기반으로 새로운 행을 반복/작성하도록하는 것입니다. 예를 들어, 현재 각 행에는 "X"양의 월 데이터가 모두 하나의 행으로 있습니다. 각 행마다 한 달 분의 데이터 만 포함 할 수 있도록이 문제를 해결하려고합니다. 다음 행에는 동일한 헤더 정보가 포함되지만 원래 소스 행의 다음 달 데이터는 포함됩니다. 다행히도 그것은 의미가 있습니다. 필자는 예제에서 볼 수 있듯이 해당 월의 숫자 값에 대한 새 값을 대상 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 문서에는 그러한 데이터가 없습니다. –
예. 월 매출액에 대해 항상 두 개의 열이 있습니다. 하나는 총에 대한 것이고 다른 하나는 그물에 대한 것입니다. MonthID에 대한 하나의 열에 더하여. 연도는 항상 보고서가 실행되는 현재 연도로 이동합니다. 감사 – Icudycm