org.eclipse.cosmos/tests/resource-modeling/org.eclipse.cosmos.rm.validation.tests/src/test-resources/identity/ValidConstraintRefKeyref.xml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.4 - (download) (as text) (annotate)
Tue Jan 27 14:47:12 2009 UTC (12 months, 1 week ago) by dwhiteman
Branch: MAIN
Changes since 1.3: +35 -0 lines
NEW - bug 238492: Support xml:base in validator
https://bugs.eclipse.org/bugs/show_bug.cgi?id=238492
<?xml version="1.0" encoding="utf-8"?>
<!--
/*******************************************************************************
 * Copyright (c) 2008, 2009 IBM Corporation.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
 -->
<model xmlns="http://www.w3.org/2008/09/sml-if" schemaComplete="true">
  <identity>
    <name>ValidConstraintRefKeyref</name>
    <baseURI>
		http://interop.serviceml.org
	</baseURI>
    <description>
    	A model is valid if a referenced identity constraint is used using the
    	'ref' attribute.
    </description>

  </identity>
  <definitions>
    <document>
      <data>
        <xs:schema
          targetNamespace="urn:university"
          elementFormDefault="qualified"
          xmlns:tns="urn:university"
          xmlns:xs="http://www.w3.org/2001/XMLSchema"
          xmlns:sml="http://www.w3.org/2008/09/sml"
          xmlns:smlfn=
                "http://www.w3.org/2008/09/sml-function">

          <xs:element name="EnrolledStudent"/>
          <xs:element name="Student"
                      type="tns:StudentType"/>

          <xs:element name="University" type="tns:UniversityType">
            <xs:annotation>
              <xs:appinfo>
                <sml:key name="StudentIDisKey">
                  <sml:selector xpath=
                  "smlfn:deref(tns:EnrolledStudents/tns:EnrolledStudent)"/>
                  <sml:field xpath="tns:ID"/>
                </sml:key>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>

		 <xs:element name="PrivateUniversity" type="tns:UniversityType">
		    <xs:annotation>
		      <xs:appinfo>
		        <sml:keyref refer="tns:StudentIDisKey" name="privateUniversityKey">
                  <sml:selector xpath="tns:EnrolledStudents/tns:EnrolledStudent"/>
                  <sml:field xpath="tns:ID"/>
                </sml:keyref>
		      </xs:appinfo>
		    </xs:annotation>
		  </xs:element>

		 <xs:element name="PublicUniversity" type="tns:UniversityType">
		 <!-- success; This keyref resolves to a keyref constraint -->
		    <xs:annotation>
		      <xs:appinfo>
		        <sml:keyref ref="privateUniversityKey"/>
		      </xs:appinfo>
		    </xs:annotation>
		  </xs:element>

          <xs:complexType name="StudentType">
            <xs:sequence>
              <xs:element name="ID" type="xs:string"/>
              <xs:element name="Name" type="xs:string"/>
            </xs:sequence>
            <xs:attribute name="SSN" type="xs:string"
                          use="optional"/>
          </xs:complexType>

          <xs:complexType name="UniversityType">
            <xs:sequence>
              <xs:element name="Name" type="xs:string"/>
              <xs:element name="EnrolledStudents" minOccurs="0">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element ref="tns:EnrolledStudent"
                                maxOccurs="unbounded"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:schema>
      </data>
    </document>
  </definitions>
  <instances>
    <document>
      <docinfo>
        <aliases>
          <alias>Student1</alias>
        </aliases>
      </docinfo>
      <data>
        <Student xmlns="urn:university"
                 SSN="123-22-4444">
          <ID>1000</ID>
          <Name>John</Name>
        </Student>
      </data>
    </document>
    <document>
      <docinfo>
        <aliases>
          <alias>Student2</alias>
        </aliases>
      </docinfo>
      <data>
        <Student xmlns="urn:university"
                 SSN="333-22-4444">
          <ID>1001</ID>
          <Name>John</Name>
        </Student>
      </data>
    </document>
    <document>
      <docinfo>
        <aliases>
          <alias>Student3</alias>
        </aliases>
      </docinfo>
      <data>
        <Student xmlns="urn:university">
          <ID>1002</ID>
          <Name>John</Name>
        </Student>
      </data>
    </document>
    <document>
      <docinfo>
        <aliases>
          <alias>Student4</alias>
        </aliases>
      </docinfo>
      <data>
        <Student xmlns="urn:university"
                 SSN="111-22-3333">
          <ID>1004</ID>
          <Name>Ray</Name>
        </Student>
      </data>
    </document>
    <document>
      <data>
        <University xmlns="urn:university"
         xmlns:sml="http://www.w3.org/2008/09/sml">
          <Name>MIT</Name>
          <EnrolledStudents>
            <EnrolledStudent sml:ref="true">
              <sml:uri>Student1</sml:uri>
            </EnrolledStudent>
            <EnrolledStudent sml:ref="true">
              <sml:uri>Student2</sml:uri>
            </EnrolledStudent>
            <EnrolledStudent sml:ref="true">
              <sml:uri>Student3</sml:uri>
            </EnrolledStudent>
            <EnrolledStudent sml:ref="true">
              <sml:uri>Student4</sml:uri>
            </EnrolledStudent>
          </EnrolledStudents>
        </University>
      </data>
    </document>
    <document>
      <data>
        <PrivateUniversity xmlns="urn:university"
         xmlns:sml="http://www.w3.org/2008/09/sml">
          <Name>MIT</Name>
          <EnrolledStudents>
            <EnrolledStudent>
              <ID>1000</ID>
            </EnrolledStudent>
            <EnrolledStudent>
              <ID>1004</ID>
            </EnrolledStudent>
          </EnrolledStudents>
        </PrivateUniversity>
      </data>
    </document>
    <document>
      <data>
        <PublicUniversity xmlns="urn:university"
         xmlns:sml="http://www.w3.org/2008/09/sml">
          <Name>MIT</Name>
          <EnrolledStudents>
            <EnrolledStudent>
              <ID>1001</ID>
            </EnrolledStudent>
            <EnrolledStudent>
              <ID>1002</ID>
            </EnrolledStudent>
            <EnrolledStudent>
              <ID>1004</ID>
            </EnrolledStudent>
          </EnrolledStudents>
        </PublicUniversity>
      </data>
    </document>
    <document>
      <data>
        <PrivateUniversity xmlns="urn:university"
         xmlns:sml="http://www.w3.org/2008/09/sml">
          <Name>MIT</Name>
          <EnrolledStudents>
            <EnrolledStudent>
              <ID>1000</ID>
            </EnrolledStudent>
            <EnrolledStudent>
              <ID>1004</ID>
            </EnrolledStudent>
          </EnrolledStudents>
        </PrivateUniversity>
      </data>
    </document>
    <document>
      <data>
        <PublicUniversity xmlns="urn:university"
         xmlns:sml="http://www.w3.org/2008/09/sml">
          <Name>MIT</Name>
          <EnrolledStudents>
            <EnrolledStudent>
              <ID>1001</ID>
            </EnrolledStudent>
            <EnrolledStudent>
              <ID>1002</ID>
            </EnrolledStudent>
            <EnrolledStudent>
              <ID>1004</ID>
            </EnrolledStudent>
          </EnrolledStudents>
        </PublicUniversity>
      </data>
    </document>
  </instances>
</model>