在XSD中将XML元素设置为无命名空间?

在XSD中将XML元素设置为无命名空间?,xml,xsd,xml-validation,Xml,Xsd,Xml Validation,我试图根据XSD验证XML。在这个XML中有带名称空间和不带名称空间的标记 <my:person xmlns:my="http://my.namespace.com"> <my:name>John Doe</my:name> <my:year>1988</my:year> <namespaceLessElement>some value</namespaceLessElement> </my:p

我试图根据XSD验证XML。在这个XML中有带名称空间和不带名称空间的标记

<my:person xmlns:my="http://my.namespace.com">
  <my:name>John Doe</my:name>
  <my:year>1988</my:year>
  <namespaceLessElement>some value</namespaceLessElement>
</my:person>

我找不到有关如何关闭
namespaceLessElement
的命名空间的任何信息。有办法做到这一点吗?

XSD中定义的所有组件都位于其
targetNamespace
定义的命名空间中用于从不同于该名称空间的名称空间引入XSD:

主XSD

导入XSD

然后是您的XML,

<?xml version="1.0" encoding="UTF-8"?>
<my:person xmlns:my="http://my.namespace.com"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://my.namespace.com try.xsd">
  <my:name>John Doe</my:name>
  <my:year>1988</my:year>
  <namespaceLessElement>some value</namespaceLessElement>
</my:person>

无名氏
1988
一些价值
将根据请求进行验证。

另见

XSD中定义的所有组件都位于其
targetNamespace
定义的命名空间中用于从不同于该名称空间的名称空间引入XSD:

主XSD

导入XSD

然后是您的XML,

<?xml version="1.0" encoding="UTF-8"?>
<my:person xmlns:my="http://my.namespace.com"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://my.namespace.com try.xsd">
  <my:name>John Doe</my:name>
  <my:year>1988</my:year>
  <namespaceLessElement>some value</namespaceLessElement>
</my:person>

无名氏
1988
一些价值
将根据请求进行验证。

另见

如果只有根元素有名称空间,而没有子元素,XSD会是什么样子。John Doe 1988@Bharatarakh:将
namespacelesselection
的几个兄弟姐妹更改为也不在名称空间中不会改变答案对
xs:import
的使用;同级元素的定义将迁移到导入的XSD中,并且不在任何名称空间中,如
namespaceElement
中所示。如果只有根元素具有名称空间,而没有子元素,XSD将如何。John Doe 1988@Bharatarakh:将
namespacelesselection
的几个兄弟姐妹更改为也不在名称空间中不会改变答案对
xs:import
的使用;同级的定义将迁移到导入的XSD,并且不在任何名称空间中,如
namespaceElement
所示。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified">

  <xs:element name="namespaceLessElement" type="xs:string"/>

</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<my:person xmlns:my="http://my.namespace.com"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://my.namespace.com try.xsd">
  <my:name>John Doe</my:name>
  <my:year>1988</my:year>
  <namespaceLessElement>some value</namespaceLessElement>
</my:person>