Xml XSD架构命名空间问题

Xml XSD架构命名空间问题,xml,xsd,xsd-validation,Xml,Xsd,Xsd Validation,如何使用XSD“期望”元素具有名称空间?此时,我收到一条错误消息:“发现以元素'ns:person'开头的内容无效。应为'{'':person}'之一。” 如您所见,我在xs:element:“person”上定义了name属性。如果我将“ns:person”定义为名称,那么我会得到一个错误,即名称无效aaarghh 我错过了什么? 这是XSD(ns.XSD): 这是XML(peoples.XML): 约翰 您需要包含完整的XSD来帮助您。但是,从我看到的错误以及您在XML实例文档中包含“

如何使用XSD“期望”元素具有名称空间?此时,我收到一条错误消息:“发现以元素'ns:person'开头的内容无效。应为'{'':person}'之一。”

如您所见,我在
xs:element
:“person”上定义了
name
属性。如果我将“ns:person”定义为
名称
,那么我会得到一个错误,即名称无效aaarghh

我错过了什么?

这是XSD(ns.XSD):


这是XML(peoples.XML):


约翰

您需要包含完整的XSD来帮助您。但是,从我看到的错误以及您在XML实例文档中包含“xsi:noNamespaceSchemaLocation”的事实来看,我看到的问题是您使用未指定targetNamespace定义了模式,但您使用名称空间前缀限定了person元素。只要删除实例文档中所有位置的“ns:”,您就一切正常。

这里有许多错误,我认为您最好浏览一些教程示例,例如或。{错误包括实例中没有命名空间声明,需要两个命名空间;架构中没有命名空间声明,没有元素“name”在模式中)很抱歉,为了可读性,我遗漏了这些内容…当然这些内容存在于我的文件中。运行验证器时,会出现所述错误。@Ropstah:也许您可以编辑问题并将缺少的项目添加回,因为它们的遗漏实际上会妨碍可读性。我理解,但我无法发布XSD。这也会分散我的注意力我想,从这个问题来看。在这种情况下,盘古很接近我的问题!@Ropstah:我对你的问题投了反对票,因为你拒绝发布一个复制你的问题的示例。我不在乎它是否是原始的XSD和XML,只要它复制了相同的问题。我认为你是对的。但问题是,我无法删除它们ns:实例(也不编辑XSD中的任何其他内容)。是否有办法允许使用“通配符”元素或正则表达式限定的元素?恐怕只有在将XML预处理删除“ns:”后再将其交给XML解析器的选项。但您确定只会得到具有“ns”的XML吗作为前缀?任何东西都可以用作前缀名称,在这种情况下,您还需要事先知道使用了什么前缀。我知道使用了前缀“ns”。XML文件中还有一个xmlns:ns=“url”声明。是否有任何方法指定对应XSD(用于url)的位置在ns.xsd文件中?我看到的唯一解决方法是我前面提到的预处理。但是,我很好奇,如果已经存在xsd,为什么要以这种方式创建XML?
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="peoples">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="person"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>
</xs:schema>
<?xml version="1.0" encoding="ISO-8859-1"?>
<peoples xmlns:ns="url" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ns.xsd">
<ns:person>
        <name>John</name>
</ns:person>
</peoples>