本文整理汇总了C#中System.Xml.Schema.XmlSchemaSet.MaindocSchemas方法的典型用法代码示例。如果您正苦于以下问题:C# XmlSchemaSet.MaindocSchemas方法的具体用法?C# XmlSchemaSet.MaindocSchemas怎么用?C# XmlSchemaSet.MaindocSchemas使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Xml.Schema.XmlSchemaSet
的用法示例。
在下文中一共展示了XmlSchemaSet.MaindocSchemas方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: UblNamespaceManager
static string[] unwantedPrefixes = new string[] { "", "xsd", "abs", "cct" }; //,"ccts-cct" ,"ds", "xades" };
/// <summary>
/// </summary>
public UblNamespaceManager(XmlSchemaSet schemaSet, string csDefaultNamespace, bool optimizeCommonBasicComponents)
{
this.schemaSet = schemaSet;
this.csDefaultNamespace = csDefaultNamespace;
this.OptionOptimizeCommonBasicComponents = optimizeCommonBasicComponents;
// Build a xml namespace(key) to csharp codenamespace/scope(value) dictionary by looking at all schema root xmlns attributes
// Will bomb out on Distinct() if schemas use different namespace prefixes for the same namespace (empty ones are removed)
xml2CSharpNamespaceDictionary = schemaSet.Schemas().Cast<XmlSchema>()
.SelectMany(schema => schema.Namespaces.ToArray().Where(qname => !unwantedPrefixes.Contains(qname.Name)))
.Select(qname => new { qname.Namespace, qname.Name })
.Distinct()
.ToDictionary(key => key.Namespace, val => $"{csDefaultNamespace}.{ CodeIdentifier.MakePascal(val.Name)}");
// missing references in 2.1. Is it unused?
xml2CSharpNamespaceDictionary.Add(Constants.CommonSignatureComponentsTargetNamespace, $"{csDefaultNamespace}.Csc");
xml2CSharpNamespaceDictionary[Constants.Xadesv132TargetNamespace] = $"{csDefaultNamespace}.Xades";
xml2CSharpNamespaceDictionary[Constants.Xadesv141TargetNamespace] = $"{csDefaultNamespace}.Xades";// 141"; // Probably incorrect
// add key:xmlns value:cSharpScope for all maindocs. They all point to the same scope value string
foreach (XmlSchema schema in schemaSet.MaindocSchemas().Cast<XmlSchema>())
{
string targetNamespace = schema.TargetNamespace;
if (!xml2CSharpNamespaceDictionary.ContainsKey(targetNamespace))
{
xml2CSharpNamespaceDictionary.Add(targetNamespace, csDefaultNamespace);
}
}
// using directives in csharp files may vary depending on optimising of types
if (this.OptionOptimizeCommonBasicComponents)
{
codeNamespaceUsings = codeNamespaceUsingsOptimized;
}
else
{
codeNamespaceUsings = codeNamespaceUsingsNonOptimized;
}
// prepend dictionary keys with default C# code namespace separated by a dot.
codeNamespaceUsings = codeNamespaceUsings.ToDictionary(k => csDefaultNamespace + (k.Key == "" ? "" : ".") + k.Key, v => v.Value);
}
示例2: Main
static void Main(string[] args)
{
UblXsdSettings ublSettings = new UblXsdSettings
{
XsdValidationEvent = SchemaValidationEventHandler,
UblXsdInputPath = @"..\..\..\UBL-2.1\xsd", // Content originally from ubl zip download.
CodeGenOutputPath = @"..\..\..\UblLarsen.Ubl2",
OptionOptimizeCommonBasicComponents = true, // remove yagni types from schema before code generation. tests wont work when this is set to false
CSharpDefaultNamespace = "UblLarsen.Ubl2",
OptionMemberTypeToGenerate = UblXsdSettings.FieldTypesEnum.AutoProperty // or Field, or Property
};
XmlSchemaSet schemaSet = new XmlSchemaSet(new NameTable());
schemaSet.ValidationEventHandler += SchemaValidationEventHandler;
// Read and add the xsd documents in xsd/maindoc folder
schemaSet.AddMaindocSchemas(ublSettings);
schemaSet.Compile();
if (ublSettings.OptionOptimizeCommonBasicComponents)
{
var cbcSchema = schemaSet.Schemas(Constants.CommonBasicComponentsTargetNamespace).Cast<XmlSchema>().Single();
UblSchemaTypeSimplificationTool.SimplifyCommonBasicComponentsTypes(cbcSchema);
schemaSet.Reprocess(cbcSchema);
schemaSet.Compile();
}
UblSchemaTypeSimplificationTool.ResolveTypeNameClashesByRenaming(schemaSet);
schemaSet.Compile();
var abstractMaindocBaseSchema = UblSchemaInheritanceTools.ModifyMaindocSchemasForInheritance(schemaSet.MaindocSchemas());
abstractMaindocBaseSchema = schemaSet.Add(abstractMaindocBaseSchema);
schemaSet.MaindocSchemas().Where(s => s != abstractMaindocBaseSchema).ToList().ForEach(s => schemaSet.Reprocess(s));
schemaSet.Compile();
UblCodeGenerator gen = new UblCodeGenerator(ublSettings);
// namespacelist parameter will drag in all other dependent types. New extensions shold probably be appended here... or...
var allCodeDecls = gen.CreateCodeTypeDeclarations(schemaSet,
new[] {
Constants.BaseDocumentTargetNamespace,
Constants.SignatureAggregateComponents,
Constants.CommonSignatureComponentsTargetNamespace,
Constants.Xadesv141TargetNamespace}
);
UblDocumentationTool.AddDocumentation(allCodeDecls);
UblImplicitAssignmentTool.AddImplicitAssignmentOperatorsForXmlTextAttributedDecendants(allCodeDecls);
XsdTimeTool.IgnoreDateTimeSerializeAsString(allCodeDecls.Where(c => c.Name == "TimeType").Single());
var mainDocCodeDecls = allCodeDecls.Where(c => c.BaseTypes.Count == 1 && c.BaseTypes[0].BaseType == Constants.abstractBaseSchemaComplexTypeName);
MainDocsAttributeTool.RenameTopLevelXmlType(mainDocCodeDecls);
MainDocsAttributeTool.AddXmlRootAttributes(mainDocCodeDecls);
gen.GenerateAndSaveCodeFilesBySchema(allCodeDecls, new UblNamespaceManager(schemaSet, ublSettings.CSharpDefaultNamespace, ublSettings.OptionOptimizeCommonBasicComponents));
UblSchemaStatsTool.ShowStats(allCodeDecls);
Console.WriteLine("DONE");
Console.ReadLine();
}