Entwurf 1 -- Beiträge fehlen

This commit is contained in:
Simon Martens
2024-05-07 18:25:53 +02:00
parent f118cc540b
commit 738a717993
26 changed files with 306 additions and 114 deletions

14
XSD/KGPZ.xsd Normal file
View File

@@ -0,0 +1,14 @@
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://www.kgpz.de"
xmlns="https://www.kgpz.de"
xmlns:kgpz="https://www.kgpz.de"
elementFormDefault="qualified">
<xsd:include schemaLocation="akteure.xsd" />
<xsd:include schemaLocation="orte.xsd" />
<xsd:include schemaLocation="kategorien.xsd" />
<xsd:include schemaLocation="werke.xsd" />
<xsd:include schemaLocation="stuecke.xsd" />
<xsd:include schemaLocation="beitraege.xsd" />
</xsd:schema>

37
XSD/akteure.xsd Normal file
View File

@@ -0,0 +1,37 @@
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://www.kgpz.de"
xmlns="https://www.kgpz.de"
xmlns:kgpz="https://www.kgpz.de"
elementFormDefault="qualified">
<xsd:include schemaLocation="common.xsd" />
<xsd:element name="akteure">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="akteur" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="NonEmptyString" nillable="false" maxOccurs="unbounded" />
<xsd:element name="sortiername" minOccurs="1" maxOccurs="1" type="kgpz:NonEmptyString" nillable="false" />
<xsd:element name="lebensdaten" minOccurs="0" maxOccurs="1" type="kgpz:NonEmptyString" />
<!-- TODO: URI FOR GND -->
<xsd:element name="gnd" minOccurs="0" maxOccurs="1" type="xsd:anyURI" nillable="false" />
<xsd:element name="anmerkung" type="kgpz:NonEmptyString" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:unique name="uniqueIndexAkteur">
<xsd:selector xpath="kgpz:akteur" />
<xsd:field xpath="@id" />
</xsd:unique>
<xsd:unique name="uniqueGND">
<xsd:selector xpath="kgpz:akteur" />
<xsd:field xpath="kgpz:gnd" />
</xsd:unique>
</xsd:element>
</xsd:schema>

11
XSD/beitraege.xsd Normal file
View File

@@ -0,0 +1,11 @@
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://www.kgpz.de"
xmlns="https://www.kgpz.de"
xmlns:kgpz="https://www.kgpz.de"
elementFormDefault="qualified">
<xsd:element name="beitraege" type="beitraege" />
<xsd:complexType name="beitraege"></xsd:complexType>
</xsd:schema>

20
XSD/common.xsd Normal file
View File

@@ -0,0 +1,20 @@
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://www.kgpz.de"
xmlns="https://www.kgpz.de"
xmlns:kgpz="https://www.kgpz.de"
elementFormDefault="qualified">
<xsd:simpleType name="NonEmptyString">
<xsd:restriction base="xsd:string">
<xsd:minLength value="1" />
<xsd:pattern value=".*[^\s].*" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="Year">
<xsd:restriction base="xsd:unsignedInt">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="2024"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>

29
XSD/kategorien.xsd Normal file
View File

@@ -0,0 +1,29 @@
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://www.kgpz.de"
xmlns="https://www.kgpz.de"
xmlns:kgpz="https://www.kgpz.de"
elementFormDefault="qualified">
<xsd:include schemaLocation="common.xsd"/>
<xsd:element name="kategorien">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="kategorie" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="NonEmptyString" minOccurs="1" maxOccurs="1" nillable="false" />
</xsd:sequence>
<xsd:attribute name="index" type="xsd:integer" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:unique name="uniqueIndexKategorien">
<xsd:selector xpath="kgpz:kategorie" />
<xsd:field xpath="@index" />
</xsd:unique>
</xsd:element>
</xsd:schema>

36
XSD/orte.xsd Normal file
View File

@@ -0,0 +1,36 @@
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://www.kgpz.de"
xmlns="https://www.kgpz.de"
xmlns:kgpz="https://www.kgpz.de"
elementFormDefault="qualified">
<xsd:include schemaLocation="common.xsd" />
<xsd:element name="orte">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ort" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="kgpz:NonEmptyString" minOccurs="1" maxOccurs="unbounded" nillable="false" />
<!-- TODO: geonames URI regex -->
<xsd:element name="geonames" type="xsd:anyURI" minOccurs="0" maxOccurs="1" nillable="false" />
<xsd:element name="anmerkung" type="kgpz:NonEmptyString" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="id" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:unique name="uniqueIndexOrte">
<xsd:selector xpath="kgpz:ort" />
<xsd:field xpath="@id" />
</xsd:unique>
<xsd:unique name="uniqueGeonames">
<xsd:selector xpath="kgpz:ort" />
<xsd:field xpath="kgpz:geonames" />
</xsd:unique>
</xsd:element>
</xsd:schema>

39
XSD/stuecke.xsd Normal file
View File

@@ -0,0 +1,39 @@
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://www.kgpz.de"
xmlns="https://www.kgpz.de"
xmlns:kgpz="https://www.kgpz.de"
elementFormDefault="qualified">
<!-- Vorschlag: Stücke aus dem Datum von Dateinamen ableiten -->
<xsd:include schemaLocation="common.xsd" />
<xsd:element name="stuecke">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="stueck" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<!-- Lässt sich aus Nummer + Jahr berechnen. -->
<xsd:element name="datum" type="xsd:date" minOccurs="1" maxOccurs="1" nillable="false" />
<!-- Von + bis lässt sich aus Nummer berechnen (n-1) * 4 + 1 bzw. (n-1) * 4 + 1 -->
<xsd:element name="von" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
<xsd:element name="bis" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1" />
<!-- Kann von Stücke abgeleitet werden -->
<xsd:element name="beilagen" type="xsd:nonNegativeInteger" default="0" minOccurs="0" maxOccurs="1"/>
<!-- Vielleicht nötig -->
<xsd:element name="anmerkung" type="kgpz:NonEmptyString" />
</xsd:sequence>
<xsd:attribute name="nummer" type="xsd:integer" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:unique name="uniqueNummer">
<xsd:selector xpath="stueck" />
<xsd:field xpath="@nummer" />
</xsd:unique>
</xsd:element>
</xsd:schema>

45
XSD/werke.xsd Normal file
View File

@@ -0,0 +1,45 @@
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://www.kgpz.de"
xmlns="https://www.kgpz.de"
xmlns:kgpz="https://www.kgpz.de"
elementFormDefault="qualified">
<xsd:include schemaLocation="common.xsd" />
<xsd:element name="werke">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="werk" maxOccurs="unbounded">
<xsd:complexType>
<xsd:choice>
<xsd:element name="daten" type="kgpz:citation" minOccurs="0" maxOccurs="1" />
<xsd:element name="zitation" type="NonEmptyString" minOccurs="0" maxOccurs="1" />
<xsd:element name="anmerkung" type="kgpz:NonEmptyString" minOccurs="0" maxOccurs="unbounded" />
</xsd:choice>
<xsd:attribute name="id" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:unique name="uniqueId">
<xsd:selector xpath="kgpz:werk" />
<xsd:field xpath="@id" />
</xsd:unique>
</xsd:element>
<xsd:complexType name="citation">
<xsd:sequence>
<xsd:element name="autorschaft" type="NonEmptyString" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="herausgabe" type="NonEmptyString" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="druck" type="NonEmptyString" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="verlag" type="NonEmptyString" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="vertrieb" type="NonEmptyString" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="ausgabe" type="NonEmptyString" minOccurs="0" maxOccurs="1" />
<xsd:element name="titel" type="NonEmptyString" minOccurs="0" maxOccurs="1" />
<xsd:element name="titelannotation" type="NonEmptyString" minOccurs="0" maxOccurs="1" />
<xsd:element name="jahr" type="NonEmptyString" minOccurs="0" maxOccurs="1" />
<xsd:element name="ort" type="NonEmptyString" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>