이 예제에서는 <xsl:apply-imports> 를 사용하여 코드를 더욱 효과적으로 다시 사용하는 방법을 보여 줍니다. 이 예제에서는 네 가지 기본 파일을 사용합니다.
XML 소스 파일 ops.xml. 이 데이터 파일에서는
add(+),sub(-) 및mul(*) 등의 세 가지 연산자를 정의합니다.기본 XSLT 스타일시트 ops.xsl. 이 파일에는 두
<xsl:import>요소를 포함하여 작업에 대한 템플릿 규칙이 들어 있습니다. 가져온 스타일시트는 지정된 데이터 소스에서 산술 연산 및 문자열 연산을 수행합니다.가져온 스타일시트 arith.xsl. 이 XSLT 파일은 각
<op>요소에서 산술 연산을 수행합니다.가져온 또 다른 스타일시트 str.xsl. 이 XSLT 파일은 사용자 지정 문자열 연산을 수행합니다. 여기서
add(+)는 문자열을 연결합니다. 예를 들어,1+2는12가 됩니다. 마찬가지로mul(*)은 문자열을 반대로 연결합니다. 예를 들어 1*2은 21이 됩니다.sub(-)은 정의되지 않은 문자열 연산입니다.
XML 파일(ops.xml)
기본 XSLT 파일(ops.xsl)
가져온 XSLT 파일(arith.xsl)
가져온 XSLT 파일(str.xsl)
출력
출력은 다음과 같습니다.
Some binary operations
1+2 = 12 (from str.xsl)
1-2 = -1 (from arith.xsl)
1*2 = 21 (from str.xsl)
설명
마지막으로 가져온 스타일시트는 가져오기 우선 순위가 가장 높습니다. 이 예제에서는 str.xsl을 마지막으로 가져왔으므로 arith.xsl보다 가져오기 우선 순위가 높습니다. 가져온 스타일시트 두 개에 모두 add 및 mul 연산에 대한 템플릿이 있지만 str.xsl의 템플릿만 호출됩니다. 그러나 str.xsl에 sub 연산이 정의되지 않았으므로 arith.xsl에 정의된 sub 연산이 사용됩니다. 기본 XSLT 파일에서 <xsl:import> 요소의 순서를 다음과 같이 바꾸었다고 가정합니다.
<xsl:import href="str.xsl"/>
<xsl:import href="arith.xsl"/>
이 경우 출력은 다음과 같습니다.
Some binary operations
1+2 = 3 (from arith.xsl)
1-2 = -1 (from arith.xsl)
1*2 = 2 (from arith.xsl)
또한 기본 XSLT 파일(ops.xsl)에서 <op>에 대한 재정의 템플릿 규칙에 <xsl:apply-imports/> 명령이 없을 경우 출력은 다음과 같습니다.
Some binary operations
1+2 =
1-2 =
1*2 =
즉, 스타일시트를 가져오는 템플릿 규칙은 가져온 스타일시트에서 관련 템플릿 규칙을 재정의합니다. <xsl:apply-imports/> 명령을 사용하면 재정의된 템플릿 규칙을 다른 방법으로 다시 활성화할 수 있습니다.