XSD: Namespace not working http://schemas.microsoft.com/2003/10/Serialization/Arrays
根据文档定位模式的规范,通过命名空间可能会有一个可以检索到的模式。用户社区和/或消费者/提供者协议可以建立“尝试从命名空间URL检索xsd”作为合理的默认策略的情况。如果文档的作者(无论是人还是其他实体)创建了一个具有特定模式的文档,并保证该文档的某些或全部符合该模式,则提供schemaLocation和noNamespaceSchemaLocation属性。因此,基本上只指定命名空间,您的XML可能会尝试根据该位置的xsd进行验证(即使缺少schemaLocation属性),这取决于您的“社区”。如果指定了特定的schemaLocation,则基本上意味着XML文档“应”符合该xsd,因此“请对其进行验证”(根据我的理解)。我猜测,如果您不使用schemaLocation或noNamespaceSchemaLocation属性,大部分时间它只是“不被验证”(根据其他答案,似乎Java就是这样做的)。
另一个问题是,通常在Java库中使用xsd验证时(例如,Spring配置xml文件),如果您的XML文件在一个XML文件中指定了特定的schemaLocation xsd URL,比如xsi:schemaLocation="http://somewhere http://somewhere/something.xsd",通常在您的依赖jar包中它将包含该xsd文件的副本,在资源部分,Spring具有一个“映射”功能,将该xsd文件视为映射到URL http://somewhere/something.xsd(因此您永远不会去网上下载该文件,它只存在于本地)。有关稍微更多信息,请参见https://stackoverflow.com/a/41225329/32453。