<xsl:template> 요소
특정 형식과 컨텍스트의 노드에 대해 원하는 출력을 생성하기 위해 다시 사용 가능한 템플릿을 정의합니다.
<xsl:template
name= Qname
match = Pattern
priority = number
mode = QName
</xsl:template>
특성
- name
확장할 정규화된 이름입니다. 접두사가 있을 경우 이 접두사는 이름이 발생한 특성에서 네임스페이스 선언을 사용하여 URI(Uniform Resource Identifier) 참조로 확장됩니다. 이름의 로컬 부분과 null일 수 있는 URI 참조로 구성되는 확장 이름은 템플릿의 이름으로 사용됩니다. 접두사가 없는 이름에는 기본 네임스페이스가 사용되지 않습니다.<xsl:template>
요소에name
특성이 있을 경우match
특성이 있을 수 있지만 반드시 있어야 하는 것은 아닙니다.
- match
소스 노드 또는 규칙이 적용되는 노드를 식별하는 패턴입니다.<xsl:template>
요소에name
특성이 없을 경우match
특성이 필요합니다.<xsl:template>
요소의 내용은 템플릿 규칙을 적용할 때 인스턴스화되는 템플릿입니다.
priority
템플릿의 우선 순위 번호입니다. 우선 순위가 가장 높은 일치 템플릿 규칙보다 우선 순위가 낮은 모든 일치 템플릿 규칙은 고려 대상에서 제외됩니다. 이 값은 0에서 9 사이의 양의 실수 또는 음의 실수여야 하며 선택적으로 빼기 기호(-)를 앞에 붙여서 결과로 나온 숫자와 일치합니다. 기본 우선 순위는 다음과 같이 계산됩니다.패턴에 |로 구분된 여러 대체가 포함된 경우 각 대체마다 하나씩 템플릿 규칙 집합과 같이 처리됩니다.
패턴에 자식 또는 특성 축 지정자가 앞에 붙은 Qname 형식이 있을 경우 또는 자식 또는 특성 축 지정자가 앞에 붙은 처리 명령 리터럴 형식이 있을 경우 우선 순위는 0입니다.
패턴이 자식 또는 특성 축 지정자가 앞에 붙은 이름인 경우 우선 순위는 -0.25입니다.
자식 또는 특성 축 지정자가 앞에 붙은 노드 테스트로만 패턴이 구성되었을 경우 우선 순위는 -0.5입니다.
그 외의 경우 우선 순위는 0.5입니다.
그러므로 가장 일반적인 패턴의 종류 즉, 특정 형식과 특정 확장 이름으로 노드를 테스트하는 패턴의 우선 순위는 0입니다. 그 다음으로 일반적인 패턴의 종류 즉, 특정 형식 및 특정 네임스페이스 URI가 있는 확장 이름으로 노드를 테스트하는 패턴의 우선 순위는 -0.25입니다. 이보다 일반적인 패턴 즉, 특정 형식으로만 노드를 테스트하는 패턴의 우선 순위는 -0.5입니다. 가장 일반적인 패턴 종류보다 구체적인 패턴의 우선 순위는 0.5입니다.
- mode
모드 값입니다. 이 값을 사용하면 요소를 여러 번 처리하여 각각 다른 결과를 생성할 수 있습니다.<xsl:template>
에match
특성이 없으면mode
특성도 없어야 합니다.<xsl:apply-templates>
요소에mode
특성이 있으면 같은 값의mode
특성이 있는<xsl:template>
요소의 템플릿 규칙에만 적용됩니다.<xsl:apply-templates>
요소에mode
특성이 없으면mode
특성이 없는<xsl:template>
요소의 템플릿 규칙에만 적용됩니다.
요소 정보
발생 횟수 |
제한 없음 |
부모 요소 |
|
자식 요소 |
xsl:apply-imports,xsl:apply-templates, xsl:attribute, xsl:call-template, xsl:choose, xsl:comment, xsl:copy, xsl:copy-of, xsl:element, xsl:fallback, xsl:for-each, xsl:if, xsl:message, xsl:number, xsl:param, xsl:processing-instruction, xsl:text, xsl:value-of, xsl:variable, 출력 요소 |
설명
루트 템플릿이라도 transformNodeToObject
를 사용하지 않으면 템플릿은 전체 XML 문서를 생성할 필요가 없으며 XML 단편만 생성하면 됩니다. 묶이지 않은 텍스트 또는 템플릿에 정의된 여러 문서 요소를 포함할 수 있습니다. 이로써 원시 텍스트 및 XML 단편을 생성할 수 있으며 HTML 단편을 HTML 페이지에 삽입하는 등 응용 프로그램에서 이를 처리할 수 있습니다.
name
특성 값은 확장된 QName입니다. 접두사가 있을 경우 이 접두사는 이름이 발생한 특성에서 네임스페이스 선언을 사용하여 URI 참조로 확장됩니다. 이름의 로컬 부분과 null일 수 있는 URI 참조로 구성되는 확장 이름은 템플릿의 이름으로 사용됩니다. 접두사가 없는 이름에는 기본 네임스페이스가 사용되지 않습니다.
<xsl:template>
요소에 name
특성이 있을 경우 match
특성이 있을 수 있지만 반드시 있어야 하는 것은 아닙니다. <xsl:call-template>
요소는 이름으로 템플릿을 호출합니다. 이 요소에는 호출할 템플릿을 식별하는 필수 name
특성이 있습니다. <xsl:apply-templates>
와 달리 <xsl:call-template>
은 현재 노드 또는 현재 노드 목록을 변경하지 않습니다.
스타일시트에 이름이 같은 템플릿이 두 개 이상 포함된 경우 오류가 발생합니다.
예제
이 템플릿 규칙에는 <stock>
요소를 식별하고 STYLE="font-weight:bold"
특성이 있는 출력 <DIV>
요소를 생성하는 패턴이 있습니다.
XML 파일(portfolio.xml)
XSLT 파일(templ.xsl)
출력
다음은 형식이 지정된 출력입니다.
Symbol: ZCXM, Price: 28.875
Symbol: ZFFX, Price: 92.250
Symbol: ZYSZ, Price: 20.313