message <span class="message">NodeList</span>
{
  message <span class="message">NodeInfo</span>
  {
    required <span class="number">uint32   </span> objectID        =  1; 
    required <span class="number">uint32   </span> type            =  2; 
    required <span class="string">string   </span> name            =  3; 
    required <span class="number">uint32   </span> depth           =  4; 
    <span class="comment">/** 
     * 
     *  Used if type is 1.
     */</span>
    optional <span class="string">string   </span> namespacePrefix =  5; 
    <span class="comment">/** 
     * 
     *  Used if type is 1.
     */</span>
    repeated <span class="message">Attribute</span> attributeList   =  6; 
    <span class="comment">/** 
     * 
     *  Used if type is 1.
     */</span>
    optional <span class="number">uint32   </span> childrenLength  =  7; 
    <span class="comment">/** 
     * 
     *  Used if type is 3, 4, 7 or 8.
     */</span>
    optional <span class="string">string   </span> value           =  8; 
    <span class="comment">/** 
     * 
     *  Used if type is 10.
     */</span>
    optional <span class="string">string   </span> publicID        =  9; 
    <span class="comment">/** 
     * 
     *  Used if type is 10.
     */</span>
    optional <span class="string">string   </span> systemID        = 10; 
  }
  message <span class="message">Attribute</span>
  {
    required <span class="string">string</span> namePrefix = 1; 
    required <span class="string">string</span> name       = 2; 
    required <span class="string">string</span> value      = 3; 
  }
  repeated <span class="message">NodeInfo</span> nodeList = 1; 
}
