关于根据继承类创建xsd的问题..新手,请多指教
<xs:element name="FlowGraph" type="FlowGraph" />
<xs:complexType name="FlowGraph">
<xs:complexContent mixed="false">
<xs:extension base="Graph">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="FlowType" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="FlowGraphName" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="Description" type="xs:string" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="Graph">
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="NumberOfVertices" type="xs:int" />
<xs:element minOccurs="1" maxOccurs="1" name="NumberOfArcs" type="xs:int" />
<xs:element minOccurs="0" maxOccurs="1" name="VertexList" type="ArrayOfVertex" />
</xs:sequence>
</xs:complexType>
可是根据此xsd创建xml文档的时候,却不提示基类的element!
问题点数:100、回复次数:7Top
1 楼WolfKisser(夏天的飞鸟)回复于 2005-08-02 16:39:22 得分 0
就是在<FlowGraph>下面添加<NumberOfVertices>这些基类节点的时候,提示出错.
我是先根据类型创建的xsd和直接根据FlowGraph对象序列化成xml文档,但是此xml文档却不符合xsd规范.这是怎么回事啊.郁闷.
请高手指教.谢谢!!Top
2 楼ssm1226(雨中人(虚心学习))回复于 2005-08-02 18:06:57 得分 0
没问题~~~~~
报什么错?Top
3 楼WolfKisser(夏天的飞鸟)回复于 2005-08-03 09:00:35 得分 0
就是在添加<FlowGraph>标记的时候没有列出其父类(也就是extension的base类)中的element.简单的问,如果使用了extension扩展的schema,要使用base中的element需要怎样写出xml文档才符合规范.谢谢Top
4 楼ssm1226(雨中人(虚心学习))回复于 2005-08-03 10:43:47 得分 0
<?xml version="1.0" encoding="UTF-8"?>
<FlowGraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="D:\Documents and Settings\Administrator\My Documents\test.xsd">
<NumberOfVertices>0</NumberOfVertices>
<NumberOfArcs>0</NumberOfArcs>
<FlowType/>
<FlowGraphName/>
<Description/>
</FlowGraph>
Top
5 楼WolfKisser(夏天的飞鸟)回复于 2005-08-03 10:55:26 得分 0
我复制你的代码,只是改变targetSchema属性,但是报错:活动架构不支持元素"NumberOfVertices";
那看个更简单的Schema:
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema id="AddressSchema" targetNamespace="http://tempuri.org/AddressSchema.xsd" elementFormDefault="qualified"
xmlns="http://tempuri.org/AddressSchema.xsd" xmlns:mstns="http://tempuri.org/AddressSchema.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="address">
<xs:sequence>
<xs:element name="street" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="USAddress">
<xs:complexContent>
<xs:extension base="address">
<xs:sequence>
<xs:element name="state" type="xs:string" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="Person">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="address" type="USAddress" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
<?xml version="1.0" encoding="utf-8" ?>
<Person xmlns="http://tempuri.org/AddressSchema.xsd">
<address>
<state></state>
<street></street>
</address>
</Person>
xml文档添加steet标记时报错:活动架构不支持元素"street".请问:怎样才能使用基类的属性啊.谢谢
Top
6 楼WolfKisser(夏天的飞鸟)回复于 2005-08-03 10:59:30 得分 0
我复制你的代码,只是改变targetSchema属性,但是报错:活动架构不支持元素"NumberOfVertices";
那看个更简单的Schema:
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema id="AddressSchema" targetNamespace="http://tempuri.org/AddressSchema.xsd" elementFormDefault="qualified"
xmlns="http://tempuri.org/AddressSchema.xsd" xmlns:mstns="http://tempuri.org/AddressSchema.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="address">
<xs:sequence>
<xs:element name="street" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="USAddress">
<xs:complexContent>
<xs:extension base="address">
<xs:sequence>
<xs:element name="state" type="xs:string" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="Person">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="address" type="USAddress" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
<?xml version="1.0" encoding="utf-8" ?>
<Person xmlns="http://tempuri.org/AddressSchema.xsd">
<address>
<state></state>
<street></street>
</address>
</Person>
xml文档添加steet标记时报错:活动架构不支持元素"street".请问:怎样才能使用基类的属性啊.谢谢Top
7 楼zmy0611(zmy)回复于 2005-11-10 17:20:03 得分 0
UPTop




