REF — это атрибут, который ссылается на элемент, который находится в другом месте.
Важно: атрибуты NAME и REF НЕ могут присутствовать одновременно

Есть XML:

<?xml version="1.0" encoding="UTF-8"?>
<book xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<title>Планиметрия для школы</title>
	<author>Иванов Иван Иванович</author>
	<price>25000111.32</price>
	<supplier>
		<supplierId>154</supplierId>
		<supplierName>ОАО "Рога и Копыта"</supplierName>
		<CODE_SEC>235645758756856856854645634634563464564568769563476346</CODE_SEC>
	</supplier>
</book>

Создадим XSD, но тег CODE_SEC мы опишем отдельно.

<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2013 (http://www.altova.com) by  () -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1.0">
	<xsd:element name="book">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="title" type="xsd:string">
					<xsd:annotation>
						<xsd:documentation>Названsие книги</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
				<xsd:element name="author">
					<xsd:annotation>
						<xsd:documentation>ФИО автора книги</xsd:documentation>
					</xsd:annotation>
					<xsd:simpleType>
						<xsd:restriction base="xsd:string">
							<xsd:minLength value="2"/>
							<xsd:maxLength value="255"/>
						</xsd:restriction>
					</xsd:simpleType>
				</xsd:element>
				<xsd:element name="price">
					<xsd:simpleType>
						<xsd:restriction base="xsd:decimal">
							<xsd:totalDigits value="10"/>
							<xsd:fractionDigits value="2"/>
						</xsd:restriction>
					</xsd:simpleType>
				</xsd:element>
				<xsd:element name="supplier">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="supplierId" type="xsd:integer" fixed="154">
								<xsd:annotation>
									<xsd:documentation>ID поставщика</xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="supplierName">
								<xsd:annotation>
									<xsd:documentation>Наименование поставщика</xsd:documentation>
								</xsd:annotation>
								<xsd:simpleType>
									<xsd:restriction base="xsd:string">
										<xsd:minLength value="5"/>
										<xsd:maxLength value="300"/>
									</xsd:restriction>
								</xsd:simpleType>
							</xsd:element>
							<xsd:element name="supplierAddress" type="xsd:string" minOccurs="0"/>
							<xsd:element ref="CODE_SEC"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="CODE_SEC">
		<xsd:simpleType>
			<xsd:restriction base="xsd:string">
				<xsd:minLength value="20"/>
				<xsd:maxLength value="1024"/>
			</xsd:restriction>
		</xsd:simpleType>
	</xsd:element>
</xsd:schema>

Как видно из XSD :

<xsd:element ref="CODE_SEC"/>

Т.е. мы ссылаемся на элемент(тег), который описан в другом месте. Вот описание этого тега:

<xsd:element name="CODE_SEC">
		<xsd:simpleType>
			<xsd:restriction base="xsd:string">
				<xsd:minLength value="20"/>
				<xsd:maxLength value="1024"/>
			</xsd:restriction>
		</xsd:simpleType>
	</xsd:element>
Реклама