Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 是否实际使用了xsi:schemaLocation?_Xml_Xsd_Xmllint - Fatal编程技术网

Xml 是否实际使用了xsi:schemaLocation?

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

我正在使用该工具根据其XSD模式检查一些XML文件。该工具似乎是按以下方式调用的:

xmllint --noout --schema foo.xsd bar.xml
。。。并且不包括从XML文件的xsi:schemaLocation属性检索XSD文件的选项。此外,其中一条是:

这些提示的存在[即xsi:schemaLocation]不要求处理者获取或使用引用的模式文档,并且处理者可以自由使用通过任何合适的方式获得的其他模式,或者根本不使用模式


那么,在实践中,xsi:schemaLocation属性相当于(软)文档,这公平吗?此外,由于允许传入的XML文档告诉应用程序如何验证它们可能不是一种好的做法,因此我看不到它的好处。

XSD位置提示,schemaLocationnoNamespaceSchemaLocation,实际上很少在生产环境中使用(我从未见过)

我个人认为它是在开发阶段使用工具的一种方便方法。它被认为是一种可互操作的方式,用于指示应将哪些XSD用于验证、IntelliSense等

假设您构建了一组XML文件(示例),作为更好地说明(文档)另一组XSD文件的方法。据我所见,人们使用模式位置提示(相对URI),压缩整个集合(XSD、XML等),然后将归档发送给消费者。这样,无论人们使用什么开发工具,都有更多的机会实现“互操作”。例如,MSVisualStudio维护一个内部和专有的存储,其中保存与特定XML文件一起使用的模式;“元数据”不能像xsi模式位置提示那样移植到其他工具


我还看到了模式位置提示的一些真正的“高级”使用,这就是为什么至少在我们的工具中,我们会花费大量的周期来阅读这些提示,并动态调整intellisense和验证消息…

当您验证传入文档时,因为您不信任它,然后,您当然希望说出要用于验证的模式,而不是信任传入文档来识别模式

尽管如此,xsi:schemaLocation被广泛使用,我认为大多数工具都支持它。我认为,在创作环境中,这是最有意义的,在这种环境中,作者根本不相信自己能够在没有模式验证的帮助下正确完成它

但是,如果您认为模式是解释文档中的标记并帮助人们理解它的东西,那么它也是有意义的。然后就像地图上的面板解释符号的含义:文档中使用的符号指南