我正在使用 XLST 文件将 XML 转换为 XML。
什么是空间的有效表示?
<xsl:text> </xsl:text>
<xsl:text> </xsl:text>
<xsl:text> </xsl:text>
<
除了、>
、&
、"
和之外, XML 没有任何命名实体'
。
所有其他字符都可以逐字表示,前提是您在 XML 声明中声明了正确的编码(例如<?xml version="1.0" encoding="..." ?>
),并且实际上以该编码保存了 XML 文件。声明 UTF-8 是可选的,因为这是 XML 的默认设置。
“正确”编码是包含您要使用的所有字符的任何编码。选择 Unicode 既流行又实用,但 XML 并不在意,只要您正确声明它即可。
所选字符集支持的任何字符都可以按原样使用,但在 XML 中具有特殊含义的字符除外(必须始终转义的 , 或 , 和<
, >
or &
,仅在某些情况下必须转义) . 所有其他字符都可以转义,但您不需要。'
"
需要说明的是,这些表示在生成的文档方面是 100% 等价的(即在 XML 解析器读取文件后得到的对象):
<foo>Test Test</foo> <!-- unescaped - given that the " " really is char code 160 -->
<foo>Test Test</foo> <!-- partially escaped -->
<foo>Test Test</foo> <!-- decimal escaped -->
<foo>Test Test</foo> <!-- hex escaped -->
不间断空格与字母“T”没有任何特殊或不同。为方便使用文本编辑器编辑 XML 文件,您可能希望选择转义形式,但没有技术要求。
请注意,您可以
使用 DOCTYPE声明自定义命名实体(如)。
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp " ">
]>
但是考虑到 XML 接受几乎不需要的任何字符这一事实。尤其是当您使用适当的工具(如 DOM API)创建文档时。
因为它与问题相关,所以将所有导致解析错误的实体添加到 *.xls 样式表的 DOCTYPE 中。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp " ">
]>
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
现在您可以
照常使用了。