XSLT 쉽게 입문 제3 장:XSLT 의 원소 문법

앞의 두 장의 소 개 를 통 해 우 리 는 XSLT 의 기본 개념 과 그 전환 과정 에 대해 알 게 되 었 다.다음은 XSLT 의 구체 적 인 문법 을 배 워 보 겠 습 니 다.문법 은 항상 무미건조 합 니 다.대체적으로 한 번 훑 어보 고 XSLT 를 진정 으로 사용 해 야 할 때 다시 자세히 연구 할 수 있 습 니 다.3.XSLT 의 요소 문법 3.1 xsl:template 와 xsl:apply-templates 3.2 xsl:value-of 3.3 xsl:for-each 3.4 xsl:if 3.5 Xxsl:choose,when,otherwise 3.6 xsl:sort 3.1 xsl:template 와 xsl:apply-templates 템 플 릿(template)은 XSLT 에서 가장 중요 한 개념 중의 하나 이다.XSLT 파일 은 하나의 템 플 릿 으로 구성 되 어 있 으 며,모든 XSLT 파일 은 최소한 하나의 템 플 릿 을 포함 하고 있 습 니 다.템 플 릿 의 개념 은 마치 블록 을 쌓 는 것 과 같다.프로그래머 라면 템 플 릿 을 하나의 방법,하나의 클래스,또는 모듈 로 볼 수도 있 습 니 다.그것들 은 조합 할 수도 있 고,단독으로 블록 을 만 들 수도 있 으 며,서로 다른 템 플 릿 은 서로 다른 출력 형식 을 제어 할 수도 있다.템 플 릿(template)은 두 부분 으로 구성 되 어 있 습 니 다.일치 모드(match pattern)와 실행 입 니 다.간단 한 설명 모드 는 XML 원본 문서 의 어느 노드 가 템 플 릿 으로 처리 되 는 지 정의 하고 실행 하면 출력 이 어떤 형식 인지 정의 합 니 다.두 부분 에 대응 하 는 문법 은 xsl:template 와 xsl:apply-templates 입 니 다. xsl:template 의 문법 은:  xsl:template 의 역할 은 새 템 플 릿 을 정의 하 는 것 입 니 다.속성 에서 name,priority,mode 는 같은 노드 와 일치 하 는 다른 템 플 릿 을 구별 합 니 다.그것들 은 자주 사용 하 는 속성 이 아니다.match 속성 은 템 플 릿 의 일치 모드(pattern)를 제어 합 니 다.일치 모드 는 XML 원본 문서 의 어느 노드 가 템 플 릿 으로 처리 되 는 지 확인 하 는 데 사 용 됩 니 다.템 플 릿 이 노드 와 일치 합 니 다.우 리 는 하나의 예 로 이 해 를 돕는다.만약 에 우리 가 장과 단락 을 포함 하 는 문 서 를 처리 해 야 한다 고 가정 한다.우 리 는 para 요소 로 단락 을 정의 하고 chapter 요소 로 장 을 정의 합 니 다.match 속성 이 가능 한 값 을 봅 시다.다음 구문 작성 은 템 플 릿 이 모든 파 라 요소 와 일치 하 는 것 을 설명 합 니 다.  다음 구문 작성 은 템 플 릿 이 모든 para 요소 와 모든 chapter 요소 와 일치 하 는 것 을 설명 합 니 다.  다음 문장 작성 법 은 템 플 릿 이 모든 부모 노드 가 chapter 요소 인 para 요소 와 일치 하 는 것 을 설명 합 니 다.  다음 구문 작성 은 템 플 릿 이 루트 노드 와 일치 하 는 것 을 설명 합 니 다.  apply-templates 문법 을 다시 보 겠 습 니 다.  xsl:apply-templates 는 그 노드 가 템 플 릿 에 의 해 구체 적 으로 처 리 됩 니 다.너 는 그것 을 프로그램 에서 하위 함 수 를 호출 하 는 것 으로 이해 할 수 있다.select 속성 은 정확 한 노드 이름 을 정의 하 는 데 사 용 됩 니 다.xsl:apply-templates 는 항상 xsl:template 요소 에 포함 되 어 있 습 니 다.이렇게:  이 코드 는 터치 보드 가 전체 문서(루트 노드)와 일치 하고 구체 적 으로 실행 할 때 루트 노드 아래 의 모든 파 라 요 소 를 처리 하 는 것 을 설명 합 니 다. 

 이 코드 는 패 널 이 파 라 노드 와 일치 하고 모든 파 라 의 하위 요소 가 처 리 될 것 임 을 나타 낸다.3.2 xsl:value-of XSL:value-of 는 원본 문서 에 있 는 요소 의 텍스트 값 을 출력 문서 에 기록 하 는 데 사 용 됩 니 다.예 를 들 어 개인 정보 가 있 는 XML 문서: ajie28 출력 문서 에 이 XML 원본 문서 의 name 요소 의 값 을 표시 하려 면 XSLT 코드 를 이렇게 쓸 수 있 습 니 다.  실행 하면'ajie'가 단독으로 표 시 됩 니 다.그 중에서 match="PERSON"정의 패 널 은 PERSON 노드 와 일치 합 니 다.xsl:value-of 문법 설명 은 한 노드 의 값 을 출력 해 야 하고 select="name"은 출력 해 야 할 요 소 를 name 으로 정의 합 니 다.이 과정 을 보면 데이터베이스 에서 한 사람의 이름 을 조회 하 는 것 과 비슷 하지 않 습 니까?물론 xsl:value-of 조 회 는 더 많 고 복잡 한 문법 이 있 습 니 다.찾 고 포 지 셔 닝 하 는 기능 과 관련 되 기 때문에 우 리 는 뒤의 XPath 문법 에 놓 고 자세히 설명 할 것 입 니 다.같은 기능 의 xsl:copy-of 도 있 습 니 다.용법 이 같 으 면 중복 해석 하지 않 습 니 다.3.3 xsl:for-each xsl:for-each 문법 은 선택 한 노드 를 순환 처리 할 수 있 습 니 다.예 를 들 어 여러 개의 개인 정 보 를 포함 하 는 XML 문서 가 있 습 니 다. ajie28tom24miake30 모든 사람의 이름 을 표시 하려 면 XSLT 코드 를 다음 과 같이 쓸 수 있 습 니 다.  3.4 xsl:if xsl:if 일반 프로그램 언어 와 유사 한 if 조건 문 구 는 노드 가 특정한 조건 을 만족 시 킬 때 템 플 릿 으로 처 리 됩 니 다.xsl:if 의 문법 형식 은: template body 예 를 들 면: 

 이 코드 는 PEOPLE 노드 에 있 는 모든 요 소 를 검출 하고요소 가 발견 되면요소 의 값 을 출력 한 다 는 뜻 입 니 다.그 중에서@기 호 는 통합 문자 로 노드 아래 의 모든 요 소 를 나타 낸다.3.5 xsl:choose,xsl:when 과 xsl:otherwise xsl:if 문법 에는 else 의 속성 이 없습니다.만약 우리 가 여러 가지 선택 을 하려 면 xsl:choose/xsl:when/xsl:otherwise 시리즈 프로 세 스 제어 문법 을 사용 해 야 합 니 다.구체 적 인 사용 은 다음 XSL 파일 의 예 를 보십시오.  No name available 설명:먼저 PEOPLE 노드 에서속성 값 이 ajie 인 요 소 를 찾 고 찾 으 면 ajie 를 굵 은 몸 으로 출력 합 니 다.ajie 의요소 가 발견 되 지 않 으 면 모든요소 의 값 을 기울 임 꼴 로 출력 합 니 다.요 소 를 발견 하지 못 하면'No name available'를 표시 합 니 다. 3.6 xsl:sort XSLT 에서 XML 원본 문서 의 요 소 를 다시 정렬 할 수 있 습 니 다.정렬 된 문법 은 xsl:sort 입 니 다.예 를 들 어 다음 코드 는 문서 요 소 를 name 에 따라 정렬 하 는 것 입 니 다.  이상 은 XSLT 요소 의 주요 문법 이 고 다른 문법 도 많 습 니 다.예 를 들 어 import,include,element,attribute,number,param 등 문법 은 여기 서 일일이 설명 하지 않 습 니 다.우리 의 목적 은 당신 이 XSLT 의 문법 에 대해 기본 적 인 개념 을 가지 고 XSLT 를 언어 전환 의 강력 한 기능 으로 이해 하도록 하 는 것 입 니 다.

좋은 웹페이지 즐겨찾기