W3C home > Mailing lists > Public > xmlschema-dev@w3.org > February 2008

problem with title hierarchy in schema

From: Andreas Peter <info@minimag.de>
Date: Sun, 03 Feb 2008 12:22:15 +0100
Message-ID: <47A5A3E7.2050708@minimag.de>
To: XML Schema List <xmlschema-dev@w3.org>
Hello List,

I am relatively new to XMLSchema. I am going to write a custom schema 
for Word 2003/2007.
Currently I am working at the title hierarchy. My aim is to have a 
schema which shows when a structural problem inside the document occurs.

This is what I want to realise:

Element titles can contain different subtitles such as ebene1 | ebene2 | 
ebene3 | ebene4

if ebene1 occurs there should only be ebene2 | para

if ebene2 occurs there should only be ebene1 | ebene3 | para

if ebene3 occurs there should only be ebene1 | ebene2 | ebene4 | para

and if ebene4 occurs there should be only ebene1 | ebene2 | ebene3 | para

There should be an element chapter which contains all the posibilities 
mentioned above.

This is what I have done so far:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:include schemaLocation="aud_para.xsd"/>

    <xs:element name="ebene1" type="xs:string"/>
    <xs:element name="ebene2" type="xs:string"/>
    <xs:element name="ebene3" type="xs:string"/>
    <xs:element name="ebene4" type="xs:string"/>

    <xs:group name="section1">
        <xs:choice>
            <xs:element ref="ebene1"/>
            <xs:element name="para" type="paraType"/>
        </xs:choice>
    </xs:group>

    <xs:group name="section2">
        <xs:choice>
            <xs:element ref="ebene1"/>
            <xs:element ref="ebene3"/>
            <xs:element name="para" type="paraType"/>
        </xs:choice>
    </xs:group>

    <xs:group name="section3">
        <xs:choice>
            <xs:element ref="ebene1"/>
            <xs:element ref="ebene2"/>
            <xs:element ref="ebene4"/>
            <xs:element name="para" type="paraType"/>
        </xs:choice>
    </xs:group>

    <xs:group name="section4">
        <xs:choice>
            <xs:element ref="ebene1"/>
            <xs:element ref="ebene2"/>
            <xs:element ref="ebene3"/>
            <xs:element name="para" type="paraType"/>
        </xs:choice>
    </xs:group>

    <xs:complexType name="chapterType" mixed="true">
        <xs:choice>
            <xs:group ref="section1"/>
            <xs:group ref="section2"/>
            <xs:group ref="section3"/>
            <xs:group ref="section4"/>
        </xs:choice>
    </xs:complexType>
</xs:schema>

My question: is this the right approach or are there more useful 
approaches? I am new to schema :-(

Thanks for helping me,
Andreas

Received on Sunday, 3 February 2008 11:22:22 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 11 January 2011 00:15:02 GMT