2012-09-28 3 views
0

공간을 채우는 두 개의 별도 템플릿을 만들어야합니다. 하나는 49 개의 공백을 차지하고 다른 하나는 549 개의 공백을 채 웁니다. 내가 생각하기에 템플릿에서 템플릿이 발견되었지만, XML에 익숙하지 않은 것을 실제로 알 수는 없습니다.xslt를 사용하여 공간 필러 템플릿 만들기

<!-- Template Filler--> 
    <xsl:template name="Filler"> 
    <xsl:param name="fillercount" select="1"/> 
    <xsl:if test="$fillercount > 0"> 
     <table class="tabledetails"> 
     <tr> 
      <td> 
      <xsl:value-of select="translate(' ', ' ', '&#160;')"/> 
      </td> 
     </tr> 
     </table> 
     <xsl:call-template name="Filler"> 
     <xsl:with-param name="fillercount" select="$fillercount - 1"/> 
     </xsl:call-template> 
    </xsl:if> 
    </xsl:template> 

내가 필요하고 select="49"로 전화를 걸거나 내가 잘못을 읽고있다이 무엇인가. 이것이 내가 지금 필요한 경우 어떻게 이것을 얻을 수 있습니까?

답변

0

원하는 출력을 말하지 않았습니다. 매개 변수 49로이 템플리트를 호출하면 출력에는 49 행의 표가 있으며 각 표에는 하나의 행과 하나의 열이 있으며 셀의 내용은 줄 바꿈하지 않는 공백 문자입니다. 줄 바꿈하지 않는 공백 문자를 생성하는 방법은 매우 이상합니다. translate() 호출은 공백 문자를 입력으로 사용하고 모든 공백을 줄 바꿈하지 않는 공백으로 바꾸어 처리합니다. 아마도 그것은 어떤 단계에서 더 현명한 일을하고있는 코드 줄이기 버전 일 것입니다.

코드의 기본 구조는 매개 변수 (예 : 49)를 사용하여 하나의 "thing"(이 경우에는 싱글 톤 테이블)을 출력하고 다시 같은 일을 N-1 회 수행하는 재귀 템플릿입니다. 그것이 XSLT 1.0에서 N 번 무언가를하는 적절한 방법입니다. (2.0에서는 명령형 언어로 개발 된 프로그래머에게 훨씬 더 직관적 인 <xsl:for-each select="1 to $N">을 사용할 수 있습니다.)