IT_Programming/XML

xml문서를 xml문서로 변환하는 xslt

JJun ™ 2007. 9. 30. 13:17

<?xml version="1.0" encoding="euc-kr"?>
<xsl:stylesheet version="1.0" xmlns:xsl="
http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" indent="yes"/>

<xsl:template match="/">

  <xsl:for-each select="*">
  <!-- 첫번째 노드 검색 -->
    <xsl:element name="{name()}">
      <xsl:for-each select="*">
      <!-- 첫번째의 모든것을 element로 담는다. -->
        <xsl:element name="{name()}">
   <xsl:choose>
   <!-- 만약 노드라면... -->
   <xsl:when test="node()">
   <!-- 한 단계의 레벨로 더 들어간다. -->
            <xsl:for-each select="*">
              <xsl:element name="{name()}">
       <!-- 두번째 레벨의 것을 노드로 만든다 -->
         <xsl:choose>
  <!-- 만약 노드라면 -->
  <xsl:when test="node()">
    <xsl:for-each select="*">
    <!-- 자식 element로 만든다. -->
      <xsl:element name="{name()}">
        <xsl:value-of select="." />
      </xsl:element>
    </xsl:for-each>
  </xsl:when>
  <xsl:otherwise>
    <xsl:value-of select="." />
  </xsl:otherwise>
  </xsl:choose>
       </xsl:element>
     </xsl:for-each>
   </xsl:when>
  
<!-- 첫번째 노드만 존재한다면  -->
   <xsl:otherwise>
   <!-- 바로 내용을 뿌린다. -->
     <xsl:value-of select="." />
   </xsl:otherwise>
   </xsl:choose>
        </xsl:element>
      </xsl:for-each>
    </xsl:element>
  </xsl:for-each>

</xsl:template>

</xsl:stylesheet>

 

 

3단계 자식 레벨까지만 찾아내주는 xslt.

attribute를 찾아서 붙여주는 것 까진 아직 하지 않았다. (활용은 그때그때...)

outmethod 를 xml로 해주면 최상단의 xml 헤더가 추가되게 되며

indent를 활성화 시켜줘야만 들여쓰기 기능이 된 문서를 볼 수 있다.

특정 xml을 translate 시켜서 html로 보면 소스코드에서 변환된 xml 파일을 볼 수 있다.