如何解决如何将targetNamespace添加到XSD?
我想在XML文件中使用命名空间。当前代码在使用xsi:noNamespaceSchemaLocation
的情况下没有命名空间也可以正常工作。
(工作代码) test-document.xml:
<?xml version="1.1" encoding="UTF-8"?>
<root-element
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="./test-schema.xsd">
<sizeElement>T1 T2 T1</sizeElement>
</root-element>
test-schema.xml:
<?xml version="1.1" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root-element">
<xs:complexType>
<xs:all>
<xs:element name="sizeElement" type="sizeList"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:simpleType name="size">
<xs:restriction base="xs:token">
<xs:enumeration value="T1"/>
<xs:enumeration value="T2"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="sizeList">
<xs:list itemType="size" />
</xs:simpleType>
</xs:schema>
但是当我尝试在 > 标记中添加 targettargetNamespace =“ ns” 作为属性时 它显示错误于:
<xs:list itemType="size" />
错误:
src-resolve:无法将名称'size'解析为一个(n)'type deFinition'组件。xsd(src-resolve)
我正在使用vs代码。
解决方法
验证名称空间中的XML涉及多个概念:
- How to link XML to XSD using schemaLocation or noNamespaceSchemaLocation?
- What does elementFormDefault do in XSD?
以下是适用于您的XML和XSD的上述概念:
XML
<?xml version="1.0" encoding="UTF-8"?>
<root-element
xmlns="http://example.com/ns"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://example.com/ns test-schema.xsd">
<sizeElement>T1 T2 T1</sizeElement>
</root-element>
XSD
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
xmlns="http://example.com/ns"
targetNamespace="http://example.com/ns">
<xs:element name="root-element">
<xs:complexType>
<xs:all>
<xs:element name="sizeElement" type="sizeList"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:simpleType name="size">
<xs:restriction base="xs:token">
<xs:enumeration value="T1"/>
<xs:enumeration value="T2"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="sizeList">
<xs:list itemType="size" />
</xs:simpleType>
</xs:schema>
上面的XML对上面的XSD有效。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。