XSD派生限制/属性枚举

时间:2012-03-08 14:45:22

标签: xml dom vba xsd xml-parsing

我有一个XSD文件(XML文件的架构布局),它对某些字段有限制/枚举。例如。我的属性名为" Car"并且只允许某些值("本田","福特"," GMC","丰田"等)。

是否有一种方法在VBA(或任何其他语言)中使用MSXML和/或DOM XML模型来获得限制(" Honda"," Ford",&#34 ; GMC","丰田"等)来自XSD的属性/节点(" Car")?

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

非常感谢任何见解或参考!

感谢。

1 个答案:

答案 0 :(得分:1)

我不知道任何“简单”的解决方案 - 我做了类似于你所描述的但是“手动” - 即写了很多代码。

我能找到的唯一一个类似于这样的库:http://xpath-on-schema.sourceforge.net/,但我实际上没有尝试过,因为它是基于Java的,我是一个.NET人员。

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

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

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