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"/>
'Language > C#' 카테고리의 다른 글
MyBatis.NET CRUD(2) - mySql DB연동 (0) | 2016.02.04 |
---|---|
윈폰 프로젝트에서 WCF 서비스 참조할 때 Reference.cs 파일이 비어있는 경우 (0) | 2016.02.04 |
XSLT를 이용한 스타일시트 만들기 (0) | 2016.02.04 |
html 특수문자 (0) | 2016.02.04 |
string -> char[] 변환 (0) | 2016.02.04 |