diff --git a/resources/schema/Makefile b/resources/schema/Makefile new file mode 100644 index 0000000..c3d55bd --- /dev/null +++ b/resources/schema/Makefile @@ -0,0 +1,14 @@ +TRANG=trang + +schemas := $(wildcard *.rnc) +schemas_rng := $(schemas:.rnc=.rng) + +.PHONY: all clean + +%.rng: %.rnc + $(TRANG) $< $@ + +all: $(schemas_rng) + +clean: + rm -rf $(schemas_rng) diff --git a/resources/schema/abacus_export.rnc b/resources/schema/abacus_export.rnc new file mode 100644 index 0000000..5f13385 --- /dev/null +++ b/resources/schema/abacus_export.rnc @@ -0,0 +1,80 @@ +default namespace = "" + +start = + element AbaConnectContainer { + element Task { + element Parameter { empty }, + element Transaction { + element DocumentData { + attribute command { xsd:NCName }, + element artikel_nr { xsd:NCName }, + title, + element MetaData { + element dc { + title, + element creator { xsd:string { minLength="1" } }?, + # make sure the contents of the source element is a text node that has either a + # proper isbn number or is the empty string + element source { xsd:token { pattern='keine|SBS[0-9]{6}|(978-|979-)?\d{1,5}-\d{1,7}-\d{1,6}-[0-9xX]' }? }?, + element language { "de" | "de-CH" | "it" | "rm-sursilv"}, + element identifier { xsd:NCName }, + element date { xsd:date } + }, + element sbs { + element KST { xsd:positiveInteger } + & element Korrekturstufe { text }? + & element ProduktArt { text }? + & element untertitel { text }? + & element reihe { text }? + & element verlag { xsd:token }? + & element verlagsort { xsd:token }? + & element auflageJahr { xsd:token }? + & element verlagNR { xsd:token }? + & element opusNr { xsd:token }? + & element ismn { xsd:token }? + & element printPageNumber { xsd:nonNegativeInteger }? + & element ausleihNr { text }? + & element prodStatus { xsd:token }? + & element datenErhalten { xsd:token }? + & element schriftart { xsd:token }? + & element endformat { text }? + & element drucker { xsd:token }? + & element doppelseitig { xsd:NCName }? + & element bindung { xsd:token }? + & element breite { xsd:nonNegativeInteger } + & element zeilen { xsd:nonNegativeInteger } + & element auszug { text }? + & element zoom { text }? + & element qualitaet { text }? + & element prodPageSS { xsd:integer } + & element bpz { text }? + & element ervNr { xsd:integer } + & element laufzettelNr { xsd:nonNegativeInteger } + & element rucksackNr { xsd:nonNegativeInteger } + & element altersgruppe { text }? + & element gdBuchNr { xsd:nonNegativeInteger } + & element prodPagePS { xsd:nonNegativeInteger } + & element anzahlBaende { xsd:nonNegativeInteger } + & element anzahlRelief { xsd:nonNegativeInteger } + & element vorlageHaus { "ja" | "nein" } + & element katalogEintrag { "ja" | "nein" } + & element verlagVerzeichnis { "ja" | "nein" } + & element daisy_producer { "ja" | "nein" } + & element notizen { text }? + & element Aufwand_A2 { "" | "D" }? + # the verkaufstext contains "author[xx]title[xx]subtitleN[xx]..." + # the export from abacus also optionaly contains new lines, hence the '\n? + & element verkaufstext { xsd:token { pattern='.*\n?\[xx\].+(\n?\[xx\].+)*' }? }? + & element bilder { "ja" | "nein" }? + & element anzahlBilder { xsd:nonNegativeInteger }? + }, + element ncc { + element setInfo { xsd:integer } + } + } + } + } + } + } +title = element title { text } +