XML不间断的空间

jlp*_*jlp 19 xml xslt

我正在使用XLST文件将XML转换为XML.

什么是空间的有效表示?

<xsl:text> </xsl:text>
<xsl:text>&nbsp;</xsl:text>
<xsl:text>&#160;</xsl:text>
Run Code Online (Sandbox Code Playgroud)

Tom*_*lak 17

XML没有任何命名实体之外&lt;,&gt;,&quot;,&apos;&amp;.

鉴于您在XML声明中声明了正确的编码(例如<?xml version="1.0" encoding="..." ?>),所有其他字符都可以逐字表示.声明UTF-8是可选的,因为这是默认值.

换句话说:没有必要在任何地方专门转义任何字符,除非将其转义为非语法会破坏XML语法规则(如<&将会).

你当然可以自由地逃避你想要的任何角色.

就结果文件而言,这些陈述是等效的:

<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 -->
Run Code Online (Sandbox Code Playgroud)

请注意,您可以nbsp使用DOCTYPE 声明自定义命名实体(例如).

<!DOCTYPE xsl:stylesheet [
   <!ENTITY nbsp "&#160;">
]>
Run Code Online (Sandbox Code Playgroud)

但鉴于XML接受任何几乎不需要的字符.特别是当您使用适当的工具(如DOM API)创建文档时.

  • 这是SO正常化的一个小故障.我绝对使用了NBSP角色,但它却被一个普通的空间所取代.似乎不可能在答案中存储实际的NBSP. (2认同)

小智 5

与问题相关,将导致解析错误的所有实体添加到*.xls样式表的DOCTYPE中.

<?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">
Run Code Online (Sandbox Code Playgroud)

现在您可以像平常一样使用&nbsp;.