2013-05-23 4 views
0

빈 문서 조각을 포함하는 변수를 빈 변수로 처리하는 가장 깨끗한 방법은 무엇입니까?빈 문서 조각을 빈 결과로 처리

다음 코드

<xsl:variable name="embedded-examples" select="d:example"/> 

<xsl:variable name="external-examples"> 
    <xsl:call-template name="external-examples"/> 
</xsl:variable> 

<xsl:variable name="examples" select="$embedded-examples | $external-examples"/> 

<xsl:if test="$examples"> 
    <d:section> 
     <d:title> 
      <xsl:text>Examples</xsl:text> 
     </d:title> 

     <xsl:for-each select="$examples"> 
      <xsl:copy-of select="."/> 
     </xsl:for-each> 
    </d:section> 
</xsl:if> 

그리고 템플릿을 가지고

<xsl:template name="external-examples"> 
    <xsl:variable name="example-comments" select="$example-docs//comment()"/> 

    <xsl:for-each select="$example-comments"> 
     <d:example> 
      <d:title><xsl:value-of select="normalize-space(.)"/></d:title> 
     </d:example> 
    </xsl:for-each> 
</xsl:template> 

문제는 esternal-examples의 변수가 비어있을 때 xsl:for-each 루프가 실행되지 않는 것입니다,하지만 빈을 생산 어쨌든 문서 조각, 시험을 실패 대신에 test="$examples"로 만드는 것.

example-comments이 비어있을 때 템플릿에서 아무 것도 반환하지 않도록 템플릿에서 어떻게해야합니까?

답변

0

자식 노드를 확인하기 위해 술어를 사용

<xsl:for-each select="$example-comments[count(child::node()) &gt; 0]"> 
    ... 
</xsl:for-each>