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";
            }
        }

        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;
        }
    }
}
