private ElementAccessor[] ImportAny(XmlSchemaAny any, bool makeElement, string targetNamespace)
{
SpecialMapping mapping = new SpecialMapping();
mapping.TypeDesc = Scope.GetTypeDesc(makeElement ? typeof(XmlElement) : typeof(XmlNode));
mapping.TypeName = mapping.TypeDesc.Name;
TypeFlags flags = TypeFlags.CanBeElementValue;
if (makeElement)
flags |= TypeFlags.CanBeTextValue;
// let the extensions to run
RunSchemaExtensions(mapping, XmlQualifiedName.Empty, null, any, flags);
if (GenerateOrder && any.Namespace != null)
{
NamespaceList list = new NamespaceList(any.Namespace, targetNamespace);
if (list.Type == NamespaceList.ListType.Set)
{
ICollection namespaces = list.Enumerate;
ElementAccessor[] accessors = new ElementAccessor[namespaces.Count == 0 ? 1 : namespaces.Count];
int count = 0;
foreach (string ns in list.Enumerate)
{
ElementAccessor accessor = new ElementAccessor();
accessor.Mapping = mapping;
accessor.Any = true;
accessor.Namespace = ns;
accessors[count++] = accessor;
}
if (count > 0)
{
return accessors;
}
}
}
ElementAccessor anyAccessor = new ElementAccessor();
anyAccessor.Mapping = mapping;
anyAccessor.Any = true;
return new ElementAccessor[] { anyAccessor };
}