模式验证器如何知道在哪里可以找到与xmlns中的名称空间关联的xsd?

模式验证器如何知道在哪里可以找到与xmlns中的名称空间关联的xsd?,xml,xsd,xml-namespaces,Xml,Xsd,Xml Namespaces,我正在调用一个外部(第三方)web服务,该服务返回包含以下名称空间的xml: ... xmlns:gml="http://www.opengis.net/gml" xmlns:wrs="http://www.opengis.net/cat/wrs/1.0" xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0" ... 我对以urn:oasis开头的最后一个名称空间感兴趣 如果没有指定位置,验证器如何知道如何验证文件 我知道第

我正在调用一个外部(第三方)web服务,该服务返回包含以下名称空间的xml:

...
  xmlns:gml="http://www.opengis.net/gml"
  xmlns:wrs="http://www.opengis.net/cat/wrs/1.0"
  xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
...
我对以urn:oasis开头的最后一个名称空间感兴趣

如果没有指定位置,验证器如何知道如何验证文件

我知道第一个也没有指定位置,因为它们只是一个名称空间

请你详细说明在下列方面所作的发言:

如果您的组织有办法管理和解决适当类别的URN,请使用URN


这些验证器在没有位置的情况下如何工作?

要为验证目的指定架构位置,您有不同的方法:

使用XML模式:

  • 您可以告诉您的解析器要使用哪个模式进行验证(我知道的所有实现都提出了这样的机制)。在此过程中,给定实例中的名称空间,将解析模式。无需在此处更改XML文件
  • 您可以在XML文件中添加有关模式位置的信息 对于第二种情况,必须使用以下命名空间:
    xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance“
    。在这个名称空间中,您有两个专用于验证的属性:
    schemaLocation
    noNamespaceSchemaLocation

  • 如果您没有任何名称空间,请使用第二个名称空间(这不是您的情况)
  • 如果您有名称空间,可以使用以下语法使用
    schemaLocation
    xsi:schemaLocation=“namespaceURI1 linkToTheSchema1 namespaceURI2 linkToTheSchema2…”
    。每个模式声明由两部分组成,用空格分隔:名称空间和指向文件的URI
  • 使用其他模式语言(Relax NG、schematron)

  • 您始终可以使用上面的第一点:用您想要使用的模式告诉您的实现

  • 在XML文件中:W3C发布了一个已经在某些XMLIDE中实现的注释,该注释允许添加一个名为XML模型的processiog指令,以访问shcemas。请参见此处:


  • 好的,所以我的问题不是如何指定模式位置,而是在没有模式位置的情况下如何进行验证(模式位置)。但我相信你可能在第一点回答了我的问题。验证器/解析器是否已经拥有他们所期望的文件的模式?是的,就是这样。要么验证器知道模式(并且可以根据需要加载模式),要么XML文件告诉在哪里可以找到模式。(我更喜欢第一种方法)