我编写了一个简单的工具,使用用户输入的查询生成DBUnit XML数据集.我想将在XML中输入的每个查询作为注释包含在内,但是用于生成XML文件的DBUnit API不支持在我想要的地方插入注释(在它生成的数据之上),所以我求助于在顶部或底部对所有查询进行评论.
所以我的问题是:将它放在任何一个位置都是有效的XML吗?例如,在XML声明之上:
...
或根节点下方:
...
我计划最初尝试使用XML声明,但我怀疑这是否是有效的XML,尽管维基百科声称:
注释可以放在树中的任何位置,包括在文本中,如果元素的内容是文本或#PCDATA.
我打算发布回来,如果这有效,但很高兴知道它是否是官方的XML标准.
更新:请参阅下面的测试结果.
根据XML规范,格式良好的XML文档是:
document ::= prolog element Misc*
这里prolog
是
prolog ::= XMLDecl? Misc* (doctypedecl Misc*)?
和
Misc
这意味着,如果您希望在顶部有注释,则不能使用XML类型声明.
该规范与维基百科的评论一致:
2.5评论
[定义:注释可能出现在其他标记之外的文档中; 此外,它们可能出现在语法允许的位置的文档类型声明中.它们不是文档字符数据的一部分; XML处理器可以但不一定使应用程序可以检索注释文本.为了兼容性,字符串" - "(双连字符)绝不能出现在注释中.]参数实体引用不得在注释中被识别.
所有这些一起意味着您可以将注释放在不在其他标记内的任何位置,除非您带有注释,否则您不能拥有XML声明.
然而,虽然在理论上理论同意实践,但在实践中却没有,所以我很想知道你的实验是如何运作的.