<?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.
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dt="http://commons.apache.org/digester/tests"
  targetNamespace="http://commons.apache.org/digester/tests" elementFormDefault="qualified">

  <xsd:complexType name="dt.employee.type">
    <xsd:sequence>
      <xsd:element ref="dt:firstName" minOccurs="1" maxOccurs="1" />
      <xsd:element ref="dt:lastName" minOccurs="1" maxOccurs="1" />
      <xsd:element ref="dt:address" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:complexType>

  <xsd:element name="employee" type="dt:dt.employee.type" />
  <xsd:element name="firstName" type="xsd:string" />
  <xsd:element name="lastName" type="xsd:string" />

  <xsd:complexType name="dt.address.type">
    <xsd:sequence>
      <xsd:element ref="dt:type" minOccurs="1" maxOccurs="1" />
      <xsd:element ref="dt:city" minOccurs="1" maxOccurs="1" />
      <xsd:element ref="dt:state" minOccurs="1" maxOccurs="1" />
    </xsd:sequence>
  </xsd:complexType>

  <xsd:element name="address" type="dt:dt.address.type" />
  <xsd:element name="type" type="xsd:string" />
  <xsd:element name="city" type="xsd:string" />
  <xsd:element name="state" type="xsd:string" />

</xsd:schema>
