• Как применяются key , keyref xml schema?

    @Termit7000
    Исходя из
    На одной парковке может стоять только одна машина

    т.е. на одной парковке не может стоять больше одной известной машины (в приведенном выше примере XML может)

    XSD

    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://parken.org" targetNamespace="http://parken.org" elementFormDefault="qualified">
    	<xs:element name="парковаться">
    		<xs:complexType>
    			<xs:sequence>
    				<xs:element name="машина" maxOccurs="unbounded">
    					<xs:complexType>
    						<xs:attribute name="номер" type="xs:string"/>
    					</xs:complexType>
    				</xs:element>
    				<xs:element name="парковка" minOccurs="1" maxOccurs="unbounded">
    					<xs:complexType>
    						<xs:sequence>
    							<xs:element name="парк" type="xs:string" maxOccurs="1"/>
    						</xs:sequence>
    						<xs:attribute name="id" type="xs:string"/>
    					</xs:complexType>
    				</xs:element>
    			</xs:sequence>
    		</xs:complexType>
    
    		<xs:key name="УникальностьМашин">
    			<xs:selector xpath="tns:машина"/>
    			<xs:field xpath="@номер"/>
    		</xs:key>
    
    		<xs:key name="УникальностьПарковок">
    			<xs:selector xpath="tns:парковка"/>
    			<xs:field xpath="@id"/>
    		</xs:key>
    
    		<xs:keyref name="МашинаНаПарковкеСуществует" refer="tns:УникальностьМашин">
    			<xs:selector xpath="tns:парковка/tns:парк"/>
    			<xs:field xpath="."/>
    		</xs:keyref>
    
    		<xs:key name="ОднаМашинаНаОднойПарковке">
    			<xs:selector xpath="tns:парковка"/>
    			<xs:field xpath="@id"/>
    			<xs:field xpath="tns:парк"/>
    		</xs:key>
    
    	</xs:element>
    </xs:schema>
    Ответ написан
    Комментировать