Per datasource gerarchici si intende la famiglia dei ds progettata per interfacciarsi a strutture dati nidificate come filesystem, file xml, ldap. Dal un punto di vista logico non vi è alcuna differenza tra un ds relazione e ds gerarchico entrambi si interfacciano in lettura/scrittura ad una fonte dati, le differenze riguardano gli attributi utilizzati, nei ds gerarchici gli attributi in gioco sono:

  • base: percorso da cui iniziare la ricerca
  • scope: profondità di ricerca a partire dal valore specificato nell'attributo base
  • filter: filtro per ottenere un sottoinsieme dei risultati.
  • justthese: restituisce solo i campi specificati.
  • alias: il nome da dare al nodo root, se non specificato gli verrà assegnato quando definito nell'attributo base
<idtag typeobj="ds" conn="conn4" scope="onelevel" dskey="key" base="/jamp/data" dslimit="10" />

I ds gerarchici offrono anche la possibilità di effettuare ricerche su rami distinti:

<idtag typeobj="ds" conn="conn4" dsname="filename">
<hierarchy>
    <root1 base="/jamp/data/class" alias="Classi" scope="base" />
    <root2 base="/jamp/data/obj" alias="Oggetti" scope="base" />
</hierarchy>        
</idtag>