Xml XSD派生属性的限制/枚举

Xml XSD派生属性的限制/枚举,xml,dom,vba,xsd,xml-parsing,Xml,Dom,Vba,Xsd,Xml Parsing,我有一个XSD文件(XML文件的模式布局),它对某些字段有限制/枚举。例如,我的属性名为“汽车”,只允许某些值(“本田”、“福特”、“GMC”、“丰田”等) 是否有一种在VBA(或任何其他语言)中使用MSXML和/或DOM XML模型从XSD中导出属性/节点(“Car”)的限制(“本田”、“福特”、“GMC”、“丰田”等)的方法 理想的结束状态/my目标是在加载XSD/Map后编写一个函数,其中节点的xpath位置以字符串格式传递(例如“/Root/Car”),并返回一个字符串数组,其中包含该节

我有一个XSD文件(XML文件的模式布局),它对某些字段有限制/枚举。例如,我的属性名为“汽车”,只允许某些值(“本田”、“福特”、“GMC”、“丰田”等)

是否有一种在VBA(或任何其他语言)中使用MSXML和/或DOM XML模型从XSD中导出属性/节点(“Car”)的限制(“本田”、“福特”、“GMC”、“丰田”等)的方法

理想的结束状态/my目标是在加载XSD/Map后编写一个函数,其中节点的xpath位置以字符串格式传递(例如“/Root/Car”),并返回一个字符串数组,其中包含该节点允许的字段

任何见解或参考都将不胜感激


谢谢。

我不知道有什么“简单”的解决方案-我做了一些与您描述的类似的事情,但“手动”——即编写了大量代码

我能找到的唯一一个做这种事情的库是:,但我实际上没有尝试,因为它是基于Java的,而且我是一个.NET的人

如果您可以在.NET中开发一些东西,我的建议是使用
XmlSchema
类:

using (FileStream fs = new FileStream(xsdPath, FileMode.Open, FileAccess.Read)) {
   XmlSchema schema = XmlSchema.Read(fs, null);
}

还有一些相对容易使用的方法和类来访问模式中所需的所有内容-例如,有一个类
XmlSchemaSimpleTypeRestriction
对应于对简单类型(如字符串)的限制,它在
Facets
属性中包含允许值(或其他限制)列表.

我不知道有什么“简单”的解决方案-我做了一些与您所描述的类似的事情,但“手动”——即编写了大量代码

我能找到的唯一一个做这种事情的库是:,但我实际上没有尝试,因为它是基于Java的,而且我是一个.NET的人

如果您可以在.NET中开发一些东西,我的建议是使用
XmlSchema
类:

using (FileStream fs = new FileStream(xsdPath, FileMode.Open, FileAccess.Read)) {
   XmlSchema schema = XmlSchema.Read(fs, null);
}
此外,还有相对容易使用的方法和类来访问模式中所需的所有内容-例如,有一个类
XmlSchemaSimpleTypeRestriction
,对应于对简单类型(如字符串)的限制,它在
Facets
属性中包含允许值(或其他限制)列表