XmlSchemaElement类属性意味着
问题描述:
也许我错过了一些东西,但任何人都可以向我解释的意义和XmlSchemaElement
类的以下特性的差异:XmlSchemaElement类属性意味着
- 什么是X
mlSchemaElement.ElementSchemaType
和XmlSchemaElement.ElementType
之间的区别是什么? -
QualifiedName, SchemaTypeName and RefName
有什么区别? -
QualifiedName, SchemaTypeName and RefName
如何相互关联?当SchemaTypeName.IsEmpty == true
,这是否意味着RefName.IsEmpty == false
? - 是否有可能所有
*Names
将是Empty
,这是什么意思,一个嵌入的ComplexType?
一般来说,我需要解析xsd并将结果映射到内部结构,所以我需要一些规则,它允许我生成不同类型的对象。假设if (SchemaTypeName.IsEmpty)
然后在ElementSchemaType
我有SimpleType
提供的所有限制。
答
- XmlSchemaElement.ElementType自2.0以来已过时,否则它们是相同的。
-
QualifiedName表示元素的实际限定名称,因为XML实例文档中的相应XML元素会拥有它。 SchemaTypeName表示赋予元素的类型的名称(可以是内置的XSD,如
int
或用户定义类型,如mine
)。的RefName表明粒子,而作为一个元件,实际上是在别处在模式到全局定义的元素的引用(见下文)<xsd:element name="Global" type="xsd:string"/> <xsd:group name="some"> <xsd:sequence> <xsd:element name="Local" type="xsd:int"/> <xsd:element ref="Global" minOccurs="0"/> </xsd:sequence> </xsd:group>
不幸的是,不一定是真实的;例如,如果没有与该元素相关联的类型(默认情况下意味着xsd:anyType)。
- 不,请参阅上文(anyType)。
此外,事情变得更加复杂。如果在XSD中没有引用的组下面有一个元素粒子,那么有趣的部分是该组下的元素粒子的PSVI属性不会被填充......我从来不打算弄清楚这是否是一个功能或一个bug ......我做的是建立一个使用所有这些属性的访问者,并试图处理它发现的一点信息......对我来说,这种方法也证明了.NET修补程序对年...