Простые адресные данные в FSD

В этом примере описаны простые адресные данные, в которых поля можно располагать в различном порядке в зависимости от метки. Для определения строки ввода используется тег выбора и подбор на основе метки.

Пример входных данных

name: John & Paul
number: 07593 128912
street: 1 Cousins Drive
name: P J Baird
street: 24b The Hamptons
number: 07382 213 877

Пример выходных данных

<addresses>
		<address>
				<name>John &amp; Paul</name>
				<number>07593 128912</number>
				<street>1 Cousins Drive</street>
		</address>
		<address>
				<name>P J Baird</name>
				<street>24b The Hamptons</street>
				<number>07382 213 877</number>
		</address>
</addresses>

Схема

<?xml version='1.0'?>
<schema xmlns='http://www.systemsunion.com/2001/TD/SSTransform/fsd/' version='1.0'>
		<sequence name="addresses">
				<sequence
				name="address" output="yes" max-occur="0" min-occur="0">
						<choice
						output="no"
						max-occur="3" min-occur="3">
								<record record-sep="\r\n" min-occur="1" output="no">
										<field name="name-label"
										min-length="6"
										max-length="6"
										valid-value="name: "
										output="no"/>
										<field name="name"/>
								</record>
								<record record-sep="\r\n"
								min-occur="1" output="no">
										<field name="addr-label"
										min-length="8"
										max-length="8"
										valid-value="street: "
										output="no"/>
										<field name="street"/>
								</record>
								<record record-sep="\r\n"
								min-occur="1" output="no">
										<field name="num-label"
										min-length="8"
										max-length="8"
										valid-value="number: "
										output="no"/>
										<field name="number"/>
								</record>
						</choice>
						<record name="blank-line"
						output="no" max-occur="1"
						min-occur="0" record-sep="\r\n">
						<field output="no"/>
						</record>
				</sequence>
		</sequence>
</schema>