在XSD中将XML元素设置为无命名空间?
我试图根据XSD验证XML。在这个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
<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
一些价值
将根据请求进行验证。
另见
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
一些价值
将根据请求进行验证。
另见
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>