XML文件的第一个字符必须是什么?

时间:2017-12-13 22:30:28

标签: xml linux bash shebang

具体来说,有没有办法为XML文件写一个shebang?

我正在使用一些包含启动信息的XML文件。 (Roslaunch文件,如果重要的话)。我想直接调用该文件并让bash启动它。但是,对于XML,从display: none;开始是语法错误。有没有办法用shebang写一个XML文件?

2 个答案:

答案 0 :(得分:5)

XML文件 中的第一个字符必须 <或空格。格式良好的XML文档可以从没有其他字符开始,包括#

根据Extensible Markup Language (XML) 1.0 (Fifth Edition)Well-Formed XML Documents XML EBNF:

[1]  document ::= prolog element Misc*
[22] prolog   ::= XMLDecl? Misc* (doctypedecl Misc*)?
[23] XMLDecl  ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
[27] Misc     ::= Comment | PI | S
[3]  S        ::= (#x20 | #x9 | #xD | #xA)+
[16] PI       ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'
[15] Comment  ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'
[28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? 
                     ('[' intSubset ']' S?)? '>'
[39] element  ::= EmptyElemTag | STag content ETag
[44] EmptyElemTag ::= '<' Name (S Attribute)* S? '/>'
[40] STag     ::= '<' Name (S Attribute)* S? '>'

document制作及其组成部分可以看出,XML文档必须以下列之一开头:

  • a <(通过XMLDeclCommentPIdoctypedeclelement
  • 一个空格字符(前提是没有XMLDecl)。

答案 1 :(得分:0)

使用 bash,shebang 不需要以 #! 开头。一个巧妙的技巧是使用脚本用于注释的任何内容并将其定义为无操作函数,然后在该函数后面加上分号,然后解释器名称。

这不适用于 XML 脚本,因为重定向不能是标识符。