[XSD] XML Schema met XML schema defineren

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • storeman
  • Registratie: April 2004
  • Laatst online: 22:09
Ik ben me aan het verdiepen in de krochten van XML Schema, erg leuk en bij tijd en wijlen onbegrijpelijk. Ik wil nu een definitie voor een definitie sheet maken, wat volgens mij moet kunnen. Om het niet te abstract te houden, zal ik mijn probleem hier gewoon voorleggen, dat praat makkelijker.

De kern van het probleem is, ik wil mijn database structuur in XML vorm defineren. Dit is al behoorlijk gelukt, maar om het zo flexibel en uitbreidbaar mogelijk te houden, wil ik datatypes graag per database adapter kunnen vastleggen.

De uitkomst zou dus moeten zijn, dat ik verschillende elementen binnen mijn columns-set kan gebruiken:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
....
<columns>
    <column>
        <name>id</name>
        <datatype>
            <pgsql:serial/>
        </datatype>
    </column>
    <column>
        <name>name</name>
        <datatype>
            <pgsql:character-varying length="255"/>
        </datatype>
    </column>
</columns>
....


Bovenstaande is wenselijk, zodat XML ook valideert. De datatypes zitten in de pgsql namespace, zodat het format altijd valideert (of niet).

Nu is mijn idee om dan per database adapter datatypes de defineren in een XML Schema:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<xsd:schema
    targetNamespace="nsp-pgsql"
    elementFormDefault="qualified"
    xmlns="AbstractDbSchema" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:pgsql="nsp-pgsql" 
    >
    <datatypes>
        <datatype>
            <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="serial">
                    <complexType></complexType>
                </xsd:element>
            </xsd:sequence>
            </xsd:complexType>
        </datatype>
        <datatype>
            <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="character-varying">
                    ...(enzo)...
                </xsd:element>
            </xsd:sequence>
            </xsd:complexType>
        </datatype>
    </datatypes>
</xsd:schema>


Het format van een dergelijk datatypes schema wil ik eigenlijk ook weer vastleggen in een bovenliggend schema. Hier ben ik uiteindelijk een beetje in de war wat ik dan moet gebruiken, een include, import of een redefine.

Als ik de boeken moet geloven, zou dit in ieder geval moeten kunnen. Maar ik kom er niet helemaal uit.

"Chaos kan niet uit de hand lopen"