微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将targetNamespace添加到XSD?

如何解决如何将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涉及多个概念:

以下是适用于您的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 举报,一经查实,本站将立刻删除。