utorok 3. júla 2012

Ako spravovať rekurzívne prvky s XSD

Pri prechode k XML a schéme často vyvstáva otázka, či je možné definovať rekurzívne štruktúry v XSD? Odpoveď znie: Áno, je to možné. Typickým príkladom sú rekurzívne elementy <section>.

<xsd:element name="section">
<xsd:complextype>
<xsd:sequence>
<xsd:element ref="title">
<xsd:element maxoccurs="unbounded" ref="para">
<xsd:element maxoccurs="unbounded" minoccurs="0" ref="section">
</xsd:element></xsd:element></xsd:element>

Toto pravidlo vyjadruje, že oddiel môže obsahovať nadpis, jeden alebo viac odsekov a nula alebo viac oddielov. Všimnite si, že neexistujú žiadne minOccurs na odseky, ale tam je maxOccurs. Ak nie sú minOccurs, potom východisková hodnota je jeden. Hodnotu maxOccurs zadávame preto, aby sme umožnili vložiť viac odsekov.

Všimnite si tiež, že tento obsah sa vzťahuje na všetkých oddiely vrátane vnorených oddielov. Preto neexistuje žiadny limit na to, ako hlboko môžete elementy oddielov vnárať.</xsd:sequence></xsd:complextype></xsd:element></section>