Erstellung eines Schemas

Einleitung

In diesem Tutorial lernen Sie eine eigene Schemadatei anzulegen und einen neuen strukturierten Inhaltstyp zu benutzen. Zu Testzwecken können Sie diese Datei in Ihrem Dateibaum an beliebiger Stelle speichern.

Als erstes sehen Sie ein Gesamtbeispiel. Die einzelnen Knoten werden dann vorgestellt.



Beispiel einer vollständigen Schmemadatei

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> 
    
    <xsd:annotation> 
        <xsd:documentation xml:lang="DE"> 
            Konfigurationseinstellungen der Website 
        </xsd:documentation> 
        <xsd:appinfo> 
            <resourcebundle name="de.stuttgart.uni.workplace"/> 
            <preview uri="${previewtempfile}" /> 
            <!-- mappings> 
                <mapping element="Name" mapto="property:Title" /> 
            </mappings --> 
            <layouts> 
                <!--layout element="Status" widget="SelectorWidget"
configuration="0:Testbetrieb|1:aktiv|2:pausierend|3:auslaufend" /> 
                <layout element="Kundentyp" widget="SelectorWidget"
configuration="3*:Mitarbeiter|2:Student|1:Mitarbeiter+Student" /> 
                <layout element="Schulung" widget="SelectorWidget"
configuration="1:intern|0:extern" /--> 
            </layouts> 
            <validationrules/> 
            <defaults> 
                <!-- default element="Company" value="Universität Stuttgart"/> 
                <default element="Phone" value="0049 711 685-"/> 
                <default element="Fax" value="0049 711 685-"/> 
                <default element="City" value="Stuttgart"/> 
                <default element="Country" value="Deutschland"/ --> 
            </defaults> 
            
            <!--tabs useall="true" /--> 
            <tabs> 
                <tab element="Websitename" collapse="false" name="Allgemeines" /> 
                <tab element="GlobalNavigation" collapse="true" name="Global-Navigation" /> 
                <tab element="Keyword" collapse="true" name="Keywords" /> 
            </tabs>            
            
        </xsd:appinfo> 
    </xsd:annotation> 
    
    <xsd:include schemaLocation="opencms://opencms-xmlcontent.xsd"/> 
    <xsd:include
schemaLocation="opencms://system/modules/de.stuttgart.uni/schemas/rus/config_globnav.xsd"/> 
    <xsd:include
schemaLocation="opencms://system/modules/de.stuttgart.uni/schemas/rus/config_keywords.xsd"/> 
        
    <xsd:element name="Configurations" type="OpenCmsConfigurations"/> 
    
    <xsd:complexType name="OpenCmsConfigurations"> 
        <xsd:sequence> 
            <xsd:element name="Configuration" type="OpenCmsConfiguration" minOccurs="0"
maxOccurs="unbounded"/> 
        </xsd:sequence> 
    </xsd:complexType>     
    <xsd:complexType name="OpenCmsConfiguration"> 
        <xsd:sequence> 
            <xsd:element name="Websitename" type="OpenCmsString" minOccurs="1" /> 
            <xsd:element name="GlobalNavigation" type="OpenCmsGlobalNavigation" minOccurs="0"
maxOccurs="10" /> 
            <xsd:element name="Keyword" type="OpenCmsKeyword" minOccurs="0"
maxOccurs="unbounded" /> 
        </xsd:sequence> 
        <xsd:attribute name="language" type="OpenCmsLocale" use="required"/> 
    </xsd:complexType> 
</xsd:schema>


Datenstruktur per xsd:element

Vorbedingungen:

  1. OpenCms speichert in jedem XML-Dokument mehrere Sprachen. Hierfür gibt es eine einfache Verschachtelung der Form <typen><typ language="de">...</typ><typ language="en">..</typ></typen>, wobei typ der Name Ihres Datentyps ist.
  2. Alle selbstdefinierten Datentypen müssen mit dem Präfix OpenCms beginnen.

Als Attribute können Sie die Häufigkeit (minOccurs, maxOccurs) mit dem Wertebereich n (natürliche Zahl) bis unendlich (unbounded) definieren. Die Standardwerte sind jeweils 1. Beide Attribute sind optional. Als Pflichattribut müssen Sie den Datentyp angeben.

    <xsd:element name="Configurations" type="OpenCmsConfigurations"/> 
    
    <xsd:complexType name="OpenCmsConfigurations"> 
        <xsd:sequence> 
            <xsd:element name="Configuration" type="OpenCmsConfiguration" minOccurs="0"
maxOccurs="unbounded"/> 
        </xsd:sequence> 
    </xsd:complexType>     
    <xsd:complexType name="OpenCmsConfiguration"> 
        <xsd:sequence> 
            <xsd:element name="Websitename" type="OpenCmsString" minOccurs="1" /> 
            <xsd:element name="GlobalNavigation" type="OpenCmsGlobalNavigation" minOccurs="0"
maxOccurs="10" /> 
            <xsd:element name="Keyword" type="OpenCmsKeyword" minOccurs="0"
maxOccurs="unbounded" /> 
        </xsd:sequence> 
        <xsd:attribute name="language" type="OpenCmsLocale" use="required"/> 
    </xsd:complexType>


Weitere Einstellungen per xsd:annotation

In diesem Knoten finden Sie neben den Kommentare (xsd:documentation), die wichtigen Funktionen innerhalb von xsd:appinfo für:

  • Lokalisierung durch Definition einer Sprachdatei mit resourcebundle
  • Abbildung von Daten auf Eigenschaften mit mappings
  • Anpassung des Formats des Formulars mit layouts
  • Validierung der Attribute per validationrules
  • Definition von Vorgabewerte mit defaults
  • Neu: Gruppierung der Attribute in Tab-Sheets per tabs


Links