2013-11-14 10 views
13

Sto utilizzando i file XLST per trasformare XML in XML.Spazio XML non interrompibile

Quali sono la rappresentazione valida dello spazio?

<xsl:text> </xsl:text> 
<xsl:text>&nbsp;</xsl:text> 
<xsl:text>&#160;</xsl:text> 
+2

Il primo è uno spazio normale, ' ' non è una codifica valida, e il secondo è la codifica valida di ' ' – freefaller

risposta

12

XML non ha entità con nome oltre &lt;, &gt;, &quot;, &apos; e &amp;.

Tutti gli altri caratteri possono essere rappresentati letteralmente, dato che hai dichiarato la codifica corretta nella dichiarazione XML (ad esempio <?xml version="1.0" encoding="..." ?>). La dichiarazione UTF-8 è facoltativa, in quanto è comunque l'impostazione predefinita.

In altre parole: Non c'è bisogno di sfuggire appositamente qualsiasi carattere da nessuna parte, a meno lasciandola senza caratteri di escape si spezzerebbe regole della sintassi XML (come < o & sarebbe).

Ovviamente sei libero di sfuggire a qualsiasi personaggio desideri.

Queste rappresentazioni sono equivalenti per quanto riguarda il documento risultante è interessato:

<foo>&#x54;&#x65;&#x73;&#x74;&#xa0;&#x54;&#x65;&#x73;&#x74;</foo> 

<foo>&#84;&#101;&#115;&#116;&#160;&#84;&#101;&#115;&#116;</foo> 

<foo>Test&#160;Test</foo> 

<foo>Test Test</foo><!-- given that the " " really is char code 160 --> 

Si noti che è possibile dichiarare nome personalizzato entità (come nbsp) utilizzando un DOCTYPE.

<!DOCTYPE xsl:stylesheet [ 
    <!ENTITY nbsp "&#160;"> 
]> 

Ma dato che XML accetta qualsiasi carattere che è quasi mai necessario. Soprattutto non quando crei il documento usando uno strumento adeguato, come una DOM API.

+0

Gli ultimi due equivalenti? Uno spazio non è la stessa cosa di uno spazio non frantumato ... almeno così come lo capisco – freefaller

+2

Questo è un problema tecnico nella normalizzazione di SO. Ho sicuramente usato un carattere NBSP ma viene sostituito silenziosamente da uno spazio normale. Sembra impossibile memorizzare un NBSP effettivo in una risposta. – Tomalak

4

Per quanto riguarda la domanda, aggiungere tutte le entità che causano errori di analisi al DOCTYPE del proprio foglio di stile * .xls.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE xsl:stylesheet [ 
    <!ENTITY nbsp "&#160;"> 
]> 
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

Ora è possibile utilizzare &nbsp; come si farebbe normalmente.

Problemi correlati