module demo1 {
    yang-version 1;
    namespace "namespace1";
    prefix "demo1";
    revision "2013-07-15";
    container device {
        list device {
            key deviceid;
            leaf deviceid {
                type string;
            }
            leaf Customs-supervisor {
                type empty;
                description "name of the customs-supervisor.";
            }

            leaf Merchandiser-supervisor {
                type string;
                description "name of merchandiser-supervisor";
            }

            list Material-supervisor {
                key "name";
                leaf name {
                    type string;
                    description "name of logistics-supervisor";
                }
                leaf departmentId {
                    type string;
                    description "name of department";
                 }
            }

            list General-supervisor {
                key "name";
                leaf name {
                    type string;
                }
            }

            list Supervisor {
                key "name";
                leaf name {
                    type string;
                }
            }

            container Purchasing-supervisor {
                leaf purchasing-specialist {
                    type string;
                    description "name of the purchasing-specialist person";
                }

                leaf-list support {
                    type string;
                    description "name of the support person";
                }
            }

            leaf-list Warehouse-supervisor {
                type string;
                description "name of the warehouse-supervisor's";
            }

            leaf Trading-supervisor {
                type string;
                description "name of the trading-supervisor";
            }

            leaf-list Employee-id {
                type string;
                description "list of the employee id";
            }
            container cont7 {
               leaf leaf8 {
                  type string;
               }
            }
        }
    }

    list list1 {
        key leaf1;
        leaf leaf1 {
            type string;
        }
    }
}
