org.eclipse.cosmos/tests/resource-modeling/org.eclipse.cosmos.rm.validation.tests/src/test-resources/others/rulesWithMultiplePattern.xml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.12 - (download) (as text) (annotate)
Mon May 25 15:11:12 2009 UTC (8 months, 2 weeks ago) by dwhiteman
Branch: MAIN
CVS Tags: HEAD
Changes since 1.11: +16 -16 lines
276993: [sml val] Implementation does not support final standard
https://bugs.eclipse.org/bugs/show_bug.cgi?id=276993
<?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/ns/sml-if" schemaComplete="true">
  <identity> 
    <name>TestRulesWithMultiplePatterns</name>
    <version/>
    <displayName/>
    <baseURI>
		http://interop.serviceml.org
	</baseURI>
    <description>Tests that rules that have multiple patterns are handled correctly</description>
    
  </identity>
  
  <ruleBindings>
    <ruleBinding>
    	<documentAlias>http://interop.serviceml.org/Units/DatabaseServer</documentAlias>
    	<ruleAlias>http://interop.serviceml.org/DatabaseServerRules</ruleAlias>
    </ruleBinding>
  </ruleBindings>
  <definitions>
  	<document>
  	  <data>
  	  	<schema elementFormDefault="qualified" targetNamespace="http://www.ibm.com/ccl/soa/deploy/core/1.0.0/" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:core="http://www.ibm.com/ccl/soa/deploy/core/1.0.0/" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:sml="http://www.w3.org/ns/sml" xmlns:stype="http://www.ibm.com/ccl/soa/deploy/simpleTypes/1.0.0/">
			
				<import namespace="http://www.w3.org/ns/sml" schemaLocation="sml.xsd"/>    
				<import namespace="http://www.ibm.com/ccl/soa/deploy/simpleTypes/1.0.0/" schemaLocation="simpleTypes.xsd"/>    
				<import namespace="http://www.w3.org/1999/xhtml"/>
										 
			    <!--                      -->

			    <!--  Deploy Model Object -->

			    <!--                      -->

			    <element abstract="true" name="deployModelObject" type="core:DeployModelObject"/>
				<complexType abstract="true" name="DeployModelObject">
					<annotation>
						<documentation>
						    Abstract parent type of all deployment types.
						</documentation>
					</annotation>
					
					<sequence>
			            <element maxOccurs="unbounded" minOccurs="0" name="extendedAttribute" type="core:ExtendedAttribute">
								<annotation>
									<documentation>
										Used to add attributes to instances that aren't in the schema.  SOA Deploy treats the ExtendedAttributes as
										the equal of ordinary typed attributes in the GUI and validation logic.
									</documentation>
								</annotation>
						</element>
					</sequence>
					
					<attributeGroup ref="core:IdentityAttributes"/>
					<attribute default="true" name="mutable" type="boolean" use="optional">
					   <annotation><documentation>if false, object is considered to be read-only.  if true, DeployModelObject is mutable iff all its parents have mutable=true</documentation></annotation>
					</attribute>
					
				</complexType>
				
					
			
				
				<!--                      -->

				<!--  Extended Attribute  -->

				<!--                      -->

				<complexType name="ExtendedAttribute">		
					<annotation>
						<documentation>
							Structure for dynamic addition of attributes to a {@link DeployModelObject}.
							<html:p>
							Extended attribute instances are created using {@link CoreFactory#createExtendedAttribute()}.
							They are associated with a deploy object by being added to the list of
							{@link DeployModelObject#getExtendedAttributes()}.  An extended attribute must
							have a <html:code>name</html:code> that is unique for the object.</html:p>
						</documentation>
						
					</annotation>     	
					<sequence>
						<element name="data"/>
					</sequence>
					<attribute name="name" type="string"/>
				</complexType>
				 
				
			    <!--      -->

			    <!-- Unit -->

			    <!--      -->

				<element name="unit" type="core:Unit"/>
				<element name="unitLinkRef" sml:targetType="core:UnitLink" type="sml:refType"/>
				<element name="dependencyLinkRef" sml:targetType="core:DependencyLink" type="sml:refType"/>
				<complexType name="Unit">
				  <annotation>
				    <documentation>
				      Represents an abstract unit of publishable deployment.
				      <html:p>
				      A unit is an contains provided {@link Capability} instances, and consumed {@link Requirement}
				      instances.  In is contained in a {@link Topology}.  A unit can be published to the modeled
				      infrastructure using a deployment publisher.  It has hosting and dependency requirements.</html:p>
				      <html:p>
				      Typically, unit subtypes are defined as tag types and do not add attributes.  The tag is
				      used by publishers to identify the driver responsible for provisioning the unit in the
				      infrastructure.  Unit properties are typically associated with subtypes of {@link Capability}.
				      In the first release of the Topology Definition Model (TDM) the schema does not enforce
				      the association between unit and capability types.  Modelers create templates which are
				      instances of unit subtypes containing predefined sets of capabilities and requirements.</html:p>
				    </documentation>
				  </annotation>
				  <complexContent>
				    <extension base="core:DeployModelObject">
				      <sequence>
					    <element maxOccurs="unbounded" minOccurs="0" ref="core:capability">
					    	<annotation>
								<documentation>
									This reference is used to capture the set of capabilities
									that will be provided by this unit.
								</documentation>
							</annotation>
						</element>
						<element maxOccurs="unbounded" minOccurs="0" ref="core:unitLinkRef"/>
						<element maxOccurs="unbounded" minOccurs="0" ref="core:dependencyLinkRef"/>
				      </sequence>
			          <attribute default="unknown" name="initInstallState" type="stype:InstallState" use="optional">
			          <annotation><documentation>If 'installed', short-circuits some validation and publishing steps</documentation></annotation>
			          </attribute>
			          <attribute default="publish" name="publishIntent" type="stype:PublishIntent" use="optional"/>
			          <attribute default="false" name="conceptual" type="boolean" use="optional"/>
			          <!-- TODO Define semantics -->

					  <attribute default="false" name="configurationUnit" type="boolean" use="optional">
					  <annotation><documentation>Hint that this Unit configures another Unit</documentation></annotation>
					  </attribute>
				      <attributeGroup ref="core:OriginAttributes"/>
				    </extension>
				  </complexContent>
				</complexType>
				
				
			  
			    <!--            -->

			    <!-- Capability -->

			    <!--            -->

				<element name="capability" type="core:Capability"/>
				<complexType name="Capability">		
					<annotation>
						<documentation>
							Capabilities carry configuration content for their containing {@link Unit}.
							<html:p>
							Capabilities satisify {@link Requirement}s on other Units.  The linking may
							be direct, using a {@link DependencyLink}, or indirect using a {@link UnitLink}.
							A unit will typically provide one or more capabilities.  Because the model
							does not support multiple inheritance, the use of multiple capabilites provides
							the modeler with a tool to capture different facets of the unit.</html:p>
							<html:p>
							Capability instances may restrict the types of links that can be bound to
							them, directly or indirectly.  Typically, dependency capabilities have
							link type {@link CapabilityLinkTypes#DEPENDENCY}, while hosting capabilities
							have link type {@link CapabilityLinkTypes#ANY} to express the fact that even
							though they are hosting, others may have indirect dependencies on their
							configuration.</html:p>
							<html:p>
							Domain extensions are expected to extend the capability type, providing additional
							attributes.</html:p>
						</documentation>
					</annotation>   
					<complexContent>
						<extension base="core:DeployModelObject">
					      <attributeGroup ref="core:OriginAttributes"/>
			              <attribute default="dependency" name="linkType" type="stype:CapabilityLinkTypes" use="optional">
			              <annotation><documentation>Satisfies a {@link DependencyLink} or {@link UnitLink}; Matches against {@link Requirement}.linkType</documentation></annotation>
			              </attribute>
						</extension>
					</complexContent>
				</complexType>
				
				<attributeGroup name="OriginAttributes">
					<attribute name="buildVersion" type="stype:VersionString" use="optional">
					<annotation><documentation>This attribute is used to specify the build version of the unit when having multiple version controlled units.</documentation></annotation>
					</attribute>
					<attribute name="origin" type="string" use="optional">
					<annotation><documentation>This attribute is used to set the origin of the unit when having multiple version controlled units.</documentation></annotation>
					</attribute>
				</attributeGroup>
				<attributeGroup name="IdentityAttributes">
					<attribute name="displayName" type="string" use="optional">
					<annotation><documentation>Name used on GUI labels and messages</documentation></annotation>
					</attribute>
					<attribute name="name" type="string" use="required">
					<annotation><documentation>Internal 'anchor' for XML references.  See {@link #displayName} for the name exposed in the UI.</documentation></annotation>
					</attribute>
					<attribute name="description" type="string" use="optional"/>
					<!--  TODO Semantics? -->

				</attributeGroup>
			    
			   	<element name="target" sml:targetType="core:DeoployModelObject" type="core:refType">
					<annotation>
						<documentation>The target end of the link, which becomes a {@link Unit} during deserialization</documentation>
					</annotation>
				</element>
				<element name="source" sml:targetType="core:DeoployModelObject" type="core:refType">
					<annotation>
						<documentation>The target end of the link, which becomes a {@link Unit} during deserialization</documentation>
					</annotation>
				</element>
			    
               <!-- This complex type definition copied from SML Submission to W3C, available at http://www.w3.org/Submission/2007/SUBM-sml-20070321/#Appendix1 
                      I did fix the typo in the comment block, and removed the original xs: namespace prefixes. -->
               <complexType name="refType" sml:acyclic="false">
                   <annotation>
                     <documentation>
                      A complex type representing a reference to an element
                      in the same or a different document. No specific scheme is  
                      mandated for references; an implementation is free to
                      choose an appropriate scheme such as URI, EPR, etc.
                      The target of the reference must unambiguously identify a
                      single element.
                    </documentation>
                   </annotation>
                   <sequence>
                    <any namespace="##any" processContents="lax" minOccurs="0"
                            maxOccurs="unbounded"/>
                   </sequence>
                   <attribute ref="sml:ref" use="required" fixed="true"/>
                   <anyAttribute namespace="##any" processContents="lax"/>
                </complexType>
          
          
			    <!--                   -->

				<!--  Base deploy link -->

				<!--                   -->

				<element name="link.deploy" type="core:DeployLink"/>
				<complexType name="DeployLink">
					<annotation>
						<documentation>
						    Base link type for subsequent, specially-typed links to extend.
						</documentation>
					</annotation>
				  <complexContent>
				    <extension base="core:DeployModelObject">
							<sequence>
								<element maxOccurs="1" minOccurs="0" ref="core:source">
									<annotation>
							          <documentation>The source end of the link, which becomes a {@link Requirement} during deserialization</documentation>					
									</annotation>				
							    </element>
							    
								<element maxOccurs="1" minOccurs="0" ref="core:target">
									<annotation>
							          <documentation>The target end of the link, which becomes a {@link Capability} during deserialization</documentation>
							        </annotation>
							    </element>
							</sequence>
				    </extension>
				  </complexContent>
				</complexType>
			    
				<!--                   -->

				<!--  DEPENDENCY LINK  -->

				<!--                   -->

				<element name="link.dependency" type="core:DependencyLink"/>
				<complexType name="DependencyLink">
					<annotation>
						<documentation>
						    Binds a {@link Requirement} to a {@link Capability} which satisfies it.
						    <html:p>
						    Dependency links are binary relationships.  In the programming interface they are 
						    created by {@link CoreFactory#createDependencyLink()}.  In the user interface, they
						    are created  by the {@link com.ibm.ccl.soa.deploy.core.validator.matcher.DomainMatcher}
						    using the <html:code>getPossibleLinks</html:code> methods.  They may be extended to associate
						    additional information with the binding.  In such cases, the user must also modify
						    the matcher to return descriptors that will create the required subtype.</html:p>
						    <html:p>
						    The endpoints of the dependency links are serialized as topology paths obtained
						    using {@link DeployModelObject#getFullPath()}.  In the first release of the Topology
						    Definition Model (TDM), the source of the dependency link is the containing requirement
						    {@link #getParent()}.  In future versions, dependency links may be contained in an
						    object that is different from the source, so users should use {@link #getSource} to
						    obtain the requirement, rather than casting the result of {@link #getParent}.</html:p>
						</documentation>
						
						<!--  Expose manually coded operations. -->

			            <!-- appinfo ecore:key="operations" source="http://www.eclipse.org/emf/2002/Ecore">
			                <operation xmlns="" name="getSource" type="core:Requirement" lowerBound="1" upperBound="1"/>
			                <operation xmlns="" name="getTarget" type="core:Capability" lowerBound="1" upperBound="1"/>
						    <operation xmlns="" name="setTarget" lowerBound="1" upperBound="1">
			                    <parameter xmlns="" name="capability" type="core:Capability" lowerBound="0" upperBound="0" unique="false" ordered="false"/>   
						    </operation>
			            </appinfo-->

					</annotation>
					<complexContent>
						<extension base="core:DeployLink"/>
					</complexContent>
				</complexType> 		
				
				<element name="link.unit" type="core:UnitLink"/>
				<complexType name="UnitLink">
					<annotation>
						<documentation>
						    A generic binding of a {@link Unit} to another {@link Unit}.
						    <html:p>
						    Unit links are binary relationships.  In the programming interface they are 
						    created by {@link CoreFactory#createUnitLink()}.  In the user interface, they
						    cannot be directly instantiated.  Instead, users instantiate one of their two
						    core subtypes: {@link HostingLink} or {@link MemberLink}.</html:p>
						    <html:p>
						    Users may extend {@link UnitLink} to provide new kinds of unit to unit relationships.
						    In such cases, the domain implementation of the abstract domain matcher
						    {@link com.ibm.ccl.soa.deploy.core.validator.matcher.DomainMatcher}
						    must be extended to return link descriptors that generate the subtype instance.</html:p>
						    <html:p>
						    The endpoints of unit links are serialized as topology paths obtained
						    using {@link DeployModelObject#getFullPath()}.  In the first release of the Topology
						    Definition Model (TDM), the source of the unit link is the containing unit
						    {@link #getParent()}.  In future versions, unit links may be contained in an object
						    that is different from the source, so users should use {@link #getSource} to
						    obtain the requirement, rather than casting the result of {@link #getParent}.</html:p>.
						</documentation>			
					</annotation>
					<complexContent>
				    	<extension base="core:DeployLink">
				    		<sequence>
				    			<element maxOccurs="1" minOccurs="0" ref="core:target" sml:targetType="core:Unit"/>
				    			<element maxOccurs="1" minOccurs="0" ref="core:source" sml:targetType="core:Unit"/>
				    		</sequence>
				    	</extension>
					</complexContent>
				</complexType>
			
				
				
			  <!--               -->

			  <!--  Hosting Link -->

			  <!--               -->

			  <element name="link.hosting" substitutionGroup="core:link.unit" type="core:HostingLink"/>
			  <complexType name="HostingLink">
					<annotation>
						<documentation>
							A HostingLink expresses the relationship between a hosting {@link Requirement} and
							a hosting {@link Capability}.
						</documentation>
					</annotation>
					<complexContent>
					<extension base="core:UnitLink"/>
					</complexContent>
			  </complexType>
			    	
				<!--                      -->

				<!--  StringToStringEntry -->

				<!--                      -->

				<complexType name="StringToStringEntry">
					<attribute name="key" type="string"/>
					<attribute name="value" type="string"/>
				</complexType>
			
			
			</schema>
		</data>
	</document>
    <document>
      <data>
        <schema elementFormDefault="qualified" targetNamespace="http://www.ibm.com/ccl/soa/deploy/example/1.0.0/" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:core="http://www.ibm.com/ccl/soa/deploy/core/1.0.0/" xmlns:sml="http://www.w3.org/ns/sml" xmlns:synthetic="http://www.ibm.com/ccl/soa/deploy/example/1.0.0/">
   			
			<!-- A database server unit that can only be hosted on a Windows XP machine -->

			<element name="unit.databaseServer" type="synthetic:UnitDatabaseServer"/>
			<complexType name="UnitDatabaseServer">
			  <annotation>
			    <documentation>
			      Represents a database unit that can only be hosted on Windows XP.
			    </documentation>
			  </annotation>
			  <complexContent>
			    <extension base="core:Unit">
			      <sequence>
				    <!--
					  <element ref="core:dependencyLinkRef" minOccurs="0" maxOccurs="unbounded">
					  	<annotation>
							<documentation>
								This database server depends on a user capability					
							</documentation>
							<appinfo>
			   		          <sch:schema xmlns:sch="http://purl.oclc.org/dsdl/schematron">
			           		    <sch:ns prefix="core" uri="http://www.ibm.com/ccl/soa/deploy/core/1.0.0/" />
				                <sch:ns prefix="smlfn" uri="http://www.w3.org/ns/sml-function"/>
								<sch:pattern id="UserRequirement">
									<sch:rule context="smlfn:deref(smlfn:deref(self::node()[@name='UserRequirement'])/target)">
										<sch:assert test="node-name(.)='capability.user'">
											A username capability is required for the database server
										</sch:assert>													
									</sch:rule>
								</sch:pattern>
							  </sch:schema>
							</appinfo>
						</annotation>
					  </element>-->

					<element maxOccurs="1" minOccurs="1" name="capability.databaseServer" type="synthetic:CapabilityDatabase"/>
				  </sequence>
			    </extension>
			  </complexContent>
			</complexType>							
				
			<!-- The database capability -->

			<complexType name="CapabilityDatabase">
			  <annotation>
			    <documentation>
			      Represents the database capability
			    </documentation>
			  </annotation>
			  <complexContent>
			    <extension base="core:Capability"/>
			  </complexContent>
			</complexType>
			
			<!-- An operating system unit -->

			<element name="unit.operatingSystemUnit" type="synthetic:OperatingSystemUnit"/>
			<complexType name="OperatingSystemUnit">
			  <annotation>
			    <documentation>
			      Represents an operating system unit.
			    </documentation>
			  </annotation>
			  <complexContent>
			    <extension base="core:Unit">
			      <sequence>
				    <element maxOccurs="1" minOccurs="1" name="capability.operatingSystem" type="synthetic:CapabilityOperatingSystem">
				    	<annotation>
							<documentation>
								The operating system capability	
							</documentation>			
						</annotation>
					</element>
				  </sequence>
			    </extension>
			  </complexContent>
			</complexType>
			
			<!-- The operating system capability -->

			<complexType name="CapabilityOperatingSystem">
			  <annotation>
			    <documentation>
			      Represents an operating system capability.
			    </documentation>
			  </annotation>
			  <complexContent>
			    <extension base="core:Capability">
					<attribute name="hostname" type="string" use="optional"/>
					<attribute name="os.type" type="string" use="required"/>
					<attribute name="os.version" type="string" use="required"/>
			    </extension>
			  </complexContent>
			</complexType>
			
			<!-- The user unit -->

			<element name="unit.user" type="synthetic:UserUnit"/>
			<complexType name="UserUnit">
			  <annotation>
			    <documentation>
			      Represents a user unit.
			    </documentation>
			  </annotation>
			  <complexContent>
			    <extension base="core:Unit">
			      <sequence>
				    <element maxOccurs="1" minOccurs="1" name="capability.user" type="synthetic:CapabilityUser">
				    	<annotation>
							<documentation>
								The user capability
							</documentation>			
						</annotation>
					</element>
					
					<element maxOccurs="unbounded" minOccurs="0" ref="core:unitLinkRef">
				    	<annotation>
							<documentation>
								This user unit can only be hosted on a windows operating system			
							</documentation>
							<!--<appinfo>
			   		          <sch:schema xmlns:sch="http://purl.oclc.org/dsdl/schematron">
			           		    <sch:ns prefix="core" uri="http://www.ibm.com/ccl/soa/deploy/core/1.0.0/" />
				                <sch:ns prefix="smlfn" uri="http://www.w3.org/ns/sml-function"/>
				              	<sch:pattern id="OSRequirement">
									<sch:rule context="smlfn:deref(smlfn:deref(core:unitLinkRef[@name='OSRequirement'])/source)">							
										<sch:assert test="@osType='windows'">
											The user group must be hosted on a Windows operating system
										</sch:assert>																
									</sch:rule>
								</sch:pattern>						
							  </sch:schema>
							</appinfo>-->

						</annotation>				
					</element>
				  </sequence>
			    </extension>
			  </complexContent>
			</complexType>
			
			<!-- The user capability -->

			<complexType name="CapabilityUser">
			  <annotation>
			    <documentation>
			      Represents the user capability.
			    </documentation>
			  </annotation>
			  <complexContent>
			    <extension base="core:Capability"/>
			  </complexContent>
			</complexType>
		</schema>	
      </data>
    </document>
    <document>
      <docinfo>
        <aliases>
          <alias>http://interop.serviceml.org/DatabaseServerRules</alias>
        </aliases>
      </docinfo>
      <data>
        <sch:schema xmlns:sch="http://purl.oclc.org/dsdl/schematron">
          <sch:ns prefix="synthetic" uri="http://www.ibm.com/ccl/soa/deploy/example/1.0.0/"/>
          <sch:ns prefix="smlfn" uri="http://www.w3.org/ns/sml-function"/>
          <sch:ns prefix="core" uri="http://www.ibm.com/ccl/soa/deploy/core/1.0.0/"/>
          <sch:pattern id="OSRequirement">
            <sch:rule context="smlfn:deref(core:unitLinkRef)">
              <sch:assert test="true()=false()">
                The OS requirement for the database server has failed.  The version of the Operating
                System was expected to be 'XP' instead of <sch:value-of select="."/>
              </sch:assert>
            </sch:rule>
          </sch:pattern>
          <sch:pattern id="UserRequirement">
            <sch:rule context="core:dependencyLinkRef">
              <sch:assert test="true()=true()">
                User requirement failed <sch:value-of select="name(.)"/>
              </sch:assert>
            </sch:rule>
          </sch:pattern>
        </sch:schema>
      </data>
    </document>
  </definitions>
  <instances>
    <document>
      <docinfo>
        <aliases>
          <alias>http://interop.serviceml.org/Units/DatabaseServer</alias>
        </aliases>
      </docinfo>
      <data>
		<!-- The database server -->

		<unit.databaseServer name="DatabaseServerUnit" xmlns="http://www.ibm.com/ccl/soa/deploy/example/1.0.0/" xmlns:core="http://www.ibm.com/ccl/soa/deploy/core/1.0.0/">
			<core:unitLinkRef sml:ref="true" xmlns:sml="http://www.w3.org/ns/sml">
				<sml:uri>
					/UnitLinks/OSDatabaseLink
				</sml:uri>
			</core:unitLinkRef>
			<core:dependencyLinkRef sml:ref="true" xmlns:sml="http://www.w3.org/ns/sml">
				<sml:uri>
					/DependencyLinks/DatabaseUserLink
				</sml:uri>
			</core:dependencyLinkRef>			
			<capability.databaseServer displayName="Database Server" linkType="any" name="DatabaseServer"/>
		</unit.databaseServer>
      </data>
    </document>
    <document>
      <docinfo>
        <aliases>
          <alias>http://interop.serviceml.org/Units/OperatingSystem</alias>
        </aliases>
      </docinfo>
      <data> 
		<synthetic:unit.operatingSystemUnit name="OperatingSystemUnit" xmlns:core="http://www.ibm.com/ccl/soa/deploy/core/1.0.0/" xmlns:sml="http://www.w3.org/ns/sml" xmlns:synthetic="http://www.ibm.com/ccl/soa/deploy/example/1.0.0/">
			<synthetic:capability.operatingSystem displayName="Operating System" hostname="rrr" linkType="any" name="OperatingSystem" os.type="windows" os.version="XP"/>
			<core:unitLinkRef sml:ref="true">
				<sml:uri>
					/UnitLinks/OSDatabaseLink
				</sml:uri>
			</core:unitLinkRef>
			<core:unitLinkRef sml:ref="true">
				<sml:uri>
					/UnitLinks/OSUserLink
				</sml:uri>
			</core:unitLinkRef>
		</synthetic:unit.operatingSystemUnit>
      </data>
    </document>
    
    <document>
      <docinfo>
        <aliases>
          <alias>http://interop.serviceml.org/Units/UserUnit</alias>
        </aliases>
      </docinfo>
      <data> 
		<synthetic:unit.user configurationUnit="true" displayName="User" name="User" xmlns:core="http://www.ibm.com/ccl/soa/deploy/core/1.0.0/" xmlns:sml="http://www.w3.org/ns/sml" xmlns:synthetic="http://www.ibm.com/ccl/soa/deploy/example/1.0.0/">
			<synthetic:capability.user displayName="User" linkType="dependency" name="providedUser"/>
			<core:unitLinkRef sml:ref="true">
				<sml:uri>
					/UnitLinks/OSUserLink
				</sml:uri>
			</core:unitLinkRef>
		</synthetic:unit.user>
      </data>
    </document>
    
    <document>
      <docinfo>
        <aliases>
          <alias>http://interop.serviceml.org/UnitLinks/OSDatabaseLink</alias>
        </aliases>
      </docinfo>
      <data> 
		<core:link.hosting name="OSRequirement" xmlns:core="http://www.ibm.com/ccl/soa/deploy/core/1.0.0/" xmlns:sml="http://www.w3.org/ns/sml">
			<core:source sml:ref="true" xmlns:sml="http://www.w3.org/ns/sml">
				<sml:uri>
					/Units/OperatingSystem
				</sml:uri>
			</core:source>
			
			<core:target sml:ref="true" xmlns:sml="http://www.w3.org/ns/sml">
				<sml:uri>
					/Units/DatabaseServer
				</sml:uri>
			</core:target>
		</core:link.hosting>
      </data>
    </document>    
    
    <document>
      <docinfo>
        <aliases>
          <alias>http://interop.serviceml.org/DependencyLinks/DatabaseUserLink</alias>
        </aliases>
      </docinfo>
      <data> 
		<core:link.dependency name="OSRequirement" xmlns:core="http://www.ibm.com/ccl/soa/deploy/core/1.0.0/" xmlns:sml="http://www.w3.org/ns/sml">
			<core:source sml:ref="true">
				<sml:uri>
					/Units/DatabaseServer
				</sml:uri>
			</core:source>
			
			<core:target sml:ref="true" xmlns:synthetic="http://www.ibm.com/ccl/soa/deploy/example/1.0.0/">
				<sml:uri>
					/Units/UserUnit#smlxpath1(/synthetic:unit.user/synthetic:capability.user)
				</sml:uri>
			</core:target>
		</core:link.dependency>
      </data>
    </document>    
    
    
    <document>
      <docinfo>
        <aliases>
          <alias>http://interop.serviceml.org/UnitLinks/OSUserLink</alias>
        </aliases>
      </docinfo>
      <data> 
		<core:link.hosting name="OSRequirement" xmlns:core="http://www.ibm.com/ccl/soa/deploy/core/1.0.0/" xmlns:sml="http://www.w3.org/ns/sml">
			<core:source sml:ref="true">
				<sml:uri>
					/Units/OperatingSystem
				</sml:uri>
			</core:source>
			
			<core:target sml:ref="true">
				<sml:uri>
					/Units/UserUnit
				</sml:uri>
			</core:target>
		</core:link.hosting>
      </data>
    </document>  
  </instances>
</model>