Xml 是否实际使用了xsi:schemaLocation?
我正在使用该工具根据其XSD模式检查一些XML文件。该工具似乎是按以下方式调用的:Xml 是否实际使用了xsi:schemaLocation?,xml,xsd,xmllint,Xml,Xsd,Xmllint,我正在使用该工具根据其XSD模式检查一些XML文件。该工具似乎是按以下方式调用的: xmllint --noout --schema foo.xsd bar.xml 。。。并且不包括从XML文件的xsi:schemaLocation属性检索XSD文件的选项。此外,其中一条是: 这些提示的存在[即xsi:schemaLocation]不要求处理者获取或使用引用的模式文档,并且处理者可以自由使用通过任何合适的方式获得的其他模式,或者根本不使用模式 那么,在实践中,xsi:schemaLocatio
xmllint --noout --schema foo.xsd bar.xml
。。。并且不包括从XML文件的xsi:schemaLocation属性检索XSD文件的选项。此外,其中一条是:
这些提示的存在[即xsi:schemaLocation]不要求处理者获取或使用引用的模式文档,并且处理者可以自由使用通过任何合适的方式获得的其他模式,或者根本不使用模式
那么,在实践中,xsi:schemaLocation属性相当于(软)文档,这公平吗?此外,由于允许传入的XML文档告诉应用程序如何验证它们可能不是一种好的做法,因此我看不到它的好处。XSD位置提示,schemaLocation和noNamespaceSchemaLocation,实际上很少在生产环境中使用(我从未见过) 我个人认为它是在开发阶段使用工具的一种方便方法。它被认为是一种可互操作的方式,用于指示应将哪些XSD用于验证、IntelliSense等 假设您构建了一组XML文件(示例),作为更好地说明(文档)另一组XSD文件的方法。据我所见,人们使用模式位置提示(相对URI),压缩整个集合(XSD、XML等),然后将归档发送给消费者。这样,无论人们使用什么开发工具,都有更多的机会实现“互操作”。例如,MSVisualStudio维护一个内部和专有的存储,其中保存与特定XML文件一起使用的模式;“元数据”不能像xsi模式位置提示那样移植到其他工具
我还看到了模式位置提示的一些真正的“高级”使用,这就是为什么至少在我们的工具中,我们会花费大量的周期来阅读这些提示,并动态调整intellisense和验证消息…当您验证传入文档时,因为您不信任它,然后,您当然希望说出要用于验证的模式,而不是信任传入文档来识别模式 尽管如此,xsi:schemaLocation被广泛使用,我认为大多数工具都支持它。我认为,在创作环境中,这是最有意义的,在这种环境中,作者根本不相信自己能够在没有模式验证的帮助下正确完成它 但是,如果您认为模式是解释文档中的标记并帮助人们理解它的东西,那么它也是有意义的。然后就像地图上的面板解释符号的含义:文档中使用的符号指南