如何在xsd中删除以下警告。 mymain.xsd引用mysecond.xsd
我的main.xsd
<?xml version="1.0" encoding="UTF-8"?><xsd:schema elementFormDefault="qualified" targetNamespace="http://abc.com" version="2.0" xmlns:tyu="http://abc.com" xmlns:my="def.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="def.com" schemaLocation="mysecond.xsd"/>
<xsd:complexType name="myType">
<xsd:complexContent>
<xsd:restriction base="my:myType">
<xsd:sequence>
<xsd:element minOccurs="0" name="rty" type="tyu:myagainType"/>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="myagainType">
<xsd:complexContent>
<xsd:restriction base="my:myagainType">
<xsd:sequence>
<xsd:element minOccurs="1" name="uid">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
</xsd:schema>
mysecond.xsd
<?xml version="1.0" encoding="UTF-8"?><xsd:schema elementFormDefault="qualified" targetNamespace="def.com" version="2.0" xmlns:my="def.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="myagainType">
<xsd:sequence>
<xsd:element minOccurs="0" name="klo" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="myType">
<xsd:sequence>
<xsd:element minOccurs="0" name="rty" type="my:myagainType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
警告
Warning 1 Invalid particle derivation by restriction - 'Derived element 'http://abc.com:rty' is not a valid restriction of base element 'def.com:rty' according to Elt:Elt -- NameAndTypeOK.'. D:\files\mymain.xsd 3 4
答案 0 :(得分:1)
简短的回答,你不能。首先,rty
mySecond.xsd
在本地定义和限定,并且位于与rty
中的“等效”main.xsd
不同的名称空间中,后者也在本地定义,在不同的命名空间中限定。
如果您阅读第2部分的XML Schema规范,您将获得适用于有效限制的每个规则的解释。在您的情况下,您要么使用相同的命名元素(以“非限定”rty元素开头),要么使用替换组的成员。
你显然不想要相同的元素,因为它会给你相同的内容模型 - 你只有一个元素。人们使用限制的一个原因是减少内容模型(从列表中删除元素)和/或调整粒子的min / maxOccurs。
由于您在本地定义rty
,因此无法使用替换组执行操作;必须在全球范围内定义替代组的负责人。
为了满足您的需求,您必须完全重写XSD。更好地描述您正在尝试实现的内容以及您对XSD创作的任何限制(例如使用替换组,或重新定义,或使用XSD的上下文)可以帮助其他人为您提供更好的答案