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,而不是一个额外的属性。如何做到这一点?

overridefeature in XSD

尝试使用限制步骤将"Version"属性的值从任何简单类型限制为"2.0",然后使用扩展步骤添加"FirstName"元素。

(注意,通过将"Version"的值固定为"2.0",任何人都不可能像将2.0类型建立在1.0类型上那样,将3.0类型建立在2.0类型上。你真的想用拇指戳下一个排队的人的眼睛吗?)