具有命名空间且没有组合名称空间元素的XML的XSD

时间:2015-07-13 11:14:35

标签: xml xsd

我收到这种XML:

<?xml version="1.0" encoding="utf-8"?>
<root-element xmlns="SomeSpecificNameSpace">
    <some-elements />
    <some-other-elements/>
    <some-other-other-element/>
    <element-with-empty-namespace xmlns=""/>
</root-element>

我必须检查一下我element-with-empty-namespace,但我不在乎内容,所以我尝试了以下内容:

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema          targetNamespace="SomeSpecificNameSpace"
                    elementFormDefault="qualified"
                    xmlns="SomeSpecificNameSpace"
                    xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="MyRootElement">
        <xs:complexType>
            <xs:sequence>
            <!-- Others types here -->
            </xs:sequence>
        </xs:complexType>           
    </xs:element>
    <xs:element name="element-with-empty-namespace" minOccurs="0" maxOccurs="1" xmlns="">
        <xs:complexType>
            <xs:sequence>
                <xs:any minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
            <xs:anyAttribute/>
        </xs:complexType>
    </xs:element>
</xs:schema

但似乎它不接受我的元素,说它期待一个带有命名空间SomeSpecificNameSpace的元素。

我知道这个结构有点奇怪,但这个element-with-empty-namespace是一个&#34;值&#34;我们通过XML提供。

1 个答案:

答案 0 :(得分:1)

多个名称空间需要多个XSD。

支持您的XML输入结构

<?xml version="1.0" encoding="utf-8"?>
<root-element xmlns="SomeSpecificNameSpace"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="SomeSpecificNameSpace try.xsd">
  <some-elements />
  <some-other-elements/>
  <some-other-other-element/>
  <element-with-empty-namespace xmlns=""/>
</root-element>

将您的XSD分成两个文件,如下所示......

在管理SomeSpecificNameSpace命名空间的主XSD文件中,使用xs:import

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema targetNamespace="SomeSpecificNameSpace"
           elementFormDefault="qualified"
           attributeFormDefault="unqualified"
           xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:import schemaLocation="element-with-empty-namespace.xsd"/>

  <xs:element name="root-element">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="some-elements"/>
        <xs:element name="some-other-elements"/>
        <xs:element name="some-other-other-element"/>
        <xs:element ref="element-with-empty-namespace"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>

并导入第二个XSD,

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="element-with-empty-namespace">
    <xs:complexType>
      <xs:sequence>
        <xs:any minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:anyAttribute/>
    </xs:complexType>
  </xs:element>
</xs:schema>

element-with-empty-namespace元素放在无名称空间中。

相关问题