我有以下XSLT
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"...
它不是以XML声明开头的。
按标准:
因为每个不附带外部编码信息而不是UTF-8或UTF-16编码的XML实体必须以XML开头 编码声明,其中第一个字符必须是'&lt; ?XML”, 任何符合标准的处理器可以在两到四个八位字节之后检测到 输入,以下哪种情况适用。
...在section 2.8中,我们获得了prolog
的作品:
[22] prolog ::= XMLDecl? Misc* (doctypedecl Misc*)?
[23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
因此,我们可以省略 XML声明,但我们不能在其前面添加任何内容。
所以我可以省略它并且转换做得很好但这是一个好习惯吗?例如,当有西里尔字母或中文符号时,我能遇到不可预测的情况吗?
答案 0 :(得分:3)
词法上,XML声明对于所有XML文件都是可选的,包括XSLT。
从语义上讲,它是XML 1.1(及更高版本)和UTF-8或UTF-16以外的编码所必需的。 (从技术上讲,如果an encoding is determined by a higher-level protocol,除了UTF-8或UTF-16之外,XML声明仍然是可选的,但为了明确意图,在这种情况下,如果可能的话,你应该使用XML声明。)