Java

Java XML - xsl:copy-of

승모근뭉치 2023. 1. 19. 17:16

프로젝트 내 xsl_sample.xml

<?xml version="1.0" encoding="UTF-8"?>

<!-- XSL 문서 적용 xsl 프로세싱 지시자 xsl_test03.xsl 에서 적은 내용으로 xml을 변환시키겠다는 의미 -->
<!-- <?xml-stylesheet type="text/xsl" href="xsl_include01.xsl"?> -->
<!-- <?xml-stylesheet type="text/xsl" href="xsl_11.xsl"?> -->
<!-- <?xml-stylesheet type="text/xsl" href="xsl_ex01.xsl"?> -->
<!-- <?xml-stylesheet type="text/xsl" href="xsl_test03.xsl"?> -->
<!-- <?xml-stylesheet type="text/xsl" href="xsl_test04.xsl"?> -->
<?xml-stylesheet type="text/xsl" href="xsl_test05.xsl"?>

<도서리스트>
    <책 분류="컴퓨터" id = "book1">
        <제목>자바 기초</제목>
        <저자>홍길동</저자>
        <출판사>강동</출판사>
        <가격>25000</가격>
    </책>
    <책 분류="컴퓨터" id = "book2">
        <제목>XML 기초</제목>
        <저자>강길동</저자>
        <출판사>동아</출판사>
        <가격>35000</가격>
    </책>
    <책 분류="어학" id = "book3">
        <제목>영어 기초</제목>
        <저자>고말똥</저자>
        <출판사>영문출판</출판사>
        <가격>15000</가격>
    </책>
    <책 분류="소설" id = "book4">
        <제목>삼국지</제목>
        <저자>이문열</저자>
        <출판사>가남출판</출판사>
        <가격>15000</가격>
    </책>
    <책 분류="역사" id = "book5">
        <제목>조선왕조실록</제목>
        <저자>임준서</저자>
        <출판사>한솔</출판사>
        <가격>20000</가격>
    </책>
    <책 분류="컴퓨터" id = "book6">
        <제목>C언어</제목>
        <저자>김관우</저자>
        <출판사>IT 출판</출판사>
        <가격>25000</가격>
    </책>
</도서리스트>

프로젝트 내 xsl_test05.xsl

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">
    <!-- 우선 템플릿 생성해 적용 
         match값은 전체 xml문서 전체를 다음과 같이(여기선 HTML로) 변경하겠다는 의미 -->
    
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    
    <xsl:template match="/">
        <booklist>
            <xsl:apply-templates select="/도서리스트/책"/><!-- 도서리스트에책을 선택한다는건 고대로 카피를 해온다는것 -->
        </booklist>
    </xsl:template>
    
    <!-- 책 엘리먼트에 대한 템플릿을 설정하겠다 -->
    <xsl:template match="책">
        <!-- 전부다 카피해와서 보자라는것 -->
        <book>
            <xsl:copy-of select="@분류"/>
            <xsl:copy-of select="@id"/>
            <xsl:copy-of select="제목"/>
            <xsl:copy-of select="저자"/>
            <xsl:copy-of select="출판사"/>
            <xsl:copy-of select="가격"/>
        </book>
    </xsl:template><!-- xsl_sample.xml로 가서 href를 xsl_test05.xsl로 바꾼다 그리고 HTML 문서를 적용하는게 아니므로 oXygen XSLT Debugger창 열다 -->
    
</xsl:stylesheet>

xsl_sample.xml 파일을 선택한다.

Eclipse IDE Menu 중에

Window > Perspective > Open Perspective > Other... 를 클릭한다.

창이 팝업되면 리스트 중에

Oxygen XSLT Debugger 를 클릭하고 Open 을 누른다.

==================================================

xsl_sample.xml 화면 하단 탭에 보면

XSLT Debugger 창이 나온다.

==================================================

XML 선택란에서

xsl_sample.xml 을 선택하고

XSL 선택란에는

xsl_test05.xsl 이 선택되어져 있다.

==================================================

아랫줄에는 Saxon6.5.5 이 선택되어 있는데 이것은 XSLT 프로세서이다. 그 옆으로 보면 화살표로 표시된 아이콘들이 보이는데 그 중에 Run 을 누른다. 그럼 옆에 Debug execution finished 라고 나오고, Eclipse IDE 제일 하단 바에도 

Debug execution finished ( 0.1s ) 라고 나온다.

==================================================

오른쪽 창에보면 Output 이라 쓰인 탭에

다음과 같이 변환된 결과가 출력된다.

<?xml version="1.0" encoding="UTF-8"?>
<booklist>
   <book 분류="컴퓨터" id="book1">
      <제목>자바 기초</제목>
      <저자>홍길동</저자>
      <출판사>강동</출판사>
      <가격>25000</가격>
   </book>
   <book 분류="컴퓨터" id="book2">
      <제목>XML 기초</제목>
      <저자>강길동</저자>
      <출판사>동아</출판사>
      <가격>35000</가격>
   </book>
   <book 분류="어학" id="book3">
      <제목>영어 기초</제목>
      <저자>고말똥</저자>
      <출판사>영문출판</출판사>
      <가격>15000</가격>
   </book>
   <book 분류="소설" id="book4">
      <제목>삼국지</제목>
      <저자>이문열</저자>
      <출판사>가남출판</출판사>
      <가격>15000</가격>
   </book>
   <book 분류="역사" id="book5">
      <제목>조선왕조실록</제목>
      <저자>임준서</저자>
      <출판사>한솔</출판사>
      <가격>20000</가격>
   </book>
   <book 분류="컴퓨터" id="book6">
      <제목>C언어</제목>
      <저자>김관우</저자>
      <출판사>IT 출판</출판사>
      <가격>25000</가격>
   </book>
</booklist>