Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 为什么VisualStudio 2017会告诉我“…”;。。。元素在此上下文中不受支持;?_Visual Studio_Xsd - Fatal编程技术网

Visual studio 为什么VisualStudio 2017会告诉我“…”;。。。元素在此上下文中不受支持;?

Visual studio 为什么VisualStudio 2017会告诉我“…”;。。。元素在此上下文中不受支持;?,visual-studio,xsd,Visual Studio,Xsd,MCVE: 我不明白它为什么抱怨。你知道我到底做错了什么吗 请注意,我的目标是编写一个XML文件中只能有一个VersionSchema对象。您从编程语言的角度考虑这一点,您可以通过将字段作为容器中的元素添加到类或类型中 对于XML模式,这是不正确的。原因是在其最严格的定义中,XML是顺序相关的 您可以自己编写一个接受以下XML的模式 <?xml version="1.0" encoding="UTF-8"?> <xsd:schema targetNamespace

MCVE:


我不明白它为什么抱怨。你知道我到底做错了什么吗


请注意,我的目标是编写一个XML文件中只能有一个VersionSchema对象。

您从编程语言的角度考虑这一点,您可以通过将字段作为容器中的元素添加到类或类型中

对于XML模式,这是不正确的。原因是在其最严格的定义中,XML是顺序相关的

您可以自己编写一个接受以下XML的模式

<?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">

    <xsd:element name="VersionSchema" type="vs:VersionSchema"/>

    <xsd:complexType name="VersionSchema" minOccurs="1" maxOccurs="1">
    <!-- VS says: "minOccurs and maxOccurs not allowed ^^^^ -->

        <xsd:element name="Field" minOccurs="1" maxOccurs="unbounded">
          <!-- ^^^ VS says: The 'http://www.w3.org/2001/XMLSchema:element' is not supported in this context -->
        </xsd:element>

    </xsd:complexType>

</xsd:schema>
相关章节将包括和。它说

复杂类型定义架构组件的XML表示形式 是
元素信息项。[…]内容:

请注意,要将
放入复杂类型中,您必须使用
complexContent
或模型组元素,如
all
choice
sequence
。这与不能包含
complexContent
相同,但只能包含
扩展名
,扩展名只能包含

(annotation?, (simpleContent | complexContent | (openContent?, (group| all | choice | sequence)?, ((attribute | attributeGroup)*, anyAttribute?), assert*)))
[…]模型组有三种类型:

序列(元素信息项与中的粒子匹配) 顺序顺序);连接(元素信息项匹配) 粒子,以任何顺序排列);析取(元素信息) 项目匹配一个或多个粒子)。模型群,一种术语 […]指定顺序(序列)、析取(选择)或 {particles}的合取(all)解释。这反过来 确定元素信息项[子项]是否已验证 模型组必须:

(顺序)按顺序对应于指定的{粒子}; (选择)正好对应于指定的{粒子}中的一个;(全部) 对应于指定的{particles}。这些元素可以以任何形式出现 秩序

即使在“模型组”部分中有点令人困惑,模型组本身也只能承载以下内容

(annotation?, openContent?, ((group | all | choice | sequence)?, ((attribute | attributeGroup)*, anyAttribute?), assert*))
这可以归结为当您想使用
时,必须使用all、choice和sequence

  • 全部:(注释?,(元素|任何|组)*)
  • 选择:(注释?,(元素|组|选择|序列|任意)*)
  • 序列:(注释?,(元素|组|选择|序列|任意)*)

是的,我在中看到序列合成器。我放弃它是因为我想允许任意顺序的任意元素。从那以后,我发现了如何使用合成器来更接近我所追求的内容,但因为我在这方面投入了大量精力,所以我不能删除这个问题。继续讨论。谢谢你的帮助。你能告诉我这个要求的“可信和/或官方来源”吗?在周末的几个小时里,我对OxygenXML进行了一些逆向工程。有序和无序的区别是什么?服务器可以对有序元素进行流式处理,但必须在内存中缓冲无序元素,因为客户端可以按任何顺序发送它们。这个问题在没有解释的情况下获得了这么多的反对票,这让我很难过。为什么会有反对票?
<?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">

  <xsd:element name="VersionSchema" type="vs:VersionSchema"/>

  <xsd:complexType name="VersionSchema">
    <xsd:sequence minOccurs="1" maxOccurs="1">
      <xsd:element name="Field" minOccurs="1" maxOccurs="unbounded"></xsd:element>
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>
(annotation?, (simpleContent | complexContent | (openContent?, (group| all | choice | sequence)?, ((attribute | attributeGroup)*, anyAttribute?), assert*)))
(annotation?, openContent?, ((group | all | choice | sequence)?, ((attribute | attributeGroup)*, anyAttribute?), assert*))
(annotation?, (all | choice | sequence)?)