이 페이지의
XSLT 템플릿 개요
XSLT 스크립트는 템플릿이라고 하는 하나 이상의 규칙 집합으로 구성됩니다. 각 템플릿은 지정된 노드가 일치할 때 적용할 규칙을 포함하는 코드 세그먼트입니다. 요소를 사용하여 <xsl:template>
템플릿을 작성합니다.
명명되거나 이름이 지정되지 않은 템플릿에는 두 가지 유형이 있으며, 다음 섹션에서 설명합니다.
이름 없음(일치) 템플릿
이름 없는 템플릿(매치 템플릿이라고도 함)에는 템플릿을 호출해야 하는 노드에 대한 기준을 지정하는 XPath 표현식이 포함된 속성이 포함되어 match
있습니다. 다음 예에서 템플릿은 현재 컨텍스트의 하위 요소이며 값이 문자열10.10.
로 시작하는 하위 요소가 있는 요소 route
next-hop
에 적용됩니다.
<xsl:template match="route[starts-with(next-hop, '10.10.')]"> <!-- ... body of the template ... --> </xsl:template>
기본적으로 XSLT는 문서를 처리할 때 전체 문서 계층을 반복적으로 통과하여 각 노드를 검사하고 현재 노드와 일치하는 템플릿을 찾습니다. 일치하는 템플릿이 발견되면 해당 템플릿의 내용이 평가됩니다.
이 <xsl:apply-templates>
요소는 이름이 지정되지 않은 템플릿 내에서 XSLT의 기본 노드 계층적 통과를 제한하고 제어하는 데 사용할 수 있습니다. <xsl:apply-templates>
요소가 속성을 가지고 있는 경우 속성에서 select
정의한 XPath 표현식과 일치하는 노드만 통과합니다. 그렇지 않으면 컨텍스트 노드 의 모든 자식이 통과합니다. 속성이 select
포함되어 있지만 노드와 일치하지 않으면 아무 것도 통과하지 않고 아무 일도 일어나지 않습니다.
다음 예에서 템플릿 규칙은 XML 계층의 요소와 일치 <route>
합니다. 속성이 포함된 모든 노드가 changed
처리됩니다. 속성을 포함한 changed
모든 <route>
요소가 요소로 <new>
대체됩니다.
<xsl:template match="route"> <new> <xsl:apply-templates select="*[@changed]"/> </new> </xsl:template>
이름이 없는 템플릿을 사용하면 스크립트가 XML 계층에서 태그 위치를 무시할 수 있습니다. 예를 들어, 모든 <author>
태그를 태그로 <div class="author">
변환하려는 경우 템플릿을 사용하면 입력 XML 문서의 위치에 관계없이 모든 <author>
태그를 변환하는 단일 규칙을 작성할 수 있습니다.
이름이 없는 템플릿이 스크립트에서 사용되는 방법에 대한 자세한 내용은 xsl:템플릿 일치="/" 템플릿을 참조하십시오.
명명된 템플릿
명명된 템플릿은 구문을 사용하더라도 기존 프로그래밍 언어의 기능처럼 작동합니다. 스크립트의 복잡성이 증가하거나 코드 세그먼트가 여러 곳에 나타나면 코드를 모듈화하고 명명된 템플릿을 만들 수 있습니다. 함수와 마찬가지로 명명된 템플릿은 인수를 수용하고 명시적으로 호출된 경우에만 실행됩니다.
요소를 사용하고 기존 프로그래밍 언어의 <xsl:template>
기능 이름과 유사한 속성을 정의하여 name
명명된 템플릿을 생성합니다. <xsl:param>
태그와 그 name
속성을 사용하여 명명된 템플릿에 대한 매개변수를 정의하고 각 매개 변수에 대해 기본값을 선언하는 속성을 선택적으로 포함합니다 select
. 속성에는 select
XPath 표현식이 포함될 수 있습니다. 속성이 select
정의되지 않으면 매개 변수가 빈 문자열로 기본 설정됩니다.
다음 예제에서는 명명된 my-template
템플릿을 만들고 세 가지 매개변수를 정의합니다. 그 중 하나는 문자열 false
의 기본값이며, 그 중 하나는 현재 컨텍스트 노드의 하위인 name
요소 노드의 컨텐츠를 기본으로 지정합니다. 스크립트가 템플릿을 호출하고 매개 변수를 전달하지 않으면 기본값이 사용됩니다.
<xsl:template name="my-template"> <xsl:param name="a"/> <xsl:param name="b" select="'false'"/> <xsl:param name="c" select="name"/> <!-- ... body of the template ... --> </xsl:template>
스크립트에서 명명된 템플릿을 호출하려면 요소를 사용합니다 <xsl:call-template>
. 속성이 name
필요하며 호출되는 템플릿의 이름을 정의합니다. 프로세스가 완료되면 <xsl:call-template>
요소가 이름에 지정된 요소의 내용으로 <xsl:template>
대체됩니다.
명명된 템플릿을 호출하면 자식 요소를 포함 <xsl:with-param>
시키고 속성을 지정하여 인수를 템플릿으로 name
전달할 수 있습니다. 속성 값 <xsl:with-param>
name
은 실제 템플릿에 정의된 매개 변수와 일치해야 하며, 그렇지 않으면 매개 변수가 무시됩니다. 선택적으로 요소의 속성 또는 컨텐 <xsl:with-param>
트 중 하나 select
와 함께 각 매개 변수에 대한 값을 설정할 수 있습니다. 호출 환경에서 매개 변수에 대한 값을 정의하지 않으면, 스크립트가 이전에 초기화되었을 경우 매개 변수의 현재 값을 전달하거나 매개 변수가 선언되지 않은 경우 오류를 생성합니다. 전달 매개 변수에 대한 자세한 내용은 XSLT 매개 변수 개요를 참조하십시오.
다음 예에서 템플릿 my-template
은 현재 컨텍스트 노드의 하위인 other-name
요소 노드의 컨텐트 포함 매개 변수 c
로 호출됩니다.
<xsl:call-template name="my-template"> <xsl:with-param name="c" select="other-name"/> </xsl:call-template>
커밋 스크립트에서 명명된 템플릿을 사용하는 방법을 보여주는 예제는 예제: 구성 명령문 필요 및 제한(Require and Restrict configuration Statements)을 참조하십시오.