在最近的一项工作中,我一直在构建与.NET应用程序的XML交互的PHP端(使用SimpleXMLElement).我一直在与.NET领域的同行一起遇到概念思维的差异,特别是因为他们只是在.NET中使用XSD/XML库而没有考虑太多,而我发现自己不得不向后弯腰因为XSD的局限性.换句话说,我无法理解为什么如果我以"错误"的顺序给出元素或者有一些它不知道的元素,他们的XML摄取器会失败,他们不明白为什么我关心.(相反,我对他们的开发实践的看法被降低了,因为他们不想关心.)
盲目接受XSD一代是真正的罪魁祸首吗?为什么人们接受它如此挑剔?
XSD不要求元素按特定顺序排列,它只允许您坚持元素按特定顺序排列.
强迫元素按特定顺序排序的一件事是,如果您实际上手动编辑XML,智能感知将自动假设您希望按特定顺序使用下一个标记.如果只是用xs:all代替xs:sequence,智能感知将列出所有可能的下一个元素,你将不得不选择哪一个(或获得选择,取决于你的观点:)).
我还要补充一点,使用固定的顺序使XML文件更易于使用.确实,无论您是否订购坐标x,y,z或z,y,x,它对文件中的软件读取都没有任何影响,但如果订单遵循常规约定,那么读取这些坐标的人将更容易.如果所有内容都处于相同的顺序,那么人类比较两个XML文件以查看它们的不同之处也更容易.
只是为了解决问题,使用固定订单有什么不利之处?:)