2013-12-17 4 views
0

내 스타일 시트 내에서 특정 XSL 템플릿의 모든 줄 바꿈을 제거하는 방법을 찾고 있습니다. 은 전체 스타일 시트가 아니며 템플릿은입니다.XSL 템플릿에서 줄 바꿈을 제거하십시오.

JSON 블록 코드를 렌더링하는 템플릿이 있습니다.

<div>Content here..</div> 

<script type="text/javascript">var json = {data:[{ID:1},{ID:2},{ID:3}]};</script> 

<div>Content here..</div> 
:이 같은 렌더링하는 것을 선호

<div>Content here..</div> 

<script type="text/javascript"> 
    var json = { 
     data:[ 

     { 
      ID:1 
     } 
     , 
     { 
      ID:2 
     } 
     , 
     { 
      ID:3 
     } 

     ] 
    }; 
</script> 

<div>Content here..</div> 

:

<xsl:template match="/"> 
    <div>Content here..</div> 

    <xsl:call-template name="Foo"> 
     <xsl:with-param name="Bar" select="Bar" /> 
    </xsl:call-template> 

    <div>Content here..</div> 
</xsl:template> 

<xsl:template name="Foo"> 
    <xsl:param name="Bar" /> 
    <script type="text/javascript"> 
     var json = { 
      data:[ 
      <xsl:for-each select="$Bar"> 
       { 
        ID:<xsl:value-of select="@Baz"/> 
       } 
       <xsl:if test="position() != last()">,</xsl:if> 
      </xsl:for-each> 
      ] 
     }; 
    </script> 
</xsl:template> 

이 같은 무언가로 렌더링 :

예를 들어, 내 XSLT 스타일 시트에서 나는 다음이

내 XSL 템플릿을 읽을 수 없게 만들 필요없이 가능합니까?

+0

XSLT 1.0 또는 2.0을 사용하고 있습니까? 나는 전체를 for-each로 대체 할 수 있다고 생각한다. –

+0

@CarloCannas 1.0 불행히도, 그리고 업 그레 이드 가능성이 없습니다 – Curt

답변

1

xsl:text 요소에 JAvaScript 코드를 래핑하면 원하는 결과를 얻을 수 있습니다.

<script type="text/javascript"> 
    <xsl:text>var json = {data:[</xsl:text> 
    <xsl:for-each select="$Bar"> 
     <xsl:text>{ID:</xsl:text> 
     <xsl:value-of select="@Baz"/> 
     <xsl:text>}</xsl:text> 
     <xsl:if test="position() != last()">,</xsl:if> 
    </xsl:for-each> 
    <xsl:text>]};</xsl:text> 
</script> 

멋진 코드 조각은 아니지만 여전히 읽을 수 있다고 생각합니다. 작동하는지 알려주세요.

+0

이것은 내 XSL 모양이 실제로 어수선하게 보이지만, XSL이 당신에게 맞을 것 같습니다. :) 덕분에 모든 줄 바꿈을 제거하는 것보다 훨씬 낫습니다. 감사합니다! – Curt

관련 문제