2013-11-20 1 views
2

XSL: Is there an easy way to prevent widows?의 솔루션을 사용하면 DOM에 홀수 태그가 만들어집니다.XSL : 과부를 예방하는 쉬운 방법이 있습니까? (파트 2)

이름의 요소를 삽입하지 못하도록하는 방법이 있습니까? 현재 내가

<xsl:apply-templates select="solution-headline" mode="widow-fix" /> 

을 실행하면 내가 방금 텍스트를 원하는 경우 그 다음 가장 간단한 방법은 widow-을 적용하는 것입니다

<xsl:text>Lorem ipsum<xsl:text/> 

답변

2

을 삽입 할

<solution-headline>Lorem ipsum<solution-headline/> 

삽입합니다 템플릿을 요소 자체 대신 solution-headline 요소의 텍스트 노드 하위에 수정합니다.

당신이 항상는 주변의 요소를 포함하면 바로 텍스트를 포기하지 과부 담합을 원하는 경우에 당신이 과부 - 수정 템플릿을 적용 할 때
<xsl:apply-templates select="solution-headline/text()" mode="widow-fix" /> 

후 이제 기존 템플릿

<xsl:template match="* | @*" mode="widow-fix"> 
    <xsl:copy> 
     <xsl:apply-templates select="@* | node()" mode="widow-fix"/> 
    </xsl:copy> 
</xsl:template> 

삭제 solution-headlinedefault template을 사용합니다. 기본적으로는 <xsl:apply-templates mode="widow-fix" />입니다. 동일한 모드를 사용하여 모든 자식 노드를 처리하십시오) copy이 없으면 widow-fixing 템플리트로 처리 된 모든 자손 텍스트 노드를 갖게됩니다.

+0

'widow-fix'모드를 수정하여 항상'text()'를 사용하는 방법이 있습니까? 수정 된 템플릿을 여기에 붙여 넣을 수 있다면 대답으로 표시 할 수 있습니다. –

+0

네, 당신의 제안은 효과가 있습니다 –

+1

@KirkStrobeck 나는 그것을 처리 할 수있는 방법을 제안했습니다. –