我正在使用XSLT文件将XML转换为XML。
什么是空间的有效表示?
<xsl:text> </xsl:text>
<xsl:text> </xsl:text>
<xsl:text> </xsl:text>
答案 0 :(得分:17)
除了<
,>
,"
,'
和&
之外,XML没有任何命名实体。
除非您在XML声明中声明了正确的编码(例如<?xml version="1.0" encoding="..." ?>
),否则所有其他字符都可以逐字表示。声明UTF-8是可选的,因为这是默认值。
换句话说:没有必要在的任何地方专门转义任何字符,除非将其转义为非转义会破坏XML语法规则(如<
或&
)。< / p>
你当然可以自由地逃避任何你想要的角色。
就结果文件而言,这些表示是等效的:
<foo>Test Test</foo>
<foo>Test Test</foo>
<foo>Test Test</foo>
<foo>Test Test</foo><!-- given that the " " really is char code 160 -->
请注意,您可以使用DOCTYPE声明自定义命名实体(例如nbsp
)。
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp " ">
]>
但鉴于XML接受任何几乎不需要的角色。特别是在使用适当的工具(如DOM API)创建文档时。
答案 1 :(得分:5)
与问题相关,将导致解析错误的所有实体添加到* .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">
现在您可以像平常一样使用
。