gpt4 book ai didi

c# - 引用的 XmlSchemaElement 中的 IsAbstract 值不正确

转载 作者:太空宇宙 更新时间:2023-11-03 12:49:54 27 4
gpt4 key购买 nike

我正在使用包含抽象元素定义的 XML 模式,例如

<element name="AbstractX" type="some:Type" abstract="true"/>

XmlSchemaSet 中加载此架构时,我可以在其 GlobalElements 中找到此元素,并看到它的 IsAbstract 属性设置为。到目前为止一切顺利。

但是,这个元素也是在这样的类型中引用的

<complexType name="ReferencingX">
<complexContent>
<extension base="some:otherBaseType">
<sequence>
<element ref="some:AbstractX"/>
</sequence>
</extension>
</complexContent>
</complexType>

在解析的 XmlSchemaSet 中,当我通过复杂类型定义导航到元素时,它的 IsAbstract 设置为 false

这有什么原因吗,还是 System.Xml.Schema 中的错误?

(为了简洁起见,我简化了 XSD,所讨论的模式是 AIXM )

最佳答案

不,这不是错误。

您在代码中看到的是对(抽象)元素的引用;引用不能标记为抽象(第 3.3.2 XML Schema Part 1 节,抽象仅在模式是元素的父级时适用)。

您只需要:

  • 检查是否 el.RefName.IsEmpty;在您的情况下,它不是(因为您使用了 ref 属性)。
  • 导航到 GlobalElements[el.RefName] 中的适当定义,将值转换为 XmlSchemaElement,然后检查其 IsAbstract 属性(在您的情况下为真)。

这应该可以解决您的问题。

关于c# - 引用的 XmlSchemaElement 中的 IsAbstract 值不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35943039/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com