overridefeature in XSD
本文关键字:XSD in overridefeature | 更新日期: 2023-09-27 18:24:33
有没有一种方法可以覆盖XSD中基本complextypes值的值?。更清楚地说,
我的基本复杂类型是
<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="Urn:commonBase"
elementFormDefault="qualified"
xmlns="Urn:commonBase"
xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="RequestBase">
<xs:attribute name="Version" default="1.0"/>
</xs:complexType>
</xs:schema>
在另一个XSD和不同的命名空间中,我有
<xs:complexType name="Request">
<xs:complexContent>
<xs:extension base="base:RequestBase">
<xs:sequence>
<xs:element name ="FirstName"/>
</xs:sequence>
<xs:attribute name="Version" fixed="2.0"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
但是,当我使用XSD.exe为上面的生成C#类文件时,会生成一个名为"Version*1*"的重复属性。实际上,我希望在类文件中有一个重写工具,将"RequestBase"的现有属性从1.0设置为2.0,而不是一个额外的属性。如何做到这一点?
尝试使用限制步骤将"Version"属性的值从任何简单类型限制为"2.0",然后使用扩展步骤添加"FirstName"元素。
(注意,通过将"Version"的值固定为"2.0",任何人都不可能像将2.0类型建立在1.0类型上那样,将3.0类型建立在2.0类型上。你真的想用拇指戳下一个排队的人的眼睛吗?)