回答:
 
代わりにエンティティコードを使用してください。
HTMLの「文字エンティティ参照」です。XMLの非改行スペースの名前付きエンティティはないため、コードを使用します 
。
ウィキペディアにはXMLおよびHTMLエンティティのリストが含まれており、XMLには5つの「定義済みエンティティ」しかないことがわかりますが、HTMLには200を超えています。また、XSLでのスペースの作成( )素晴らしい答え。
Š
代わりに 
、後者は常にUnicode非改行スペースに解決されます。
 
本当にうまくいきます。ただし、ANSIエンコーディングでこれらの奇妙な文字の1つが表示されます。<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;
編集:ダウンボーターはおそらくこれが最初に機能することを検証する必要があります(機能し、問題に対する最も一般的な解決策です)。
このエンティティの定義をファイルの先頭に追加することもできます(xml宣言の下)。
<!DOCTYPE stylesheet [
<!ENTITY nbsp " " >
]>
また、Ntilde、Aacuteなどのエンティティを追加することもできます。
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">
1つと比較して特定の違いがあります。後者は
、すべての種類の出力の場合と同様に、文字列リテラルを生成します<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である必要があります。は5つの定義済みXMLエンティティの" "
1つではないため、スタイルシートに直接含めることはできません。したがって、ソリューションに戻ることは、使用すべき完全な代替品です。" "
" "
例:
<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"/>