Coding/etc

[XSLT 예제] HTML 테이블 그리기

junedev 2019. 9. 17. 15:51

XSLT 테이블 그리기

오늘은 XSLT 템플릿으로 테이블을 그리는 것을 해보겠습니다. 사실 output method로 HTML을 지정하기 때문에 HTML로 테이블을 그리기만 하면 되네요.

하지만 XSLT로 작성했을 때의 장점은 for-each 구문을 통해 행/열의 최대 갯수를 모르더라도 동적으로 추가할 수 있다는 점이죠. 지난번에 사용한 라이언의 창고재고목록표를 그려보도록 하죠.

이 표를 그려보도록 하겠습니다. 데이터 샘플은 지난 예제와 같은 것을 사용하면 되겠네요.

product.xml
0.00MB

그 다음 HTML로 간단한 Table을 만들어 봅시다.
XSLT 기본 파일 작성법은 이전 포스팅을 참고해주세요.

2019/09/06 - [Coding/XML] - [XSLT 예제] 간단한 조건문 처리하기

 

[XSLT 예제] 간단한 조건문 처리하기

Question 편의점 알바인 라이언은 매일 창고 재고목록을 파악하고 남은 수량이 30개보다 적은 상품은 주문 발주를 넣습니다. 다음 창고 재고목록표를 보고 라이언이 발주를 넣어야 할 상품 목록을 출력하세요. (*X..

enfanthoon.tistory.com

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <html>
      <head></head>
      <body>
        <table border="1">
              <tr>
                <td>상품</td>
                <td>종류</td>
                <td>수량</td>
              </tr>
            </table>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

border = 1의 간단한 테이블을 그려줍시다. 우선 상품, 종류, 수량 세 가지 항목이 들어가야겠네요.
for-each 구문을 이용하면 for문처럼 반복된 작업을 할 수 있다고 했습니다.
밑에 이 코드를 추가해 줍시다.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <html>
      <head></head>
      <body>
        <table border="1">
              <tr>
                <td>상품</td>
                <td>종류</td>
                <td>수량</td>
              </tr>
          <!--추가된 부분-->
          <xsl:for-each select="products_list/product">
            <tr>
              <td>
                <xsl:value-of select="name"/>
              </td>
              <td>
                <xsl:value-of select="category"/>
              </td>
              <td>
                <xsl:value-of select="amount"/>
              </td>
            </tr>
          </xsl:for-each>

            </table>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

for-each 구문은 해당 노드가 있는 한 작업을 반복해 줄 것이고, 저렇게 테이블을 그리면 알아서 행/열이 추가됩니다. 각각 항목에 맞는 태그명을 입력하여 value-of 옵션을 통해 출력해줍니다.

그러면 결과는

이렇게 테이블이 그려지는 것을 볼 수 있습니다.

for-each 구문이 참 편하군요