<?xml version="1.0" encoding="utf-8" ?>
<!--
/*   Copyright 2004 The Apache Software Foundation
 *
 *   Licensed 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.
 */
-->

<!-- the uniquness constraint is for value of  UniqueConstraintSubElem1Child -->

<root>
    <!-- invalid - value 12 repeats -->
    <TestRootElemUniqueConstraint>
        <UniqueConstraintElem1>
            <UniqueConstraintSubElem1>
                <UniqueConstraintSubElem1Child>12</UniqueConstraintSubElem1Child>
            </UniqueConstraintSubElem1>
            <UniqueConstraintSubElem1>
                <UniqueConstraintSubElem1Child>12</UniqueConstraintSubElem1Child>
            </UniqueConstraintSubElem1>
        </UniqueConstraintElem1>
    </TestRootElemUniqueConstraint>

    <!-- key constraint comment out - required child elem -->
    <TestRootElemKeyConstraint>
        <KeyConstraintElem1>
            <KeyConstraintSubElem1>
                <!--
                <KeyConstraintSubElem1Child>Ok this is a constrained Elem</KeyConstraintSubElem1Child>
                -->
            </KeyConstraintSubElem1>
        </KeyConstraintElem1>
    </TestRootElemKeyConstraint>
</root>

