답변:
 
대신 엔티티 코드 를 사용하십시오 .
HTML "문자 엔티티 참조"입니다. XML에는 비 공백 공간에 대한 명명 된 엔터티가 없으므로 코드를 사용합니다  
.
위키 백과는 XML 및 HTML 개체의 목록을 포함 , 당신은 XML 만 5 "미리 정의 된 개체는"이 있다고 볼 수 있지만, HTML은 200 이상이 나는 또한에 이상 가리키는 것이다 공간을 만들기 (이 & nbsp;) XSL에 있다 훌륭한 답변.
Š
대신  
항상 유니 코드가 아닌 깨는 공간으로 해결할 수있는 후자를.
 
정말 잘 작동합니다. 그러나 ANSI 인코딩에서 이상한 문자 중 하나가 표시됩니다. <xsl:text>
나를 위해 가장 잘 작동했습니다.
<xsl:text> </xsl:text>
하나는 또한 이것을 할 수 있습니다 :
<xsl:text disable-output-escaping="yes"><![CDATA[ ]]></xsl:text>
disable-output-escaping
작동 합니다. 프로세서가 필요하지 않고 XSLT 2.0 이상에서는 3.0에서 더 이상 사용되지 않습니다. 이 버전에서는 xsl:character-map
크로스 프로세서 작동 을 보장 하면서 동일한 효과에 도달 할 수 있습니다 . 또한 이것은 이름 지정된 엔티티
를 출력에 배치하며 , 이는 비 공백 공간 과 반드시 같을 필요는 없으며 수신 측은 이 엔티티를 선언해야합니다 (HTML에서는 일반적으로 암시적임).
이것을 사용하십시오
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
편집 : Downvoter는 아마도 이것이 먼저 작동하는지 확인해야합니다 (그렇지만 문제에 대한 가장 일반적인 해결책입니다).
victor hugo의 답변 외에도 XSLT 파일에서 다음과 같이 알려진 모든 문자 참조를 얻을 수 있습니다.
<!DOCTYPE stylesheet [
<!ENTITY % w3centities-f PUBLIC "-//W3C//ENTITIES Combined Set//EN//XML"
"http://www.w3.org/2003/entities/2007/w3centities-f.ent">
%w3centities-f;
]>
...
<xsl:text>& –</xsl:text>
이 접근법의 결과에는 <xsl:text disable-output-escaping="yes">
하나 와 비교하여 특정한 차이가 있습니다 . 후자는
모든 종류의 출력 과 같은 문자열 리터럴을 생성 할 것이며 , 이는 원하는 결과 <xsl:output method="text">
와 다를 수도 있습니다. 반대로 XSLT 템플릿에 대해 정의 된 엔티티를 통해 <!DOCTYPE ... <!ENTITY ...
항상 출력과 일치하는 결과를 생성합니다. 당신의 xsl:output
설정.
모든 문자 참조를 포함 할 때 XSLT 엔진이 인터넷에서 문자 엔티티 정의를 가져 오지 못하도록 로컬 엔티티 해석기를 사용하는 것이 좋습니다. JAXP 또는 명시적인 Xalan-J 사용자는 Xalan-J가 해석기를 올바르게 사용하기위한 패치가 필요할 수 있습니다. 패치 다운로드 및 의견 은 내 블로그 XSLT, 엔티티, Java, Xalan ... 을 참조하십시오 .
다음을 사용하면 ( disable-output-escaping
! 없이 ) 단절이 아닌 단일 공간이 생깁니다.
<xsl:text> </xsl:text>
disable-output-escaping
로 하지 않습니다
XSLT 스타일 시트는 올바른 형식의 XML이어야합니다. 이후 " "
중 하나가 아닌 다섯 미리 정의 된 XML 엔티티 , 그것은 직접 스타일 시트에 포함 할 수 없습니다. 따라서 솔루션으로 돌아 오는 " "
것은 " "
사용해야 하는 완벽한 대체품입니다 .
예:
<xsl:value-of select="$txtFName"/> <xsl:value-of select="$txtLName"/>
HTML 테이블의 빈 셀에 테두리를 표시하려고했습니다. 빈 셀에서 중단되지 않는 공간을 사용하는 나의 오래된 트릭은 xslt에서 작동하지 않았습니다. 같은 효과로 줄 바꿈을 사용했습니다. 비 공백 공간을 사용하려는 이유가 셀 경계를 설정하기 위해 '빈'테이블 셀에 일부 내용을 제공하는 경우를 대비하여 이것을 언급합니다.
<br/>
@brabster와 다른 사람들이 이미 답변을 제공했지만.
더 재사용 가능한 솔루션은 다음과 같습니다.
<xsl:variable name="space"> </xsl:variable>
...
<xsl:value-of select="$space"/>