0

有没有办法覆盖 XSD 中基本复杂类型值的值?为了更清楚,

我的基本复杂类型为

<?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,而不是额外的属性。如何实现这一目标?

4

1 回答 1

0

尝试使用限制步骤将“版本”属性的值从任何简单类型限制为“2.0”,然后使用扩展步骤添加“名字”元素。

请注意,通过将 'Version' 的值固定为 '2.0',您就不可能像将 2.0 类型基于 1.0 类型那样,将 3.0 类型基于您的 2.0 类型。你真的想把你的大拇指插进下一个排队的人的眼睛里吗?

于 2013-07-22T21:06:18.787 回答