一个关于Schema的问题,请求帮助
(借用首页存放到下午1:30分,然后移动到提问区,谢谢!)
现在需要定义这样一个节点:
<
Nodes
>
< Node > this is a node </ Node >
< Node >
< Text > this is another node </ Text >
< Node > 嵌套其他子节点. </ Node >
</ Node >
</ Nodes >
< Node > this is a node </ Node >
< Node >
< Text > this is another node </ Text >
< Node > 嵌套其他子节点. </ Node >
</ Node >
</ Nodes >
现在的关键问题是,这样的节点如何用Schema定义?我现在的解决方案是这样:
<
xs:complexType
name
="Node"
>
< xs:sequence >
< xs:choice >
< xs:element name ="SimpleNode" type ="SimpleNode" />
< xs:element name ="NestNode" type ="NestNode" />
</ xs:choice >
</ xs:sequence >
</ xs:complexType >
< xs:complexType name ="NestNode" >
< xs:sequence >
< xs:element name ="Text" type ="xs:string" minOccurs ="0" maxOccurs ="unbounded" />
< xs:element name ="Node" type ="Node" minOccurs ="1" maxOccurs ="unbounded" />
</ xs:sequence >
</ xs:complexType >
< xs:complexType name ="SimpleNode" >
< xs:simpleContent >
< xs:extension base ="xs:string" >
</ xs:extension >
</ xs:simpleContent >
</ xs:complexType >
< xs:sequence >
< xs:choice >
< xs:element name ="SimpleNode" type ="SimpleNode" />
< xs:element name ="NestNode" type ="NestNode" />
</ xs:choice >
</ xs:sequence >
</ xs:complexType >
< xs:complexType name ="NestNode" >
< xs:sequence >
< xs:element name ="Text" type ="xs:string" minOccurs ="0" maxOccurs ="unbounded" />
< xs:element name ="Node" type ="Node" minOccurs ="1" maxOccurs ="unbounded" />
</ xs:sequence >
</ xs:complexType >
< xs:complexType name ="SimpleNode" >
< xs:simpleContent >
< xs:extension base ="xs:string" >
</ xs:extension >
</ xs:simpleContent >
</ xs:complexType >
现在的问题就是第一个Node类型的定义不对,也就是说我无法把Node既作为SimpleNode又作为NestNode。
各位大虾有什么高见?