<?xml version="1.0" encoding="UTF-8"?>

<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at
  
      http://www.apache.org/licenses/LICENSE-2.0
  
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<employee>
  <firstName> First Name  </firstName>
  <lastName>  Last Name </lastName>
  <age>21</age>
  <salary>1000000</salary>
  <active>true</active>
  <address>
    <type>home</type>
    <street>Home Street</street>
    <city>Home City</city>
    <state>HS</state>
    <zipCode>HmZip</zipCode>
  </address>
  <address>
    <type>office</type>
    <street>Office Street</street>
    <city>Office City</city>
    <state>OS</state>
    <zipCode>OfZip</zipCode>
  </address>
</employee>
