2015-01-08 1 views
5

코드 아래에서 모든 템플릿을 요소 장 (코드 끝 부분)에 적용하고 있지만 적용 가능한 방법을 알고 싶습니다. 모든 요소는 spefic 요소를 제외하고이 요소에 적용됩니다. 이 경우 이미 요소를 선택하고 있기 때문에 요소 제목입니다. 그리고 html 파일에 반복되어 나타납니다. 어떤 사람?스 프프 한 템플릿을 제외한 모든 템플릿에 템플릿을 적용하는 방법

<xsl:template match="chapter"> 
    <h3> 
     <a name="{@id}"><xsl:value-of select="title"/></a> 
    </h3> 
    <xsl:apply-templates/> 
</xsl:template> 

출력 : 평범 <xsl:apply-templates/><xsl:apply-templates select="node()" />에 해당

<h3>Title</h3> 
Title<br> 
Text. 

답변

11

, 즉 모든 자식 노드. XPath 2.0 except operator을 사용하여 특정 노드를 제외 할 수 있습니다.

<xsl:apply-templates select="node() except title" /> 

이 모든 자식 노드 제외 이름 title와 요소 것들을 선택합니다. 자식 (텍스트 노드가 아님)에만 관심이 있다면 * except title을 대신 사용할 수 있습니다.

except 연산자는 본질적으로 집합 차이를 구현합니다. 오른쪽에있는 간단한 요소 이름에 국한되지 않고 노드 시퀀스를 반환하는 표현식을 사용할 수 있습니다.

node() except (title | div[@class = 'heading']) 

X except Y

X의해 선택된 시퀀스에 있고 또한하지의 시퀀스 Y

의해 선택된 모든 노드를 선택