Używanie encji HTML w XSLT (np. )
Jaki jest najlepszy sposób na włączenie encji html w XSLT?
<xsl:template match="/a/node">
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
</xsl:template>
Ten zwraca XsltParseError
11 answers
Możesz użyć sekcji CDATA
<xsl:text disable-output-escaping="yes"><![CDATA[ ]]></xsl:text>
Lub możesz opisać & nbsp w lokalnym DTD:
<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp " "> ]>
Lub po prostu użyj  
zamiast
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-28 09:08:01
Możliwe jest również rozszerzenie podejścia z drugiej części odpowiedzi aku i udostępnienie wszystkich znanych odniesień do znaków, takich jak:
<!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> −30°</xsl:text>
Istnieje pewna różnica w wyniku w porównaniu z podejściem <xsl:text disable-output-escaping="yes">
. Ta ostatnia będzie wytwarzać literały łańcuchowe, takie jak
dla wszystkich rodzajów danych wyjściowych, nawet dla <xsl:output method="text">
, a to może się różnić od tego, czego byś sobie życzył... Wręcz przeciwnie, uzyskanie encji zdefiniowanych dla szablonu XSLT za pomocą <!DOCTYPE ... <!ENTITY ...
zawsze spowoduje wyjście zgodne z ustawieniami xsl:output
.
Może być rozsądne użycie lokalnego mechanizmu rozpoznawania encji, aby silnik XSLT nie pobierał definicji encji znaków z Internetu. Użytkownicy JAXP lub jawni Xalan-J mogą potrzebować łatki dla Xalan-J, aby poprawnie używać resolvera. Zobacz mój blog XSLT, entities, Java, Xalan... do pobierania patcha i komentarzy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:00:34
Inna możliwość użycia encji html z xslt jest następująca:
<xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-28 09:10:04
XSLT domyślnie obsługuje tylko pięć podstawowych elementów: lt
, gt
, apos
, quot
, i amp
. Wszystkie inne muszą być zdefiniowane jako @Aku .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:25:31
Ten zwraca XsltParseError
Tak, a powodem tego jest to, że
nie jest predefiniowanym elementem w XML lub XSLT, jak jest w HTML.
Możesz po prostu użyć znaku unicode, który {[0] } oznacza:  
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-28 09:04:39
Teraz, gdy istnieje Unicode, używanie nazwanych encji znaków jest na ogół nieproduktywne. Zalecałbym użycie znaku Unicode dla niełamliwych spacji zamiast encji, właśnie z tego powodu. Alternatywnie możesz użyć encji  
;, zamiast encji nazwanej. Używanie nazwanych jednostek sprawia, że XML jest zależny od wbudowanego lub zewnętrznego DTD.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-28 12:59:00
Znalazłem wszystkie te rozwiązania wytwarzają znak  w pustej przestrzeni.
Użycie <xsl:text> </xsl:text>
rozwiązało problem dla mnie; ale <xsl:text>#x20;</xsl:text>
może również zadziałać.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-24 20:03:28
Dziękuję za informacje. Napisałem krótki wpis na blogu oparty na tym, co działało dla mnie, gdy robiłem transformację XSLT w szablonie Dynamicweb CMS.
Wpis na blogu jest tutaj: Jak dodawać encje do szablonów XSLT .
/Sten Hougaard
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-18 13:05:24
Konieczne jest użycie encji #x160;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-25 08:44:31
Nie miałem szczęścia z podejściem DOCTYPE od Aku.
To, co działało dla mnie w MSXML transforms na serwerze Windows 2003, to
<xsl:text disable-output-escaping="yes">&#160;</xsl:text>
Rodzaj hybrydy z powyższych. Dziękujemy współpracownikom Stackoverflow!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-27 01:41:34
Jeden znak spacji między znacznikami tekstowymi powinien wystarczyć.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-02 21:27:32