예제 #1
0
        private void WriteDataColumn(XmlSchema schema, CremaDataColumn dataColumn)
        {
            if (dataColumn.Validation != string.Empty)
            {
                var simpleType = new XmlSchemaSimpleType()
                {
                    Name = CremaSchema.GenerateColumnTypeName(dataColumn.ColumnName),
                };
                {
                    var simpleTypeRestriction = new XmlSchemaSimpleTypeRestriction()
                    {
                        BaseTypeName = GetSystemQualifiedName(dataColumn.DataType)
                    };
                    {
                        var facet = new XmlSchemaPatternFacet()
                        {
                            Value = dataColumn.Validation
                        };
                        simpleTypeRestriction.Facets.Add(facet);
                    }
                    simpleType.Content = simpleTypeRestriction;
                }

                schema.Items.Add(simpleType);
            }
        }
예제 #2
0
        private XmlQualifiedName GetXmlQualifiedName(XmlSchema schema, CremaDataColumn dataColumn)
        {
            if (dataColumn.CremaType != null)
            {
                var cremaType = dataColumn.CremaType;
                foreach (var item in schema.Includes)
                {
                    if (item is XmlSchemaImport == true)
                    {
                        var n = (item as XmlSchemaImport).Namespace;
                        if (cremaType.Namespace == n)
                        {
                            return(new XmlQualifiedName(cremaType.TypeName, cremaType.Namespace));
                        }
                    }
                }

                if (this.dataSet == null)
                {
                    using (var sr = new StringReader(cremaType.GetXmlSchema()))
                    {
                        var typeSchema     = XmlSchema.Read(sr, ValidationCallbackOne);
                        var schemaLocation = UriUtility.MakeRelative(dataColumn.Namespace, cremaType.Namespace) + CremaSchema.SchemaExtension;
                        schema.Includes.Add(new XmlSchemaImport()
                        {
                            Schema         = typeSchema,
                            SchemaLocation = schemaLocation,
                            Namespace      = cremaType.Namespace,
                        });
                    }

                    return(new XmlQualifiedName(cremaType.TypeName, cremaType.Namespace));
                }

                return(new XmlQualifiedName(cremaType.TypeName, schema.TargetNamespace));
            }
            else if (string.IsNullOrEmpty(dataColumn.Validation) == false)
            {
                return(new XmlQualifiedName(CremaSchema.GenerateColumnTypeName(dataColumn.ColumnName), schema.TargetNamespace));
            }
            else if (dataColumn.DataType == typeof(Guid))
            {
                return(new XmlQualifiedName(typeof(Guid).GetSchemaTypeName(), schema.TargetNamespace));
            }
            else
            {
                return(GetSystemQualifiedName(dataColumn.DataType));
            }
        }