2
有一组的,其可以是指彼此(与include/import/redefine tags
)N XSD文件。任务是本组N XSD的文件转换成M个XSD的文件的最低可能数目。转换意味着就地插入包含的文件在可能情况下,解析引用等库XML模式压扁
此功能成功地工作在一些用户界面的XML编辑器。
是否有任何免费或商业库(本地或.NET),让我执行XML架构扁平化?或者,也许有以扁平化算法一些参考?
有一组的,其可以是指彼此(与include/import/redefine tags
)N XSD文件。任务是本组N XSD的文件转换成M个XSD的文件的最低可能数目。转换意味着就地插入包含的文件在可能情况下,解析引用等库XML模式压扁
此功能成功地工作在一些用户界面的XML编辑器。
是否有任何免费或商业库(本地或.NET),让我执行XML架构扁平化?或者,也许有以扁平化算法一些参考?
我不认为你需要的库。使用标准的.NET架构类这是一个转换XSD与一群包括到一个单一的一个代码:
static private void ResolveExternal(
XmlSchema rootSchema,
XmlSchema curSchema,
List<string> processed
)
{
// Loop on all the includes
foreach (XmlSchemaExternal external in curSchema.Includes) {
// Avoid processing twice the same include file
if (!processed.Contains(external.SchemaLocation)) {
processed.Add(external.SchemaLocation);
XmlSchema cur = external.Schema;
// Recursive calls to handle includes inside the include
ResolveExternal(rootSchema, cur, processed);
// Move the items from the included schema to the root one
foreach (XmlSchemaObject item in cur.Items) {
rootSchema.Items.Add(item);
}
}
}
curSchema.Includes.Clear();
} // ResolveExternal
static public void ResolveExternal(XmlSchema schema)
{
List<string> processed = new List<string>();
ResolveExternal(schema, schema, processed);
} // ResolveExternal
你应该能够处理的进口和以类似的方式重新定义。