2016-07-11 74 views
1

我有以下XSLTXSLT文件中需要XML声明吗?

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"... 

它不与XML声明开始。

通过标准:

因为每个XML实体不伴随外编码信息,而不是在UTF-8或UTF-16编码必须以XML 编码声明,其中,所述第一字符必须是开始'<?xml', 任何符合要求的处理器都可以在输入两到四个八位位组后检测以下哪种情况。

...在section 2.8我们得到的生产prolog

[22] prolog  ::=  XMLDecl? Misc* (doctypedecl Misc*)? 
[23] XMLDecl ::=  '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>' 

因此,我们可以省略 XML声明,但我们不能与任何前缀它。

所以我可以省略它,转换做得很好,但这是一个很好的做法吗?例如,如果有西里尔文或中文符号,我会遇到不可预测的情况吗?

回答

3

从词汇的角度讲,XML声明对于所有XML文件(包括XSLT)是可选的。

从语义上讲,它是XML 1.1(及更高版本)和除UTF-8或UTF-16以外的编码所必需的。 (从技术上讲,对于除UTF-8或UTF-16以外的其他XML声明,如果是an encoding is determined by a higher-level protocol,仍然是可选的,但为了清晰起见,如果可能,在这种情况下应该尽可能使用XML声明。)