2012-03-08 117 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屬性中包含允許值(或其他限制)的列表。