【问题标题】:overridefeature in XSDXSD 中的覆盖功能
【发布时间】:2013-07-22 17:25:56
【问题描述】:

有没有办法覆盖 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,而不是额外的属性。如何做到这一点?

【问题讨论】:

    标签: c# .net xsd overriding


    【解决方案1】:

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

    (请注意,通过将 'Version' 的值固定为 '2.0',任何人都无法像将 2.0 类型基于1.0 的类型。你真的想把你的拇指伸进下一个排队的人的眼睛里吗?)

    【讨论】:

    • 所以你的意思是说我需要在两者之间引入一个简单的类型。 :(。我正在尝试任何可能的方式,我可以一起做到这一点..
    猜你喜欢
    • 2014-06-08
    • 2016-10-20
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多