private void WriteTableTypeParticles (DataColumn col)
{
w.WriteStartElement ("xs", "element", xmlnsxs);
w.WriteAttributeString ("name", XmlHelper.Encode (col.ColumnName));
if (col.ColumnName != col.Caption && col.Caption != String.Empty)
w.WriteAttributeString (
XmlConstants.MsdataPrefix,
XmlConstants.Caption,
XmlConstants.MsdataNamespace,
col.Caption);
if (col.AutoIncrement == true)
w.WriteAttributeString (
XmlConstants.MsdataPrefix,
XmlConstants.AutoIncrement,
XmlConstants.MsdataNamespace,
"true");
if (col.AutoIncrementSeed != 0) {
w.WriteAttributeString (
XmlConstants.MsdataPrefix,
XmlConstants.AutoIncrementSeed,
XmlConstants.MsdataNamespace,
XmlConvert.ToString (col.AutoIncrementSeed));
}
if (col.AutoIncrementStep != 1) {
w.WriteAttributeString (
XmlConstants.MsdataPrefix,
XmlConstants.AutoIncrementStep,
XmlConstants.MsdataNamespace,
XmlConvert.ToString (col.AutoIncrementStep));
}
if (!DataColumn.GetDefaultValueForType (col.DataType).Equals (col.DefaultValue))
w.WriteAttributeString ("default",
DataSet.WriteObjectXml (col.DefaultValue));
if (col.ReadOnly)
w.WriteAttributeString (
XmlConstants.MsdataPrefix,
XmlConstants.ReadOnly,
XmlConstants.MsdataNamespace,
"true");
XmlQualifiedName typeQName = null;
if (col.MaxLength < 0) {
w.WriteStartAttribute ("type", String.Empty);
typeQName = MapType (col.DataType);
WriteQName (typeQName);
w.WriteEndAttribute ();
}
if (typeQName == XmlConstants.QnString
&& col.DataType != typeof (string)
&& col.DataType != typeof (char)) {
w.WriteStartAttribute (
XmlConstants.MsdataPrefix,
XmlConstants.DataType,
XmlConstants.MsdataNamespace);
string runtimeName = col.DataType.AssemblyQualifiedName;
w.WriteString (runtimeName);
w.WriteEndAttribute ();
}
if (col.AllowDBNull)
w.WriteAttributeString ("minOccurs", "0");
//writer.WriteAttributeString (XmlConstants.MsdataPrefix,
// XmlConstants.Ordinal,
// XmlConstants.MsdataNamespace,
// col.Ordinal.ToString ());
AddExtendedPropertyAttributes (col.ExtendedProperties);
// Write SimpleType if column have MaxLength
if (col.MaxLength > -1)
WriteSimpleType (col);
w.WriteEndElement (); // sequence
}