2012-03-08 120 views
1

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

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

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

任何洞察或参考非常感谢!

谢谢。

回答

1

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

我能找到的唯一的库就是这样的:http://xpath-on-schema.sourceforge.net/,但是我没有真正尝试它,因为它是基于Java的,而我是一个.NET人员。

如果你都OK开发.NET中的东西我的建议是使用XmlSchema类:

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

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