-<!ATTLIST AS routing (Full|Floyd|Dijkstra|DijkstraCache|None|Vivaldi|Cluster|ClusterTorus|ClusterFatTree|ClusterDragonfly) #REQUIRED>
-
-<!ELEMENT zone ((prop*), ((AS|zone|ASroute|zoneRoute|include|storage_type|storage|link|backbone|cabinet|router|host|cluster|peer|host_link)*,(route|ASroute|zoneRoute|trace|trace_connect|bypassRoute|bypassASroute|bypassZoneRoute)*))>
+<!ATTLIST AS routing CDATA #REQUIRED>
+
+<!-- A zone is either an internal node that contains other zones,
+ or a leaf containing hosts and other leaf-like elements -->
+<!ELEMENT zone ((prop*),
+ (((AS|zone|include|link|backbone|cluster|peer|trace|trace_connect)*,
+ (zoneRoute|ASroute|trace|trace_connect|bypassASroute|bypassZoneRoute)*,
+ (trace|trace_connect)*)
+ |((include|storage_type|storage|host|cabinet|router|link|backbone|trace|trace_connect|host_link)*,
+ (route|trace|trace_connect|bypassRoute)*)))>