2017-10-04 4 views
0

XML 파일을 사용하는 XSL 파일이 있습니다. XSL 파일은 XML 문서에있는 정보를 두 번 표시해야하지만 매번 약간 다르게 표시해야합니다. 지정 <xsl:apply-templates select="...">...</>이름으로 템플릿을 적용하려면 어떻게해야합니까?

+3

당신은'mode' 속성을 사용할 수 있습니다처럼 소리 (https://www.w3.org/TR/xslt#modes) 보다 정확한 답변을 제공하기 위해 질문을 편집하여 XML 샘플과 예상 한 결과를 표시 할 수 있습니다. 감사. –

+1

템플릿 이름에 대해 특별히 묻기 때문에 실제로 템플릿에 이름이 있음을 알았습니다. 이름에 의한 템플릿 액세스는'xsl : apply-templates'에 의해 (직접적으로)'xsl : call-template' 액션에 의해 제공됩니다. 'apply-templates' 할 때 동일한 노드와 일치하는 다른 템플릿 중에서 선택하는 일반적인 우선 순위 규칙을 덮어 쓰려면 @TimC가 이미 말했듯이 함께 플레이 할'mode' 차원이 있습니다. –

답변

2
나도 같은 경기가 다른 템플릿을 선언 할 수있는 방법

하지만 를 사용하는 경우

어떻게 같은 경기가 다른 템플릿을 선언,하지만 난 호출 할 템플릿을 지정할 수있는 템플릿을 사용할 때 호출하려고합니다. ...

모드를 사용하십시오. 템플릿 규칙 :

<xsl:template match="xyz" mode="mode1"/> 

적용 템플릿에서 전화 :

<xsl:apply-templates select="abc" mode="mode1"/> 

은 "최적"템플릿 규칙을 찾고, 적절한 모드에서만 서식 규칙이 고려된다.

모드는 모든 XSLT 버전에서 사용할 수 있습니다. XSLT 3.0에서는 예를 들어, 모드의 속성을 선언 할 수 있습니다

<xsl:mode name="mode1" streamable="yes" on-no-match="fail"/> 
관련 문제