노드

2013-05-08 4 views
0

의 나무에 대한 XSD 스키마를 만드는 방법은 클래스가 : I 노드의 트리를 만들 수 있어요 클래스와노드

class Node{ 
    Public string Name; 
    Public Node LeftNode; 
    Public Node RightNode; 
} 

을 나는 XML로 그 나무를 표현하기 좋아합니다. 나는 Visual Studio에서 intellicence을하고 난 다음 XML을 만들 수 있어요 것과

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="Node" > 
     <xs:complexType> 
      <xs:all> 

       <xs:element name="Name" type="xs:string" /> 

       <xs:element name="RightNode">  
        <!-- I need help here --> 
       </xs:element> 

       <xs:element name="LeftNode">  
        <!-- I need help here --> 
       </xs:element> 

      </xs:all> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 

감사 :

<?xml version="1.0" encoding="iso-8859-1"?> 

<Node xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:noNamespaceSchemaLocation="Path_Where_Xsd_File_IsLocated.xsd"> 

    <Name>Test></Name>  
    <RightNode></RightNode>  
    <LeftNode></LeftNode> 

</Node> 

내가 문제를 같이

현재 내 XML 스키마가 보인다 나는 중첩 된 아이들을 가질 수 있기를 바랄 것입니다.

<?xml version="1.0" encoding="iso-8859-1"?> 

<Node xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:noNamespaceSchemaLocation="Path_Where_Xsd_File_IsLocated.xsd"> 

    <Name>Test></Name>  
    <RightNode> 
     <Node> 
      <Name>SomeChildName</Name> 
     </Node> 
    </RightNode>  
    <LeftNode></LeftNode> 

</Node> 

를 내가 자식 노드를 입력 시작할 때 세 가지가 있지만, intellicence 내가 원하는 유효성 검사뿐만 아니라 작동하지 않습니다 만들 수 있어요 : 다른 말로하면 내가 좋아하는 뭔가를 구성 할 수 있도록 같은 것 XML에서 수행 할 수 있습니다.

<xsd:element name="RightNode" > 
    <xsd:complexType> 
     <xsd:all> 
      <xs:element ref="Node"> 
     </xsd:all> 
    </xsd:complexType> 
</xsd:element> 

가 어떻게 내 XML 스키마 (XSD 파일)을 해결할 수 있도록 그 intellicence 자식 노드 작업을 계속 :

나는 다음과 같은 시도?

답변

1

필요한 것은 재귀적인 XSD입니다. 여기 당신을 위해 일 수있는 예는 다음과 같습니다

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

<xs:element name="Node" type="Node"/> 

<xs:complexType name="Node"> 
    <xs:all> 
     <xs:element name="Name" type="xs:string" /> 
     <xs:element name="RightNode" type="Node"/> 
     <xs:element name="LeftNode" type="Node"/> 
    </xs:all> 
</xs:complexType> 

당신은 XSD를 내 일반 재귀를 다루고 다른 비슷한 질문 here을 찾을 수 있습니다.