1 / 34

XSL 개념 XSL과 XSLT 문법 [실습] XSLT 활용 1 [실습] XSLT 활용 2

ㅎㅎ. XSL, XSLT. XSL 개념 XSL과 XSLT 문법 [실습] XSLT 활용 1 [실습] XSLT 활용 2. 8 장 . XSL, XSLT. 학습목표 XSL 기본 개념 학습 XSLT 구조 이해와 활용 XML 문서 조작을 위한 XSL 문법 학습 XML 문서 조작을 위한 활용 방법 학습. XSL 개념 Extensible Stylesheet Language 약어 XML 문서의 스타일을 정의하기 위한 언어 XSL 구성

Download Presentation

XSL 개념 XSL과 XSLT 문법 [실습] XSLT 활용 1 [실습] XSLT 활용 2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ㅎㅎ XSL, XSLT • XSL 개념 • XSL과 XSLT 문법 • [실습] XSLT 활용 1 • [실습] XSLT 활용 2

  2. 8장. XSL, XSLT • 학습목표 • XSL 기본 개념 학습 • XSLT 구조 이해와 활용 • XML 문서 조작을 위한 XSL 문법 학습 • XML 문서 조작을 위한 활용 방법 학습

  3. XSL 개념 Extensible Stylesheet Language 약어 XML 문서의 스타일을 정의하기 위한 언어 XSL 구성 변환 언어(transformation language)인 XSLT(XSL Transformations)와 출력 언어인 XSL FO(XSL Formatting Objects)로 구성 XSL XSLT XSL-FO XPath Section 01 XSL 개념 [그림 8-1] XSL 구성

  4. XSL 역할 XML 문서 변환과 포맷 지정 XSLT 적용 XSL FO 적용 문서 변환 포맷 지정 다른 XML 문서 XML 전용 브라우저 XML 문서 익스플로러 HTML 문서 휴대폰 이미지 WML 문서 ?? … XSLT 처리기 XSLT 처리기 Section 01 XSL 개념 [그림 8-2] XSLT와 XSL FO 역할

  5. XSL 문서 적용 XML 문서 도입부에 다음과 같이 선언 결과 문서 생성과 출력 과정 Section 01 XSL 개념 <?xml version="1.0" encoding="euc-kr"?> <xml-stylesheet type="text/xsl“ href="doc.xsl”?> <student> <name> 고소영 </name> </student>

  6. 템플릿 (template) XML 문서를 변환하기 위해 변환 규칙 <template> 요소를 이용해서 표현 <template> 요소 문서를 변환하기 위한 명령어와 내용이 표현 규칙이 적용될 XML 요소를 찾기 위해서 XPath 속성에 해당하는 match 속성 사용 <stylesheet> 요소 XSLT 문서의 최상위 원소 형식 Section 02 XSL과 XSLT 문법 http://www.w3.org/1999/XSL/Transform

  7. XML 문서 구조 Section 02 XSL과 XSLT 문법

  8. Section 02 XSL과 XSLT 문법 • <stylesheet> 요소 • XSLT의 최상위 요소 • 요소 내부에는 다른 XSLT 요소를 정의하고 포함 • <stylesheet> 요소에 직접 포함되는 원소를 최상위 요소라 함 • <stylesheet> 요소 대신에 <transform> 요소 사용 가능 • 사용 예 <xsl:stylesheet id = id extension-element-prefixes = tokens exclude-result-prefixes = tokens version = number> <!-- Content: (xsl:import*, top-level-elements) --> </xsl:stylesheet>

  9. <stylesheet> 요소가 직접 포함 가능한 자식 요소 xsl:import xsl:include xsl:strip-space xsl:preserve-space xsl:output xsl:key xsl:decimal-format xsl:namespace-alias xsl:attribute-set xsl:variable xsl:param Section 02 XSL과 XSLT 문법

  10. 템플릿 요소 문서 전체 변환 또는 일부분 선택 변환 가능 템플릿 정의 예 Section 02 XSL과 XSLT 문법 <xsl:template match = pattern name = qname priority = number mode = qname> <!-- Content: (xsl:param*, template) --> </xsl:template>

  11. Section 02 XSL과 XSLT 문법 • 템플릿 속성 • match 속성 • XML 문서 위치를 지정하기 위해서 XPath 표현식을 사용 • 템플릿 규칙을 입력하기 위해서는 반드시 문서 루트를 지정해야 함 • name 속성 • 이름이 부여된 템플릿을 만들 때 템플릿 이름을 입력하는 속성 • name 속성을 사용한 템플릿은 <call-template> 요소에 의해 호출 • priority 속성 • 적용 가능한 템플릿이 여러 개 정의되었을 때 우선순위를 지정하는 속성 • priority 속성값이 크면 클수록 우선순위 높아짐 • mode 속성 • XML 문서에서 동일한 부분에 적용되는 템플릿이 여러 개 있을 때, 원하는 템플릿만 호출할 수 있도록 함 • 소스 트리의 동일한 부분을 여러 번 처리해야 할 경우 사용

  12. 템플릿 사용 예 템플릿 사용: 임의의 XML 문서를 HTML 문서로 변환 Section 02 XSL과 XSLT 문법 <xsl:template match="/"> <html> <body> <h1> XSLT에 의해 HTML 문서로 변환된 결과를 출력한다.</h1> </body> </html> </xsl:template> student.xsl

  13. Section 02 XSL과 XSLT 문법 • apply-templates 요소 • 자식 요소를 처리할 때 사용 • 일반적으로 <apply-templates> 요소를 정의하면 자식 노드가 선택되고, 이 요소가 문맥 요소가 된다. • 자식 요소 중, 특정 자식 요소만 선택해야 하거나 자식 요소가 아닌 다른 요소를 선택하고 싶다면 select 속성 사용 • select 속성을 표현하는 경우에는 select에서 선택된 요소가 문맥 요소가 되고, 템플릿이 적용된다. • <apply-templates> 요소 정의 방법 <xsl:apply-templates select = node-set-expression mode = qname> <!-- Content: (xsl:sort | xsl:with-param)* --> </xsl:apply-templates>

  14. Section 02 XSL과 XSLT 문법 • value-of 요소 • XML 문서에 포함되어 있는 요소 내용을 문자열 형태로 접근할 때 사용 • value-of 요소를 정의하는 방법 • select 속성: 값을 추출할 노드 선택 • disable-output-escaping 속성: 이스케이프 문자를 변환해서 출력할 것인지 여부 결정 <xsl:value-of select = string-expression disable-output-escaping = "yes" | "no" />

  15. output 요소 출력 문서의 형식을 지정할 때 사용 <output> 요소를 사용하지 않으면 결과 문서가 XML 문서 형태로 유지 <output> 요소를 정의하는 방법 Section 02 XSL과 XSLT 문법 <xsl:output method = "xml" | "html" | "text" | qname-but-not-ncname version = nmtoken encoding = string omit-xml-declaration = "yes" | "no" standalone = "yes" | "no" doctype-system = string cdata-section-elements = qnames indent = "yes" | "no" />

  16. output 요소 속성 method 결과 문서의 기본적인 형식을 지정 xml version method 속성 값의 버전을 나타냄 1.0 encoding 결과 문서의 인코딩을 표현(한글 : EUC-KR) UTF-8 omit-xml-declaration XML 선언 부분이 결과 문서에 포함될 것인지 여부 YES 속성명 설명 기본값 standalone 결과 문서가 standalone XML 문서인지 여부 지정 YES doctype-system 결과 문서의 DTD를 기술하기 위해서 사용 NULL cdata-section-elements 결과 문서에 CDATA  섹션을 포함하기 위해 사용. NULL indent 결과 문서에 오목함(indentation)을 추가. YES Section 02 XSL과 XSLT 문법

  17. if 요소 조건에 해당하는 템플릿을 적용하고자 할 때 사용 속성값이 test면 템플릿이 적용됨 if 요소를 정의하는 방법 test 부분에 XPath 함수와 식 사용 가능 else나 else if 비지원 Section 02 XSL과 XSLT 문법 <xsl:if test = boolean-expression> <!-- Content: template --> </xsl:if>

  18. choose/when/otherwise 요소 여러 항목 중 한 항목을 선택할 때 사용하는 요소 switch나 caseans 형태와 유사 <choose> 요소 형태 <choose> 요소는 내부에 여러 개의 <when> 요소와 하나의 <otherwise> 요소를 가질 수 있음 Section 02 XSL과 XSLT 문법 <xsl:choose> <!-- Content: (xsl:when+, xsl:otherwise?) --> </xsl:choose> <xsl:when test = boolean-expression> <!-- Content: template --> </xsl:when> <xsl:otherwise> <!-- Content: template --> </xsl:otherwise>

  19. for-each 요소 요소에 템플릿을 반복적으로 적용할 때 사용 select 속성을 통해 선택된 노드를 반복적으로 적용 내용으로 sort나 template를 가질 수 있음 for 문 유사 for-each 요소를 정의하는 방법 Section 02 XSL과 XSLT 문법 <xsl:for-each select = node-set-expression> <!-- Content: (xsl:sort*, template) --> </xsl:for-each>

  20. Section 02 XSL과 XSLT 문법 • sort 요소 • XML 문서 내용을 정렬할 때 사용 • <apply-templates>,<for-each> 요소의 자식요소로 사용가능 • sort 요소를 정의하는 방법 • data-type 속성: 정렬할 데이터가 숫자인지, 문자열인지 표현 • order 속성: 오름차순 정렬인지, 내림차순 정렬인지 지정 • case-order 속성: 문자열을 정렬할 때 대문자가 먼저인지, 소문자가 먼저인지 지정 <xsl:sort select = string-expression lang = { nmtoken } data-type = { "text" | "number" | qname-but-not-ncname } order = { "ascending" | "descending" } case-order = { "upper-first" | "lower-first" } />

  21. call-template 요소 일반 프로그래밍 언어의 함수 호출과 유사 name 속성을 이용해서 원하는 템플릿 호출 가능 템플릿을 호출할 때 파라미터가 필요할 때는 <with-param> 요소를 이용해서 파라미터를 전달 가능 <call-template> 요소 정의 방법 name 속성: 호출할 템플릿의 이름 Section 02 XSL과 XSLT 문법 <xsl:call-template name = qname> <!-- Content: xsl:with-param* --> </xsl:call-template>

  22. Section 02 XSL과 XSLT 문법 • variable 요소 • 스타일시트에 변수를 정의할 수 있음 • XSLT에서는 변수값을 한 번 지정해서 사용하면 수정할 수 없음(상수 역할) • <variable> 요소 정의 방법 <xsl:variable name = qname select = expression> <!-- Content: template --> </xsl:variable>

  23. param 요소 스타일시트나 템플릿에서 사용 name 속성을 가지고 있으며, 변수 이름 역할을 함 with-param 요소 <call-template> 요소에서 다른 템플릿을 호출할 때 사용 <with-param>을 이용해서 호출되는 템플릿에 매개 변수 값으로 전달 Section 02 XSL과 XSLT 문법

  24. param/with-param 요소 정의 방법 Section 02 XSL과 XSLT 문법 <xsl:param name = qname select = expression> <!-- Content: template --> </xsl:param> <xsl:with-param name = qname select = expression> <!-- Content: template --> </xsl:with-param>

  25. Section 02 XSL과 XSLT 문법 • element 요소 • 결과 트리에 새로운 XML 요소를 생성할 때 사용 • XML 결과 트리에 요소를 직접 입력해서 요소를 만들수도 있지만, 자동으로 새로운 요소를 만들려고 할 때도 사용 • <element>요소를 정의하는 방법 • name 속성: 생성되는 요소 이름 • namespace 속성: 요소가 속한 네임스페이스 • use-attribute-sets 속성: 생성되는 요소가 가지는 속성 집합 <xsl:element name = { qname } namespace = { uri-reference } use-attribute-sets = qnames> <!-- Content: template --> </xsl:element>

  26. Section 02 XSL과 XSLT 문법 • attribute 요소 • XSLT 결과 트리에 속성을 동적으로 정의하는 방법 • <attribute> 요소의 내용은 생성되는 속성값으로 사용 • <attribute> 요소를 정의해서 사용하는 방법 • name 속성: 생성되는 속성 이름 • namespace 속성: 속성이 속한 네임스페이스 <xsl:attribute name = { qname } namespace = { uri-reference }> <!-- Content: template --> </xsl:attribute>

  27. text 요소 XSLT에서는 결과 트리에 텍스트를 추가하기 위해 사용 공백 문자나 특수 문자를 결과 트리에 추가하기 위해 사용 <text>요소를 정의하는 방법 <text> 요소는 PCDATA만 가질 수 있음 disable-output-escaping 속성: 출력 결과에 텍스트 내용을 이스케이프할 것인지 여부 지정 Section 02 XSL과 XSLT 문법 <xsl:text disable-output-escaping = "yes" | "no"> <!-- Content: #PCDATA --> </xsl:text>

  28. processing-instruction 요소 결과 트리에 처리 명령어를 생성하기 위해서 사용 processing-instruction 요소를 정의하는 방법 name 속성: 처리 명령어의 대상 애플리케이션 이름 processing-instruction:처리 명령어의 데이터로 사용 comment 요소 주석을 생성하는 요소 <comment> 요소의 정의 방법 Section 02 XSL과 XSLT 문법 <xsl:processing-instruction name = { ncname }> <!-- Content: template --> </xsl:processing-instruction> <xsl:comment> <!-- Content: template --> </xsl:comment>

  29. copy 요소 소스 트리의 내용을 그대로 결과 트리에 복사할 때 사용 단, 현재 노드를 복사할 때 사용 노드 속성이나 자식 노드가 자동으로 복사되지는 않음 <copy> 요소를 정의하는 방법 copy-of 요소 현재 노드와 그 이하 모든 자식 요소와 속성을 결과 트리에 복사할 때 사용 <copy-of>요소를 정의하는 방법 Section 02 XSL과 XSLT 문법 <xsl:copy use-attribute-sets = qnames> <!-- Content: template --> </xsl:copy> <xsl:copy-of select = expression />

  30. include 요소 XSLT 파일에서 다른 XSLT 파일을 포함할 때 사용 <stylesheet> 요소의 자식 요소로만 사용 <include> 요소가 사용된 위치에서 XSL 파일에서 지정한 XSLT 파일의 내용이 포함 됨 <include> 요소의 href 속성은 포함할 XSLT 파일을 표현 <include> 요소 정의 방법 Section 02 XSL과 XSLT 문법 <xsl:include href = uri-reference />

  31. import 요소 include 요소와 같은 개념 import가 include와 다른 것은 include는 동일한 내용들이 중복되어 정의될 수 없는데 반해서, impote 요소는 중복 정의가 가능 하다. 중복 정의가 존재하는 경우에는 우선 순위에 의해서 우선 순위가 높은 정의가 먼저 사용 <import> 요소가 사용되게 되는 경우에는 stylesheet 요소에서 가장 먼저 선언되어야 함 <import> 요소 정의 방법 Section 02 XSL과 XSLT 문법 <xsl:import href = uri-reference />

  32. XML 문서를 XSLT를 활용하여 원하는 문서형태로 변환 결과 화면 조건 부록 CD>8장>student_table.xml 문서를 결과 화면과 같은 형태로 변환 나이를 나타내는 열의 바탕색을 20세 이하이면 빨간색, 25세 이하이면 파란색, 30세 이하이면 초록색, 그 외는 하얀색으로 지정 Section 03[실습] XSLT 활용 1

  33. Section 04[실습] XSLT 활용 2 • 다양한 XSLT 기능을 포함해서 XML 문서를 조작하는 XSL 문서 작성 • 결과 화면 • 조건 • 부록CD>8장>가계부.xml 문서를 결과 화면 형태로 변환시킨다. • 총 수입에서 해당 날짜에 구입한 물건의 목록을 나타내고 지출내역을 나타낸다. 몇 가지 물건을 구입했는지 개수를 나타내고, 총 수입에서 총 지출을 뺀 나머지를 잔액으로 출력한다. 총 수입보다 총 지출이 많은 경우, 차액을 빨간색으로 표시하고, [적자]표시를 한다.

More Related