c3d2-web/xsd/c3d2web.xsd

276 lines
9.0 KiB
XML

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import namespace="http://www.w3.org/1999/xhtml"
schemaLocation="xhtml1-strict.xsd"/>
<xs:element name="page">
<xs:complexType>
<xs:choice>
<xs:element ref="news"/>
<xs:group ref="Block.class" minOccurs="1" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="title" type="xs:string" use="required"/>
<xs:attribute name="pagetitle" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="news">
<xs:complexType>
<xs:sequence>
<xs:element ref="newsfile" minOccurs="1"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="newsfile" type="xs:anyURI"/>
<xs:element name="item">
<xs:complexType>
<xs:sequence>
<xs:element ref="image" minOccurs="0"/>
<xs:element ref="event" minOccurs="0"/>
<xs:group ref="Block.class" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element ref="addendum" minOccurs="0"/>
<xs:group ref="Block.class" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="title" type="xs:string" use="required"/>
<xs:attribute name="date" type="xs:dateTime" use="required"/>
<xs:attribute name="author" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="addendum">
<xs:complexType>
<xs:sequence>
<xs:group ref="Block.class" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="blockquote">
<xs:complexType>
<xs:sequence>
<xs:group ref="Block.class" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="resource">
<xs:complexType>
<xs:sequence>
<xs:element ref="alternative" minOccurs="0"
maxOccurs="unbounded"/>
<xs:any namespace="http://podlove.de/simple-chapters"
processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="size" type="xs:nonNegativeInteger"
use="required"/>
<xs:attribute name="type" type="xs:string" use="required"/>
<xs:attribute name="title" type="xs:string" use="optional"/>
<xs:attribute name="url" type="xs:anyURI" use="required"/>
<xs:attribute name="poster" type="xs:anyURI" use="optional"/>
<xs:attribute name="preview" type="xs:anyURI" use="optional"/>
<xs:attribute name="details-link" type="xs:anyURI" use="optional"/>
<xs:attribute name="feedback-link" type="xs:anyURI" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="alternative">
<xs:complexType>
<xs:attribute name="title" type="xs:string" use="optional"/>
<xs:attribute name="size" type="xs:nonNegativeInteger"
use="required"/>
<xs:attribute name="type" type="xs:string" use="required"/>
<xs:attribute name="url" type="xs:anyURI" use="required"/>
</xs:complexType>
</xs:element>
<xs:group name="Block.class">
<xs:choice>
<xs:element ref="p"/>
<xs:element ref="pre"/>
<xs:element ref="dl"/>
<xs:element ref="ul"/>
<xs:element ref="ol"/>
<xs:element ref="blockquote"/>
<xs:element ref="news-list"/>
<xs:element ref="h3" xmlns="http://www.w3.org/1999/xhtml"/>
<xs:element ref="h4" xmlns="http://www.w3.org/1999/xhtml"/>
<xs:element ref="form" xmlns="http://www.w3.org/1999/xhtml"/>
<xs:element ref="iframe" xmlns="http://www.w3.org/1999/xhtml"/>
<xs:element ref="video" xmlns="http://www.w3.org/1999/xhtml"/>
<xs:element ref="picture"/>
<xs:element ref="image"/>
<xs:element ref="figure"/>
<xs:element ref="figcaption"/>
<xs:element ref="include-frab-schedule"/>
<xs:element ref="resource"/>
</xs:choice>
</xs:group>
<xs:complexType name="Block" mixed="true">
<xs:sequence>
<xs:group ref="Inline.class" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="optional"/>
</xs:complexType>
<xs:group name="Inline.class">
<xs:choice>
<xs:element ref="link"/>
<xs:element ref="em"/>
<xs:element ref="strong"/>
<xs:element ref="code"/>
<xs:element ref="sup"/>
</xs:choice>
</xs:group>
<xs:element name="news-list">
<xs:complexType>
<xs:attribute name="prefix" type="xs:string" use="optional"/>
<xs:attribute name="details" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="p">
<xs:complexType>
<xs:complexContent>
<xs:extension base="Block">
<xs:attribute name="class" type="xs:string" use="optional"/>
<xs:attribute name="title" type="xs:string" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="link">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element ref="image" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="href" type="xs:anyURI" use="optional"/>
<xs:attribute name="class" type="xs:string" use="optional"/>
<xs:attribute name="data-before" type="xs:string" use="optional"/>
<xs:attribute name="data-after" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="image">
<xs:complexType mixed="true">
<xs:attribute name="title" type="xs:string" use="required"/>
<xs:attribute name="class" type="xs:string" use="optional"/>
<xs:attribute name="thumb" type="xs:string" use="optional"/>
<xs:attribute name="width" type="xs:string" use="optional"/>
<xs:attribute name="height" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="pre" type="xs:string"/>
<xs:element name="em" type="xs:string"/>
<xs:element name="strong" type="xs:string"/>
<xs:element name="code" type="xs:string"/>
<xs:element name="figure">
<xs:choice minOccurs="1">
<xs:element ref="figcaption" maxOccurs="1"/>
<xs:element ref="picture" maxOccurs="1"/>
<xs:element ref="video" maxOccurs="1"/>
</xs:choice>
</xs:element>
<xs:element name="figcaption" type="Block"/>
<xs:element name="sup">
<xs:complexType mixed="true">
<xs:group ref="Inline.class" minOccurs="0"
maxOccurs="unbounded"/>
</xs:complexType>
</xs:element>
<xs:element name="dl">
<xs:complexType>
<xs:sequence>
<xs:element ref="dh" minOccurs="0"/>
<xs:choice maxOccurs="unbounded">
<xs:element ref="dt"/>
<xs:element ref="dd"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="class" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="dh" type="Block"/>
<xs:element name="dt" type="Block"/>
<xs:element name="dd" type="Block"/>
<xs:complexType name="List">
<xs:sequence>
<xs:element ref="li" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:element name="ul" type="List"/>
<xs:element name="ol" type="List"/>
<xs:element name="li">
<xs:complexType mixed="true">
<xs:choice maxOccurs="unbounded">
<xs:group ref="Inline.class" minOccurs="0"
maxOccurs="unbounded"/>
<xs:group ref="Block.class" minOccurs="1" maxOccurs="unbounded"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:simpleType name="dateOrDateTime">
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:date"/>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:dateTime"/>
</xs:simpleType>
</xs:union>
</xs:simpleType>
<xs:element name="event">
<xs:complexType>
<xs:sequence>
<xs:element name="start" type="dateOrDateTime"/>
<xs:element name="end" type="dateOrDateTime" minOccurs="0"/>
<xs:element name="location" type="LinkableLocation"
minOccurs="0"/>
<xs:element name="repeat">
<xs:complexType>
<xs:attribute name="freq" type="xs:string" use="optional"/>
<xs:attribute name="bysetpos" type="xs:nonNegativeInteger" use="optional"/>
<xs:attribute name="byday" type="xs:string" use="optional"/>
<xs:attribute name="interval" type="xs:nonNegativeInteger" use="optional"/>
<xs:attribute name="count" type="xs:nonNegativeInteger" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="LinkableLocation" mixed="true">
<xs:sequence>
<xs:element ref="link"
minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:element name="include-frab-schedule">
<xs:complexType>
<xs:attribute name="src" type="xs:anyURI" use="required"/>
<xs:attribute name="title" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
</xs:schema>