2013-09-28 2 views
6

XSLT 스타일 시트에서 <xsl:attribute> 태그의 앞뒤 공백을 제거하려면 어떻게해야합니까? 예를 들어<xsl : attribute> 태그 내의 공백을 제거하는 방법은 무엇입니까?

다음 스타일 :

<xsl:template match="/"> 
    <xsl:element name="myelement"> 
    <xsl:attribute name="myattribute"> 
     attribute value 
    </xsl:attribute> 
    </xsl:element> 
</xsl:template> 

출력 :

<myelement myattribute="&#10;  attribute value&#10; "/> 

동안 I 출력에 싶습니다 다른 작업을 수행 할 수있는 방법이

<myelement myattribute="attribute value"/> 

있는가 한 줄에 <xsl:attribute> 시작 태그와 끝 태그를 접는 것보다

속성 값이 일반 텍스트 행이 아니고 복잡한 계산 (예 : 또는 태그 사용)의 결과 인 경우 한 줄에 모든 코드를 접어 공백 문자를 피하고 후행 공백을 피하면 끔찍하게 못생긴 스타일 시트.

답변

6

당신은 XSL로 텍스트 줄 바꿈 수 : 텍스트 또는 XSL : 가치의 :

<xsl:template match="/"> 
    <xsl:element name="myelement"> 
     <xsl:attribute name="myattribute"> 
      <xsl:text>attribute value</xsl:text> 
     </xsl:attribute> 
    </xsl:element> 
</xsl:template> 

또는

<xsl:template match="/"> 
    <xsl:element name="myelement"> 
     <xsl:attribute name="myattribute"> 
      <xsl:value-of select="'attribute value'"/> 
     </xsl:attribute> 
    </xsl:element> 
</xsl:template> 

당신을 위해이 유용한가요? 그렇지 않으면 한 줄을 사용하여 문제를 설명하십시오.

마이클 케이 (Michael Kay)의 의견을주의 깊게 살펴보십시오.

+0

속성 값이 복잡한 계산의 결과 인 경우 (예 : ''요소), 원하는 결과를 얻기 위해 한 줄에있는 모든 코드를 축소하면 스타일 시트가 끔찍하게 보일 것입니다. –

+2

xsl : attribute와 xsl : choose 사이에 줄 바꿈을 사용할 수 있습니다. 텍스트 노드에서 줄 바꿈을 피하면됩니다. 텍스트 노드의 모든 줄 바꿈이 출력에서 ​​발견됩니다. xsl 요소 사이의 모든 줄 바꿈은 무시됩니다. –

+1

좋아, 알았다. 실생활에서' '은 텍스트 노드에 의해 "측면"이되었습니다. ''에있는 각각을 래핑하면 효과적으로 공백이 제거됩니다. 문제가 해결되었습니다. 감사합니다! –

관련 문제