2009-08-06 15 views
0

一部を削除しXSL無効にする出力エスケープが空白XMLの

<xsl:value-of select="text" disable-output-escaping="yes" /> 

を私の出力は

**TitleHappy** 

私の間隔が行方不明になったなりました - </b><b>の間にスペースがあるはずです。

私はnormalize-space()を試しましたが、動作しません。

提案がありますか?ありがとう!

+1

あなたの例は私のために働いています。どのようなxmlパーサとxsltプロセッサを使用していますか?おそらくパーサは変換が呼び出される前に空白を削除していますか? –

+0

私のためにも動作します。あなたの質問には、明らかに重要ではない細部はありません。私は無効に出力エスケープを設定すると – Tomalak

+0

=「no」を 私の出力は、私はまだ任意の関連情報 –

答えて

1

あなたは、XSLから空白をしたい場合は、以下を使用します。 <のxsl:テキスト> </XSL:「」両空間は以下となります。そのテキストノード(すなわちとして認識された場合、テキスト>

空白のみが保存されています

parser.setPreserveWhitespace(真))のorignalソースXMLから

空白(たとえばパーサを伝えることによって保存されなければならない)認識されます。

+0

の間のスペースはテキストノードとして認識されないので保存されていないと思いますか?とにかくそれを保存し、それを出力として表示するには? –

+0

私はあなたのソースをxslと間違えていたので(xsl:textメソッドはうまくいきません)私は、XMLパーサーがあなたのsource-xml内の空白を削除するのではないかと心配しています。それ以外の空白以外の文字を追加すると、textnodeとして認識され、空白(少なくとも1回)が保持されます。あなたのxmlパーサーのオプションを詳しく見て、空白を残すようにします。それ以外の場合は、 (または  - 改行しないスペース)が唯一役立つものです。 – Niko

0

あなたは改行なしスペースで 

+0

ありがとうございます。私は現在あなたの提案を使用しています。 –

0

をあなたのスペースを置き換えることができ、あなたの出力HTMLとして、あなたは、元のXMLの世代の任意のコントロールを持っていますか?そうであれば、xml:space = "preserve"をテキスト要素に追加して、空白を残すようプロセッサに指示してください。

<text xml:space="preserve"><b>Title</b> <b>Happy</b></text> 

また、XSLTの "xsl:preserve-space"要素を調べてみてください。

私はこれを個人的に使用したことはありませんが、何か助けになるかもしれません。詳細については、W3Schoolsを参照してください。

+0

私はオリジナルのXMLを制御できません。 =( 私は保存スペースを試してみましたが、それは動作しません。それはとにかくデフォルト設定で分かった。 スペースが太字タグが使用されている場合にのみ、姿を消した。 タイトルハッピーはまだタイトルハッピー 奇妙な私を返します。 –

0

皆様のご協力いただきありがとうございます。 現在、私はMattHの提案を使用しています。これは、スペースと非破壊スペースの代替をテストすることです。私が考えたもう一つの方法は、 "</b> < b>"をテストし、 "</b> < b>"で置き換えることです。大胆なタグ内のスペースは実際に出力されます。両方の方法が働いた。どのような意味があるのか​​分かりません。そして、2つの別々の大胆なタグの間にスペーシングが見つかった場合、スペーシングがなぜ取り除かれるのかまだ分かりません。

関連する問題