330 likes | 613 Views
X S L T. 주요 내용. XSLT 의 개념 및 개괄 Template XSLT 요소와 사용 XSLT 요소의 종류 XSLT 요소 상세와 사용 예. XSLT 의 개념 및 개괄. XML 특성 Presentation 으로부터 데이터 분리 : CSS, XSL XSL ( Ex tensible S tylesheet L anguage) XSLT(XSL for Transformation) 1999 년 11 월 권고안 (www.w3.org/1999/XSL/Transform)
E N D
주요 내용 • XSLT의 개념 및 개괄 • Template • XSLT 요소와 사용 • XSLT 요소의 종류 • XSLT 요소 상세와 사용 예
XSLT의 개념 및 개괄 • XML 특성 • Presentation으로부터 데이터 분리 : CSS, XSL • XSL (Extensible Stylesheet Language) • XSLT(XSL for Transformation) • 1999년 11월 권고안 (www.w3.org/1999/XSL/Transform) • Spec. : www.w3.org/TR/xslt • XSL FO(XSL Formatting Objects) • 2000년 11월 CR상태 • FOP : PDF파일 생성 (www.apache.org/fop) • XSLT파서 • 사용 : XT, MSXML3.0 => 또 다른 이용할만한 파서??
Transformation HTML파일 XML파일 XSLT Processor (XSLT Parser) 결과 트리 소스 트리 XSLT파일 XSLT 파일 Text파일 XSLT의 개념 및 개괄 XSLT는 Well-Formed XML 문서다. XSL:은 Namespace다. XSLT는 스크립트 언어?
Template • Template (틀?) • Template가 적용될 소스 트리부분 • Match 속성에서 지정(문맥노드가 된다) • 결과트리로 삽입되어지는 부분 • 시작태그와 끝태그사이에 있는 템플리트 안의 모든 내용
XSLT 요소의 종류 • xsl:stylesheet • xsl:template • xsl:text • xsl:transform • xsl:value-of • xsl:variable • xsl:when • xsl:with-param • xsl:import • xsl:include • xsl:key • xsl:message • xsl:namespace-alias • xsl:number • xsl:otherwise • xsl:output • xsl:param • xsl:preserve-space • xsl:processing-instruction • xsl:sort • xsl:strip-space • xsl:apply-imports • xsl:apply-templates • xsl:attribute • xsl:attribute-set • xsl:call-template • xsl:choose • xsl:comment • xsl:copy • xsl:copy-of • xsl:decimal-format • xsl:element • xsl:fallback • xsl:for-each • xsl:if
XSLT 요소와 사용 <xsl:stylesheet> • <xsl:stylesheet version=“version number” xmlns:xsl=http://www.w3.org/1999/XSL/Transform> • xsl Namespace정의 => “xsl:요소이름” • W3C 현재 XSLT 스펙 version = 1.0 • <xsl:transform> 과 문법이 같기 때문에 대신 사용해도 됨
XSLT 요소와 사용 <xsl:template> • <xsl:template match=”Xpath expression” name=”template name” priority=”number” mode=”mode name”> • Match : 소스트리에 대응되는 Xpath 패턴 • Name : 지정된 템플리트를 만드는데 사용 (“xsl:call-template”이용) • Priority : xslt의 우선 순위를 정함 • Mode : 소스 트리의 같은 부분이 한번 이상 처리되어야 할 때 사용
XSLT 요소와 사용 <xsl:apply-templates> • <xsl:apply-templates select=“xpath expression” mode=“mode name”> • 템플리트 안에서 사용되어 다른 템플리트를 호출할때 사용. • select 속성이 지정되면 그 지정된 Xpath 표현의 값은 호출된 템플리트의 문맥노드로서 사용된다. • 지정되어 있지 않으면 현재의 문맥노드를 대신 사용하게 되며, 그 자식 노드를 모두 거치면서 해당하는 템플리트를 찾아 실행된다.
XSLT 요소와 사용 <xsl:value-of> • <xsl:value-of select=“xpath expression” disable-output-escaping=“yes or no”/> • select 속성에 지정된 Xpath 표현에 정해진 값을 찾기 위해 문맥노드를 탐색하여 결과 트리에 삽입할때 사용. • disable-output-escaping 속성 : “&”, “<”같은 Escape문자 대신, “&”, “<“문자를 출력하라고 지시. • 보통 XSLT 프로세서는 출력할 때 자동으로 이런 문자로 바꿈 • 기본값은 NO
XSLT 요소와 사용 <xsl:output> • <xsl:output method=“xml or html or text” version=“version” encoding=“encoding” omit-xml-declaration=“yes or no”standlone=“yes or no” cdata-section-elements=“CDATA sections” indent=“yes or no”/> • 출력하고자 하는 파일의 형식을 지정할 때 사용 • version, encoding,standalone 속성은 메소드값이 xml일때 사용 • 주로 “method”와 “encoding”속성 사용
XSLT 요소와 사용 <xsl:element> • <xsl:element name=“element name” use-attribute-sets=“attribute set name”> • 동적으로 요소의 이름을 생성하고자 하는 경우에 사용 • <xsl:element name=“addr”>seoul</xsl:element> <addr>seoul</addr>
XSLT 요소와 사용 <xsl:attribute> • <xsl:attribute name=“attribute name”> • 결과트리에 동적으로 속성을 추가하고자 하는 경우에 사용 • <name><xsl:attribute name=“sex”>m</xsl:attribute>kwak</name> <name sex=“m”>kwak</name> • 첨부되는 요소의 어떤 PCDATA 보다도 앞쪽에 있어야 한다 <xsl:attribute-set> • <xsl:attribute-set name=“name of att set” use-attribute-sets=“att set names”> • - 항상 같이 사용되어야 하는 연관된 속성 그룹을 손쉽게 만드는 방법을 제공
XSLT 요소와 사용 <xsl:text> • <xsl:text disable-output-escapint=“yes or no”> • 공백을 유지하기 위해 사용 • 출력결과의 Escape를 못하게 하기 위해 사용 <xsl:text disable-output-escaping=“yes”>6 is < 7 & >6</xsl:text> 6 is <7 & 7 > 6 <xsl:value-of> 사이에 공백을 표현하려면 : <xsl:text> </xsl:text>삽입
XSLT 요소와 사용 <xsl:if> / <xsl:choose> • <xsl:if test=“Boolean expression”> • 일반 언어의 If문과 동일한 개념 • Else요소가 없으므로 그 경우에는 choose요소를 사용 • <xsl:choose> <xsl:when test=“Boolean expression”> <xsl:when test=“Boolean expression”> <xsl:otherwise> </xsl:choose> • 일반 언어의 Select문과 동일한 개념 • 여러선택 중 하나를 할 수 있게 하고 필요하면 기본선택도 가능
XSLT 요소와 사용 <xsl:for-each> • <xsl:for-each select=“XPath expression”> • 일반언어의 For문과 동일한 개념(미니템플리트) • select 속성의 Xpath 표현에 일치하는 모든 노드에 대해서 실행 • 다수의 반복적인 요소들에 대해 적용 (apply-templates와 동일)
XSLT 요소와 사용 <xsl:copy-of> • <xsl:copy-of select = “xpath expression”> • 소스트리의 일부를 취해서 결과트리에 복사 • Select 속성으로 노드나 필요한 노드 집합을 가리키는 xpath 표현만 지정 • 노드 또는 노드집합은 결과트리에 속성과 자식요소를 함께 넣어준다 <xsl:copy> • <xsl:copy use-attribust-sets=“att set names”> • 단순히 문맥노드만 복사 • 문맥노드의 자식요소나 속성은 자동으로 결과트리에 복사되지 않는다
XSLT 요소와 사용 <xsl:sort> • <xsl:sort select=“xpath expression” lang =“lang” data-type=“text or number” order=ascending or descending” case-order=“upper-first or lower-first”/> - 두개이상의 항목의 순서를 정렬하는 경우에 사용 - Select : 정렬하고 싶어하는 요소/속성 선택 - 두개이상의 항목이 있게 된다면 소스트리에 나타난 순서를 결과트리에 반영 - Data-type : default(text) - Order : default(오름차순) - Case-order : 대문자가 먼저인지 소문자가 먼저인지 결정
XSLT 요소와 사용 mode - xml 안의 동일한 부분을 각기 다른 작업으로 하고자 할 때 사용 - Mode에 따라 여러 개의 Template를 사용하면 원하는것만 호출할수 있다 <xsl:apply-templates select=“name”mode=“toc” /> <xsl:apply-templates select=“name”mode=“body”/> … </xsl:template> <xsl:templates match=“name”mode=“toc”/> … </xsl:templates> <xsl:templates match=“name”mode=“body”/> …</xsl:templates>
XSLT 요소와 사용 <xsl:varible> • <xsl:variable name = “text” select=“XPath Expression”> - 변수라기보다는 상수의 의미 - $와 변수이름을 붙여 사용 • <math pi=“{$csng}”/> or <xsl:value-of select=“$csng” /> - Select 속성을 가질수 있다. • <xsl:variable name=“name” select=“/people/name”/> - 전역상수 : 템플리트 바깥쪽에 정의 - 지역상수 : 템플리트 안쪽에 정의
XSLT 요소와 사용 지정된 템플리트(name) - 소스트리의 서로 다른 노드에서 동일한 일을 수행하고자 할 때 사용 - 다른 언어에서의 함수와 비슷한 개념 - 지정된 템플리트 : select 속성대신 name 속성을 지정 <xsl:call-template> 요소를 사용하여 호출 … <xsl:call-templatename=“Text” /> … <xsl:call-templatename=“Text” /> … </xsl:template> <xsl:template name=“Text” /> … </xsl:template>
<xsl:param name = “text”> / <xsl:with-param name = “text”> - 일반언어에서의 함수에 전달하는 매개변수와 동일한 개념 (parameter) - 주로 Template name과 연동되어 같은 기능을 하지만 서로 다른 노드의 위치에서 문맥노드값을 전달하고자 할 때 주로 사용 - 전달하는 쪽에서 <xsl:with-param>요소를 사용하여 전달하고자 하는 값을 넘겨주고, 받는 Template에서 <xsl:param>을 사용해서 디폴트값을 설정하거나, 변수선언의 역할을 한다. XSLT 요소와 사용 <xsl:param> / <xsl:with-param>
XSLT & XPath Functions • boolean() • ceiling() • concat() • contraints() • count() • current() • document() • element-available() • false() • floor() • format-number() • function-available() • generate-id() • id() • key() • lang() • last() • local-name() • name() • namespace-uri() • normalize-space() • not() • number() • position() • round() • starts-with() • string() • string-length() • string-length() • substring-after() • substring-before() • substring() • sum() • system-property() • translate() • true() • unparsed-entity-uri()
XSLT 활용 예 – EDI ???
XSLT 활용 예 – eCatalog Catalog1 Catalog2 Catalog3 Catalog4 Catalog5 Catalog6
XSLT 활용 예 – eCatalog XML 파일 - 데이터 저장소
XSLT 참고 사이트 및 자료 • www.w3.org/style/xsl • www.vbxml.com • msdn.microsoft.com/xml • www.apache.org/fop • www.xmlab.com • MS의 Xmlsdk3.0 • MS의 xslviewer • Beginning XML 책(Wrox)