You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Visual Studio 2017提示xsd:complexType的min/maxOccurs不受支持?

问题原因:<xsd:complexType>不支持minOccurs/maxOccurs属性

嘿,这个问题我之前也踩过坑!核心原因很简单:minOccurs和maxOccurs这两个属性,从XSD语法规则上来说,根本就不属于<xsd:complexType>元素的合法属性。

这俩属性的作用是用来控制XML实例文档中元素的出现次数,只能用在这些场景:

  • 全局的<xsd:element>标签上(比如你定义的根元素)
  • 嵌套在<xsd:sequence>/<xsd:choice>/<xsd:all>里的局部<xsd:element>标签上
  • <xsd:group>的引用标签上

回到你的代码,你错误地把这两个属性加在了<xsd:complexType>上——复杂类型只是用来定义元素的结构规则,它本身不需要控制出现次数,出现次数是由引用这个类型的元素来决定的。

修正后的示例代码

把minOccurs和maxOccurs移到引用该复杂类型的元素上就可以了,比如你的代码可以改成这样:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://versionschema.org/xmlns/" 
            xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns:vs="http://versionschema.org/xmlns/" 
            elementFormDefault="unqualified" 
            attributeFormDefault="unqualified">
  <!-- 根元素上可以指定出现次数(其实默认就是minOccurs=1、maxOccurs=1,可显式写也可省略) -->
  <xsd:element name="VersionSchema" type="vs:VersionSchema" minOccurs="1" maxOccurs="1"/>
  
  <!-- 复杂类型定义移除多余的min/maxOccurs属性 -->
  <xsd:complexType name="VersionSchema">
    <!-- 这里添加你的复杂类型结构,比如嵌套元素 -->
    <xsd:sequence>
      <!-- 局部元素可以用min/maxOccurs控制出现次数 -->
      <xsd:element name="BuildNumber" type="xsd:string" minOccurs="1" maxOccurs="1"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>

简单再梳理下逻辑:复杂类型负责“定义元素长什么样”,而minOccurs/maxOccurs负责“定义这个元素在XML里能出现几次”,这俩职责是分开的,不能混在一起用哦。

内容的提问来源于stack exchange,提问作者jwdonahue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:46:51