목차
1. XSL이란 무엇인가?
2. 예제 XML 문서
3. XSL 스타일시트 문서
4. 간단한 XSL 예제와 설명
5. 다양한 XSL 스타일시트 문서들
6. XSL의 세부 사항 (xsl 엘러먼트 자료)
2. 예제 XML 문서
3. XSL 스타일시트 문서
4. 간단한 XSL 예제와 설명
5. 다양한 XSL 스타일시트 문서들
6. XSL의 세부 사항 (xsl 엘러먼트 자료)
본문내용
를 사용해서 변환할 수도 있다. 그 외 문자열을 처리하는 일곱 가지의 함수를 가지고 있는데, starts-with(main_stringm prefix_string), contains(containing_string, contained_string), substring-before(string, marker-string), substring-after(stringm marker-string), normalize(string), translate(string, replaced_text, replacement_text), concat(string1, string2, ...), format-number(number, format-string, locale-string) 등이다.
· 결과 트리 단편은 완전한 노드나 노드 집합이 아닌 XML 문서의 일부를 지칭한다. 결과 트리 단편이 잘 구성된 XML이 아니기 때문에 이것을 가지고 할 수 있는 일은 별로 없다.
19. 기본 템플릿 규칙
· XSL 스타일시트에서 XML 문서의 계층 구조를 매핑해야만 한다는 것은 매우 불편한 일이다. 이것은 문서가 주기율표처럼 안정적이고 예측 가능한 순서를 따르는 것이 아니라, 많은 웹 페이지들처럼 제멋대로의 순서를 가지고 있다면 특히 더 그렇다. 이런 경우에 엘러먼트가 소스 문서 내의 어느 곳에 나타나든 상관없이 그 엘러먼트에 템플릿을 적용할 수 있는 일반적인 규칙을 가지는 것이 좋다.
· 이런 과정을 더 간단하게 하기 위해서 XSL은 모든 스타일시트에 명시적으로 포함될 두 개의 기본 템플릿 규칙을 정의하고 있다. 첫 번째 기본 규칙은 엘러먼트 트리를 반복적으로 내려가서 모든 엘러먼트의 자식에게 템플릿을 적용하는 것이다. 이것은 엘러먼트에 적용되는 모든 템플릿 규칙이 실행될 것이라는 것을 보장한다. 두 번째 기본 규칙은 텍스트 노드에 적용되어서 그 값을 출력 스트림에 복사한다.이 두 개의 규칙을 함께 사용한다는 것은 엘러먼트가 없는 빈 XSL 스타일시트라 할지라도 입력 XML 문서의 문자 데이터를 출력으로 생성해낼 것이라는 점을 의미한다.
· 첫 번째 기본 규칙은 다음과 같이 모든 종류의 엘러먼트 노드나 루트 노드에 적용된다.
· 두 번째 기본 규칙은 다음과 같이 입력 문서의 텍스트를 출력으로 복사한다.
· 마이크로소프트 인터넷 익스플로러 5.0은 이런 기본 규칙을 제공하지 않는다. 따라서 출력하기 원하는 컨텐트가 있는 모든 노드를 명시적으로 대조해야만 한다.
20. 속성값 템플릿을 사용하여 입력 엘러먼트의 컨텐트를 출력에 포함시키기
· 속성값 템플릿은 입력 엘러먼트의 컨텐트를 스타일시트의 속성값으로 복사한다.
· 예제로서, 주기율표를 다음과 같은 속성 기반의 형태인 빈 ATOM 엘러먼트로 변환하기 원한다고 가정하자.
이렇게 하려면 입력 문서의 엘러먼트의 컨텐트를 추출해서 출력 문서의 속성값 안에 위치시켜야 한다. 다음과 같다.
ATOMIC_WEIGHT="{ATOMIC_WEIGHT}"
ATOMIC_NUMBER="{ATOMIC_NUMBER}"
/>
여기에서 보듯이, 속성값 안에 {}에 둘러싸인 데이터는 xsl:value-of 엘러먼트를 대신한다. 이렇게 할 수밖에 없는 이유는 속성값 안에서 "<" 문자를 사용할 수 없기 때문이다.
21. 모드의 사용
· 때때로 소스 문서에서 뽑은 동일한 컨텐트를 출력 문서에 여러 번 포함시키기를 원할 때가 있다. 이러기 위해서는 문서의 데이터가 들어갈 곳에 단순히 템플릿을 여러 번 적용시키는 것이 더 편할 수도 있다. 그러나 각각 다른 위치에서 각각 다른 형식으로 데이터가 표현되어야 한다면 다소 성가신 작업이다.
· 해결책은 각각의 규칙에 mode 속성을 주는 것이다. 그런 뒤 xsl:apply-templates 엘러먼트의 mode 속성을 설정해서 적용할 템플릿을 선택할 수 있다. 예제와 그 실행 결과는 다음과 같다.
The Elements
#
select="SYMBOL"/>
· 결과 트리 단편은 완전한 노드나 노드 집합이 아닌 XML 문서의 일부를 지칭한다. 결과 트리 단편이 잘 구성된 XML이 아니기 때문에 이것을 가지고 할 수 있는 일은 별로 없다.
19. 기본 템플릿 규칙
· XSL 스타일시트에서 XML 문서의 계층 구조를 매핑해야만 한다는 것은 매우 불편한 일이다. 이것은 문서가 주기율표처럼 안정적이고 예측 가능한 순서를 따르는 것이 아니라, 많은 웹 페이지들처럼 제멋대로의 순서를 가지고 있다면 특히 더 그렇다. 이런 경우에 엘러먼트가 소스 문서 내의 어느 곳에 나타나든 상관없이 그 엘러먼트에 템플릿을 적용할 수 있는 일반적인 규칙을 가지는 것이 좋다.
· 이런 과정을 더 간단하게 하기 위해서 XSL은 모든 스타일시트에 명시적으로 포함될 두 개의 기본 템플릿 규칙을 정의하고 있다. 첫 번째 기본 규칙은 엘러먼트 트리를 반복적으로 내려가서 모든 엘러먼트의 자식에게 템플릿을 적용하는 것이다. 이것은 엘러먼트에 적용되는 모든 템플릿 규칙이 실행될 것이라는 것을 보장한다. 두 번째 기본 규칙은 텍스트 노드에 적용되어서 그 값을 출력 스트림에 복사한다.이 두 개의 규칙을 함께 사용한다는 것은 엘러먼트가 없는 빈 XSL 스타일시트라 할지라도 입력 XML 문서의 문자 데이터를 출력으로 생성해낼 것이라는 점을 의미한다.
· 첫 번째 기본 규칙은 다음과 같이 모든 종류의 엘러먼트 노드나 루트 노드에 적용된다.
· 두 번째 기본 규칙은 다음과 같이 입력 문서의 텍스트를 출력으로 복사한다.
· 마이크로소프트 인터넷 익스플로러 5.0은 이런 기본 규칙을 제공하지 않는다. 따라서 출력하기 원하는 컨텐트가 있는 모든 노드를 명시적으로 대조해야만 한다.
20. 속성값 템플릿을 사용하여 입력 엘러먼트의 컨텐트를 출력에 포함시키기
· 속성값 템플릿은 입력 엘러먼트의 컨텐트를 스타일시트의 속성값으로 복사한다.
· 예제로서, 주기율표를 다음과 같은 속성 기반의 형태인 빈 ATOM 엘러먼트로 변환하기 원한다고 가정하자.
이렇게 하려면 입력 문서의 엘러먼트의 컨텐트를 추출해서 출력 문서의 속성값 안에 위치시켜야 한다. 다음과 같다.
ATOMIC_NUMBER="{ATOMIC_NUMBER}"
/>
여기에서 보듯이, 속성값 안에 {}에 둘러싸인 데이터는 xsl:value-of 엘러먼트를 대신한다. 이렇게 할 수밖에 없는 이유는 속성값 안에서 "<" 문자를 사용할 수 없기 때문이다.
21. 모드의 사용
· 때때로 소스 문서에서 뽑은 동일한 컨텐트를 출력 문서에 여러 번 포함시키기를 원할 때가 있다. 이러기 위해서는 문서의 데이터가 들어갈 곳에 단순히 템플릿을 여러 번 적용시키는 것이 더 편할 수도 있다. 그러나 각각 다른 위치에서 각각 다른 형식으로 데이터가 표현되어야 한다면 다소 성가신 작업이다.
· 해결책은 각각의 규칙에 mode 속성을 주는 것이다. 그런 뒤 xsl:apply-templates 엘러먼트의 mode 속성을 설정해서 적용할 템플릿을 선택할 수 있다. 예제와 그 실행 결과는 다음과 같다.
Table of Contents
The Elements