반응형

XML Note #3 XSL 기본 문법(1)


1. xsl:template

XML에서 해당 태그의 이름을 찾는다. 지정방법으로는 match와 name의 두 가지가 사용된다.

- 예제:

<xsl:template match="dog">

</xsl:template>



2. xsl:sort

알파벳 순/역순으로 재정렬한다.

- 예제:

<xsl:sort order="ascending" select="."/>

<xsl:sort order="descending" select="."/>



3. xsl:apply-templates

XSL이 적용될 범위를 지정한다.

- 예제:

<xsl:apply-templates select="//name"> 

<xsl:sort order="descending" select="."/> 

</xsl:apply-templates>


<xsl:apply-templates select="dog"/> : match="dog"로 정의된 템플릿을 적용한다.


<xsl:apply-templates/> : 정의된 모든 템플릿을 적용한다.



4. xsl:text

일반 텍스트를 출력한다.

- 예제:

<xsl:text>그냥 출력함</xsl:text>



5. xsl:value-of

선택된 이름의 ATTLIST 혹은 ELEMENT의 값을 읽어온다.

- 이름앞에 @가 붙으면 ATTLIST 이름임을 의미한다.

- 이름앞에 아무것도 없으면 ELEMENT 이름임을 의미한다.

- format-number(number, format-string, locale-string) 함수를 사용하여 숫자형식을 변환할 수 있다.

<xsl:value-of select="format-number(가격, '#,##0.00')"/>

- 예제:

+ 관련 XML 예제:

<xslTutorial> 

<dog name='Joe'>

<data weight='18 kg' color="black"/>

<size>얼씨구</size>

</dog>

</xslTutorial>

+ 사용 예:

<xsl:value-of select="@name"/>

<xsl:value-of select="size"/>

<xsl:value-of select="data/@color"/>

- 전체 예제:

<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> 

<xsl:template match="dog"> 

<P><B><xsl:text> Dog: </xsl:text> </B> 

<xsl:value-of select="@name"/></P> 

<P><B><xsl:text> Color: </xsl:text> </B> 

<xsl:value-of select="data/@color"/></P> 

</xsl:template> 

</xsl:stylesheet> 



6. xsl:for-each

선택된 값이 없을 때까지 계속 반복해서 찾는다. xsl:value-of문과 짝을 이루어 사용한다.

order-by 를 이용하면 sort도 가능하다.(기본값 : ascending)

- 예제:

<xsl:template match="/">

<html>

<body>

<table border="2" cellpadding="2">

<tr>

<td>name</td>

<td>phone</td>

</tr>

<xsl:for-each select="phone-address/member">

            <tr>

<td><xsl:value-of select="name"/></td>

<td><xsl:value-of select="phone"/></td>

</tr>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>


<xsl:for-each select="phone-address/member" order-by="name">

</xsl:for-each>


<xsl:for-each select="phone-address/member" order-by="- name">

</xsl:for-each>



7. xsl:entity-ref

개체 선언된 이름의 내용을 읽어온다.

- 예제:

<xsl:entity-ref name="nbsp" />



8. xsl:comment

주석문을 의미한다. 이것은 HTML의 <!-- -->를 표시한다.

- 예제:

<xsl:comment>

function ABC()

{

alert("ABC");

}

</xsl:comment>



9. xsl:if test

조건문. 뒤의 값의 조건에 따라 그 다음 문장을 실행한다.

- 예제:

<xsl:if test="($number = '1')">

   ...............

</xsl:if>

<xsl:if test="($number = '2')">

   ...............

</xsl:if>

※ 비교연산자는 javascript와 동일하다.

※ '=' 대신 '$eq$'를 사용할 수도 있다. ( <xsl:if test="genre[.$eq$'스릴러']"> )



10. xsl:choose / xsl:when test / xsl:otherwise

조건문. Select Case... Case Else문과 동일하다고 보면 된다.

- 예제:

<xsl:choose>

   <xsl:when test="($number = '1')">

       ...............

   </xsl:when>

   <xsl:when test="($number = '2')">

       ...............

   </xsl:when>

   <xsl:otherwise>

       ...............

   </xsl:otherwise>

</xsl:choose>



11. xsl:attribute

HTML 각각 태그의 속성값을 정의, 지정한다.

- 예제:

<a><xsl:attribute name="href">http://www.microsoft.com</xsl:attribute>Microsoft 홈페이지</a>



12. xsl:include / xsl:import

외부 파일로 저장된 XSL 을 포함시킨다.

- 예제:

<xsl:import href="child1.xsl"/>

<xsl:include href="child2.xsl"/>


두 가지 방법이 다른 XSL 파일을 포함시킨다는 의미에서는 동일하지만 아래와 같은 차이가 있다.

+ <xsl:include>

겹지정이 필요 없을 때 

스타일시트가 너무 길어 이를 몇 개의 스타일시트로 나누어 관리하고 싶을 때

+ <xsl:import> 

공통으로 사용하는 스타일시트에 특정 부분만 다른 형식으로 변경하고 싶을 때 

동일한 모듈을 두 번 로드 하는데 문제가 발생하는 것을 막고자 할 때

스타일시트를 논리적으로 분할하여 체계적으로 관리하고 싶을 때



13. xsl:output

XML의 출력방법을 정의한다.

- 예제:

<xsl:output method="html"/>

<xsl:output method="html" encoding="utf-16" indent="yes"/>


'Tech: > XML·XSL' 카테고리의 다른 글

XMLHTTP 사용시 주의사항  (0) 2008.06.26
DOM(2)  (0) 2008.06.26
DOM(1)  (0) 2008.06.26
XML 기본문법  (0) 2008.06.26
XML 기본개념  (0) 2008.06.26


Posted by 떼르미
,
반응형


자바스크립트를 허용해주세요!
Please Enable JavaScript![ Enable JavaScript ]