Yanıtlar:
 
Bunun yerine varlık kodunu kullanın.
HTML "karakter varlığı referansı" dır. XML'de kesilmeyen alan için adlandırılmış varlık yoktur, bu nedenle kodu kullanırsınız  
.
Vikipedi XML ve HTML varlıkların listesini içerir ve XML sadece 5 "önceden tanımlanmış varlıklar" olduğunu görebilirsiniz, ancak HTML 200'ün üzerinde vardır ben de yanına işaret edeceğiz bir boşluk oluşturma (& nbsp;) XSL sahiptir mükemmel cevaplar.
Š
bunun yerine  
her zaman bir Unicode kırılmayan alana çözümlenecektir.
 
gerçekten iyi çalışıyor. Ancak, ANSI kodlamasında bu garip karakterlerden birini görüntüler. <xsl:text>
benim için en iyi çalıştı.
<xsl:text> </xsl:text>
Bunu da yapabilirsiniz:
<xsl:text disable-output-escaping="yes"><![CDATA[ ]]></xsl:text>
disable-output-escaping
bunun için gerekli değildir ve XSLT 2.0 kullanımdan kaldırılmış ve daha çok 3.0 'oldu. Bu sürümlerde, xsl:character-map
çapraz işlemcinin çalışması garantili olarak aynı etkiye ulaşabilirsiniz . Ayrıca, bu
, çıktıya kesinti olmayan bir alanla aynı olması gerekmeyen adlandırılmış bir varlık yerleştirir ve alıcı uç bu varlığı bildirmiş olmalıdır (HTML'de genellikle örtüktür).
Bunu kullan
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
edit: Downvoters muhtemelen bu ilk çalıştığını doğrulamak gerekir (yapar ve sorunun en genel çözümdür.)
Dosyanın başına bu varlık için tanım eklemek isteyebilirsiniz (xml bildiriminin altında):
<!DOCTYPE stylesheet [
<!ENTITY nbsp " " >
]>
Ayrıca Ntilde, Aacute vb. Gibi daha fazla varlık ekleyebilirsiniz.
Victor hugo'nun cevabına ek olarak , bilinen tüm karakter referanslarını bir XSLT dosyasında yasal olarak elde etmek mümkündür, örneğin:
<!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>
Bu yaklaşımın sonucunda, <xsl:text disable-output-escaping="yes">
bire kıyasla belirli bir fark vardır . İkincisi,
her türlü çıktı için olduğu gibi , dizgi değişmezleri de üretecek <xsl:output method="text">
ve bu istediğinizden farklı olabilir ... Aksine, XSLT şablonu için tanımlanan varlıkların elde <!DOCTYPE ... <!ENTITY ...
edilmesi her zaman senin xsl:output
ayarları.
Ve tüm karakter referanslarını dahil ederken, XSLT motorunun Internet'ten karakter varlığı tanımlarını almasını önlemek için bir yerel varlık çözümleyici kullanmak akıllıca olabilir. JAXP veya açık Xalan-J kullanıcıları, çözümleyiciyi doğru kullanmak için Xalan-J için bir yamaya ihtiyaç duyabilir. Yama indirme ve yorumlar için XSLT, varlıklar, Java, Xalan ... bloguma bakın .
Aşağıdakileri (olmadan disable-output-escaping
!) Kullandığınızda tek bir kırılmaz alan elde edersiniz:
<xsl:text> </xsl:text>
disable-output-escaping
bunun için
XSLT stil sayfaları iyi biçimlendirilmiş XML olmalıdır. Yana " "
biri değil beş önceden tanımlanmış XML varlıklarına , doğrudan stil dahil edilemez. Çözümünüze geri dönmeniz , kullanmanız gereken " "
mükemmel bir yedek " "
.
Misal:
<xsl:value-of select="$txtFName"/> <xsl:value-of select="$txtLName"/>
Ayrıca kullanabilirsiniz:
<xsl:value-of select="'&nbsp'"/>
amp'den sonra amp'i hatırlayın yoksa bir hata mesajı alırsınız
&nbsp;
, görüntülenecek olan (orada olması için noktalı virgül olmasını istediğinizi varsayarsak) çıkacaktır
.
HTML tablosundaki boş bir hücrede kenarlıkları göstermeye çalışıyordum. Boş hücrelerde kırılmaz boşluk kullanmanın eski hilesi xslt'den çalışmıyordu. Aynı etki ile satır sonu kullandım. Kesin olmayan alanı kullanmaya çalışmanızın nedeninin, hücre sınırlarını açmak için 'boş' bir tablo hücresine bazı içerik vermek olması durumunda bundan bahsediyorum.
<br/>
Kullanmaya çalışmak
<xsl:text> </xsl:text>
Ancak kullandığınız XSLT işlemciye bağlıdır: XSLT özelliği XSLT işlemcilerin bunu "
" biçimine dönüştürmesini gerektirmez .
Her ne kadar cevap @brabster ve diğerleri tarafından zaten sağlanmış olsa da.
Bence daha çok yeniden kullanılabilir çözüm:
<xsl:variable name="space"> </xsl:variable>
...
<xsl:value-of select="$space"/>