我正在我公司创建一个新的数据交换服务.我们想扩展在我们的core.xsd定义文件中定义的现有对象.这是我需要做的一个例子:
<xs:complexType name="parentType"> <xs:sequence> <xs:element name="departmentName" type="core:DEPARTMENT_NAME" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:complexType> <xs:complexType name="childType"> <xs:complexContent> <xs:extension base="parentType"> <xs:sequence> <xs:element name="departmentName" type="core:DEPARTMENT_NAME" minOccurs="1" maxOccurs="1"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>
我认为这是完美的.我想覆盖父元素并使其成为必需.但是,一个有效的xml文件就是这样.现在有一个额外的部门名称!
<childType> <departmentName>HR</departmentName> <departmentName>IT</departmentName> </childType>
我如何做到这一点,使XML文件变成:
<childType> <departmentName>IT</departmentName> </childType>
谢谢,
克雷格
您需要使用限制而不是扩展名.这将是您指定的方案的完整有效模式(我已经自由地使用命名空间使其有效).
原文链接:https://www.f2er.com/xml/292269.html<?xml version="1.0" encoding="utf-8" ?> <!-- XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com) --> <xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd" xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:core="http://tempuri.org/XMLSchema.xsd" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:complexType name="parentType"> <xs:sequence> <xs:element name="departmentName" type="core:DEPARTMENT_NAME" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:complexType name="childType"> <xs:complexContent> <xs:restriction base="parentType"> <xs:sequence> <xs:element name="departmentName" type="core:DEPARTMENT_NAME"/> </xs:sequence> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:simpleType name="DEPARTMENT_NAME"> <xs:restriction base="xs:string"/> </xs:simpleType> <xs:element name="childType" type="childType"/> </xs:schema>