★★★★★ 请教一个XSD强类型的问题 【【100】】 ★★★★★
我要对XML文件进行验证,所以我写下了如下代码,根据数据库表结构来推断出了一个相对强类型的XML。 
 程序如下: 
                            DataSet   ds   =   ZTC.Engine.Testing.DataTableToXSDTest(); 
 	ds.WriteXml( "d:\\abc\\123.xml "); 
 	ds.WriteXmlSchema( "d:\\abc\\123.xsd "); 
 形成的XSD文件如下: 
 ............................... 
  <xs:element   name= "tgyszl ">  
 	 <xs:complexType>  
 	                <xs:sequence>  
 		 <xs:element   name= "Gys_id "   type= "xs:int "   minOccurs= "0 "   />  
 		 <xs:element   name= "cEnterpriseCode "   type= "xs:string "   minOccurs= "0 "   />  
 		 <xs:element   name= "ID "   type= "xs:int "   minOccurs= "0 "   />  
 		 <xs:element   name= "Gys_syrq "   type= "xs:dateTime "   minOccurs= "0 "   />  
 		 <xs:element   name= "Gys_mc "   type= "xs:string "   minOccurs= "0 "   />  
 		 <xs:element   name= "Gys_xkzhm "   type= "xs:string "   minOccurs= "0 "   />  
 		 <xs:element   name= "Gys_xkzxq "   type= "xs:dateTime "   minOccurs= "0 "   />  
 		 <xs:element   name= "Gys_yyzzhm "   type= "xs:string "   minOccurs= "0 "   />  
 		 <xs:element   name= "Gys_yyzzxq "   type= "xs:dateTime "   minOccurs= "0 "   />  
 		 <xs:element   name= "Gys_qylbjy "   type= "xs:string "   minOccurs= "0 "   />  
 			....... 
 						 </xs:sequence>  
 					 </xs:complexType>  
 				 </xs:element>  
 ..................................................   
 形成的XSD文件,只有类型,没有长度限制。 
 有没有办法用程序直接生成更强类型的XSD定义啊? 
 比如: 
  <xs:element   name= "au_id "> 						 <xs:simpleType> 							 <xs:restriction   base= "xs:string "> 						 <xs:minLength   value= "1 "   /> 						 <xs:maxLength   value= "5 "   /> 					 </xs:restriction>  
                             </xs:simpleType>  
  </xs:element>  
 否则手动在配置的话,我几百个字段,配到下个星期一了。
------解决方案--------------------ds.WriteXmlSchema( "d:\\abc\\123.xsd "); 
 ==>  
 ds.Tables[0].WriteXmlSchema( "d:\\abc\\123.xsd ",true);   
 如果不行的话,建议访问数据库系统表,得到各列的限制条件,再XPATH查找节点,添加子节点或加在属性里。DataSet没有参数来设定保存你要求的强类型
------解决方案--------------------关注,帮顶.........
------解决方案--------------------讨论一下啊:使用xsd方便么?表面是方便了,但是做一些别的文章,例如楼主控制字节长度有出现问题了! 
 使用xsd是不是破坏了三层架构?我们知道使用xsd把添加修改删除还是实体都放在一起了
------解决方案--------------------接个分 晚上看
------解决方案--------------------你还是自己写代码把表结构生成xml文件算了,相关代码   
 检索表结构的SQL语句    
 string TableName= "Table1 "; 
 string Sql =  "select A.Column_ID,case A.is_identity when 1 then  case C.Name when  'bigint ' then  'IdentityLong ' else  'Identity ' end else C.Name end as ColumnType, " 
        +  " isnull((select top 1 [value] from sys.extended_properties where A.object_ID=Major_ID and A.Column_ID=Minor_ID), ' ') as Memo, "