2012-07-03 4 views
0

의 필드를 포함합니다 : XSLT 도움이 내가 XML 다음 한은 XML

<?xml version="1.0" encoding="utf-8"?> 
<Rowsets> 
    <Rowset> 
     <Columns> 
      <Column Description="DrilldownDepth" MaxRange="1" MinRange="0" Name="DrilldownDepth" SQLDataType="4" SourceColumn="DrilldownDepth"/> 
      <Column Description="ABC" MaxRange="1" MinRange="0" Name="ABC" SQLDataType="4" SourceColumn="ABC"/> 
      <Column Description="DEF" MaxRange="1" MinRange="0" Name="DEF" SQLDataType="-1" SourceColumn="DEF"/> 
      <Column Description="PQR" MaxRange="1" MinRange="0" Name="PQR" SQLDataType="-1" SourceColumn="PQR"/> 
     </Columns> 
     <Row> 
      <DrilldownDepth>1</DrilldownDepth> 
      <ABC>25</ABC> 
      <DEF>DDD</DEF> 
      <PQR>PPP</PQR> 
     </Row> 
     <Row> 
      <DrilldownDepth>1</DrilldownDepth> 
      <ABC>16</ABC> 
      <DEF>AAA</DEF> 
      <PQR>BBB</PQR> 
     </Row> 
     <Row> 
      <DrilldownDepth>1</DrilldownDepth> 
      <ABC>19</ABC> 
      <DEF>SEE</DEF> 
      <PQR>HELP</PQR> 
     </Row> 
    </Rowset> 
</Rowsets> 

지금 나는 모든 행에 추가해야합니다. 그러므로 XML은 다음과 같이 보일 것입니다 :

<?xml version="1.0" encoding="utf-8"?> 
<Rowsets> 
    <Rowset> 
     <Columns> 
      <Column Description="DrilldownDepth" MaxRange="1" MinRange="0" Name="DrilldownDepth" SQLDataType="4" SourceColumn="DrilldownDepth"/> 
      <Column Description="ABC" MaxRange="1" MinRange="0" Name="ABC" SQLDataType="4" SourceColumn="ABC"/> 
      <Column Description="DEF" MaxRange="1" MinRange="0" Name="DEF" SQLDataType="-1" SourceColumn="DEF"/> 
      <Column Description="PQR" MaxRange="1" MinRange="0" Name="PQR" SQLDataType="-1" SourceColumn="PQR"/> 
     </Columns> 
     <Row> 
      <DrilldownDepth>1</DrilldownDepth> 
      <ABC>25</ABC> 
      <DEF>DDD</DEF> 
      <PQR>PPP</PQR> 
      <XYZ></XYZ> 
     </Row> 
     <Row> 
      <DrilldownDepth>1</DrilldownDepth> 
      <ABC>16</ABC> 
      <DEF>AAA</DEF> 
      <PQR>BBB</PQR> 
      <XYZ></XYZ> 
     </Row> 
     <Row> 
      <DrilldownDepth>1</DrilldownDepth> 
      <ABC>19</ABC> 
      <DEF>SEE</DEF> 
      <PQR>HELP</PQR> 
      <XYZ></XYZ> 
     </Row> 
    </Rowset> 
</Rowsets> 

변환/XSLT를 사용하면 어떻게됩니까?

나는 다양한 XSLT를 시도했지만 어떻게 든 그것을 성취 할 수 없다.

Soham

답변

1

이 간단한 XSLT :

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output omit-xml-declaration="no" indent="yes"/> 
    <xsl:strip-space elements="*"/> 

    <!-- Template #1 --> 
    <xsl:template match="node()|@*"> 
    <xsl:copy> 
     <xsl:apply-templates select="node()|@*"/> 
    </xsl:copy> 
    </xsl:template> 

    <!-- Template #2 --> 
    <xsl:template match="Row"> 
    <xsl:copy> 
     <xsl:apply-templates /> 
     <XYZ></XYZ> 
    </xsl:copy> 
    </xsl:template> 

</xsl:stylesheet> 

... 오리지널 XML인가 :

<?xml version="1.0" encoding="UTF-8"?><Rowsets> 
    <Rowset> 
    <Columns> 
     <Column Description="DrilldownDepth" MaxRange="1" MinRange="0" Name="DrilldownDepth" SQLDataType="4" SourceColumn="DrilldownDepth"/> 
     <Column Description="ABC" MaxRange="1" MinRange="0" Name="ABC" SQLDataType="4" SourceColumn="ABC"/> 
     <Column Description="DEF" MaxRange="1" MinRange="0" Name="DEF" SQLDataType="-1" SourceColumn="DEF"/> 
     <Column Description="PQR" MaxRange="1" MinRange="0" Name="PQR" SQLDataType="-1" SourceColumn="PQR"/> 
    </Columns> 
    <Row> 
     <DrilldownDepth>1</DrilldownDepth> 
     <ABC>25</ABC> 
     <DEF>DDD</DEF> 
     <PQR>PPP</PQR> 
     <XYZ/> 
    </Row> 
    <Row> 
     <DrilldownDepth>1</DrilldownDepth> 
     <ABC>16</ABC> 
     <DEF>AAA</DEF> 
     <PQR>BBB</PQR> 
     <XYZ/> 
    </Row> 
    <Row> 
     <DrilldownDepth>1</DrilldownDepth> 
     <ABC>19</ABC> 
     <DEF>SEE</DEF> 
     <PQR>HELP</PQR> 
     <XYZ/> 
    </Row> 
    </Rowset> 
</Rowsets> 
:

<?xml version="1.0" encoding="UTF-8"?> 
<Rowsets> 
    <Rowset> 
    <Columns> 
     <Column Description="DrilldownDepth" MaxRange="1" MinRange="0" Name="DrilldownDepth" SQLDataType="4" SourceColumn="DrilldownDepth"/> 
     <Column Description="ABC" MaxRange="1" MinRange="0" Name="ABC" SQLDataType="4" SourceColumn="ABC"/> 
     <Column Description="DEF" MaxRange="1" MinRange="0" Name="DEF" SQLDataType="-1" SourceColumn="DEF"/> 
     <Column Description="PQR" MaxRange="1" MinRange="0" Name="PQR" SQLDataType="-1" SourceColumn="PQR"/> 
    </Columns> 
    <Row> 
     <DrilldownDepth>1</DrilldownDepth> 
     <ABC>25</ABC> 
     <DEF>DDD</DEF> 
     <PQR>PPP</PQR> 
    </Row> 
    <Row> 
     <DrilldownDepth>1</DrilldownDepth> 
     <ABC>16</ABC> 
     <DEF>AAA</DEF> 
     <PQR>BBB</PQR> 
    </Row> 
    <Row> 
     <DrilldownDepth>1</DrilldownDepth> 
     <ABC>19</ABC> 
     <DEF>SEE</DEF> 
     <PQR>HELP</PQR> 
    </Row> 
    </Rowset> 
</Rowsets> 

...는 원하는 결과를 산출

설명 :

  • 템플릿 # 1은 ID 템플릿입니다. 모든 노드/속성을있는 그대로 복사합니다 (후속 템플릿에서 덮어 쓰지 않는 한).
  • 템플릿 # 2는 모든 <row> 요소를 복사하고 (아이디 템플릿을 통해) 자식을 처리 한 다음 원하는 <XYZ> 노드를 추가합니다.
+0

와우! .. 그리고 그것은 나의 요구를 충분하게한다. .... 도움에 대한 톤 감사. –

+0

나의 기쁨, @ Soham! 위/아래 투표 수 근처에서 물음표 기호를 전환하여 정답을 표시 할 수 있습니다. :) – ABach