<?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>
    <TestRootElemUniqueConstraint>
        <UniqueConstraintElem1>
            <UniqueConstraintSubElem1>
                <UniqueConstraintSubElem1Child>12</UniqueConstraintSubElem1Child>
            </UniqueConstraintSubElem1>
            <UniqueConstraintSubElem1>
                <UniqueConstraintSubElem1Child>10</UniqueConstraintSubElem1Child>
            </UniqueConstraintSubElem1>
        </UniqueConstraintElem1>
    </TestRootElemUniqueConstraint>

    <TestRootElemKeyConstraint>
        <KeyConstraintElem1>
            <KeyConstraintSubElem1>
                <KeyConstraintSubElem1Child>Ok this is a constrained Elem</KeyConstraintSubElem1Child>
                <!-- Child2 is constrained by a keyref and its value has to be the same as Child1 above -->
                <KeyConstraintSubElem1Child2>Ok this is a constrained Elem</KeyConstraintSubElem1Child2>
            </KeyConstraintSubElem1>
        </KeyConstraintElem1>
    </TestRootElemKeyConstraint>
</root>




