1

在 XML 序言中的某处添加额外的自定义信息是否合法?例如,在我的例子中,我想添加一个用于创建 XML 的序列化器版本的指示符,以便接收 XML 的客户端可以自动选择正确的相应反序列化器。

我可以将信息添加为根标记的属性,但我认为在序言中添加信息会更简洁,如标准 XML 版本:

<?xml version="1.0"?>

就像是:

<?serialiser version="1.0"?>

还是纯粹为 W3C 指定的那些东西保留序言?

4

2 回答 2

3

您可以添加处理指令,例如

<?serialiser version="1.0"?>

在 XML 声明之后,在 DOCTYPE 声明之前或之后,或者在文档的末尾。事实上,处理指令几乎可以出现在任何地方。

于 2012-10-15T21:34:34.903 回答
2

规格

prolog     ::=       XMLDecl? Misc* (doctypedecl Misc*)?
XMLDecl    ::=      '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
Misc       ::=       Comment | PI | S
PI         ::=      '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'
PITarget   ::=       Name - (('X' | 'x') ('M' | 'm') ('L' | 'l'))  

因此,XMLDecl(可选)部分无法更改,但 的Misc部分 prolog,特别是PI(处理指令)可以是您想要的任何内容,包括<?serialiser version="1.0"?>.

于 2012-10-15T15:59:59.123 回答