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