使用不同类型的相同元素是合法的方法吗?

时间:2014-09-21 09:17:48

标签: xml xsd schema

所以我一直在为一个大型XML文件制作一个包含其他模式文件的模式文件,并且在这个XML文件中有一个元素,它使用了很多次但是有不同的类型并且有自己的模式文件。互联网告诉我,你不能拥有不同类型的同名元素,所以我试着解决它,这就是我尝试过的。

喜欢这个。

<ele1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="C:\Users\Desktop\Configuration.xsd">
    <ele2>
        <Test Name="Timetable" important="no" xsi:type="TimetableType">
            <Class>className.something</Class>
        </Test>
        <Test Name="Database" important="yes" xsi:type="DatabaseType">
            <Class>className.something</Class>
            <Database>jk</Database>
            <PortNr>1<PortNr>
        </Test>
    </ele2>
</ele1>

这是模式文件,这是真正的问题所在

<xs:schema elementFormDefault="qualified"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
 xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:include schemaLocation="file:///C:\Users\Desktop\Timetable.xsd" />
<xs:include schemaLocation="file:///C:\Users\Desktop\Database.xsd" />

<xs:element name="ele1">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="ele2">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Test" xsi:type="TimetableType" />
                        <xs:element name="Test" xsi:type="DatabaseType" />
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

使用xsi:type制作模式文件是否合法?对于验证程序,我正在使用Liquid XML Studio 2014,它正在验证配置文件。

1 个答案:

答案 0 :(得分:1)

xsi:type属性从不在架构中使用,仅在实例文档中使用。

XSD规范中有一个约束,即具有相同名称的两个兄弟元素必须具有相同的类型。它被称为&#34;元素声明一致&#34;约束。不要试图解决它:你不能。