David Maus M. A.

Digital Humanities Publishing

FYI: Calling Bullshit, A course to teach you how to think critically

David Maus, 18.01.2017 · Permalink

callingbullshit.org/

The world is awash in bullshit. Politicians are unconstrained by facts. Science is conducted by press release. So-called higher education often rewards bullshit over analytic thought. Startup culture has elevated bullshit to high art. Advertisers wink conspiratorially and invite us to join them in seeing through all the bullshit, then take advantage of our lowered guard to bombard us with second-order bullshit. The majority of administrative activity, whether in private business or the public sphere, often seems to be little more than a sophisticated exercise in the combinatorial reassembly of bullshit.

Our aim in this course is to teach you how to think critically about the data and models that constitute evidence in the social and natural sciences.

Welche Möglichkeiten gibt es, ein XML Dokument mit einem Schema zu verknüpfen?

David Maus, 15.01.2017 · Permalink

Wenn es um das Validieren von XML-Dokumenten geht, gibt es nicht nur verschiedene Schematechnologien, sondern auch verschiedene Mechanismen, ein einzelnes XML-Dokument (Dokumentinstanz) mit Schemadateien zu verknüpfen.

Die untenstehenden Mechanismen beruhen alle darauf, die Verknüpfung eines Dokumentes mit einem oder mehreren Schemata im jeweiligen Dokument festzuhalten. Das ist für sich genommen weder gut noch schlecht, allerdings auch nicht die einzige und nicht immer die beste Variante. Der grundsätzliche Nachteil liegt darin, dass die Verknüpfung zwischen Dokumentinstanz und Schemadatei Teil der Dokumentinstanz ist und eine Änderung der Verknüpfung eine Änderung der Dokumentinstanz erforderlich macht. Eine Änderung der Verknüpfung kann aus verschiedenen Gründen erfolgen:

Während eine Anpassung der Dokumentinstanz bei einem, zwei oder vielleicht auch noch zehn Dokumenten halbwegs handhabbar ist, wird die Sache bei mehreren dutzend oder gar hunderten von XML-Dokumenten zu einer echten Herausforderung.

Hinzu kommt, dass nur die Verknüpfung über xml-model sowohl die gleichzeitige Verwendung verschiedener Schemadateien, als auch die gleichzeitige Verwendung verschiedener Schematechnologien erlaubt. Die Verwendung der Document Type Declaration ebenso wie die Verwendung der Schema Locating Hints bindet an die jeweils unterstützte Technologie.

Lange Rede, kurzer Sinn: Wenn ich die Verknüpfung von Dokumentinstanz und Schema in das Dokument einbetten muss, dann bevorzuge ich xml-model, weil sie mir die größte Flexibilität hinsichtlich der Schematechnologien lässt.

Wenn ich es frei entscheiden kann, dann definiere ich die Verknüpfung außerhalb der Dokumentinstanz.

Document Type Declaration

Document Type Declaration
Schematechnologien Document Type Declaration
Mehrere Schemadateien Nein
Beispiel <!DOCTYPE TEI SYSTEM "http://example.com/tei-transcript.dtd">
Literatur

W3C XML Schema

W3C XML Schema
Schematechnologien W3C XML Schema
Mehrere Schemadateien Bedingt
Anmerkung Die Schema Locating Hints verknüpfen je einen XML Namensraum mit je einem Schema
Beispiel <TEI xmlns="http://www.tei-c.org/ns/1.0"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://www.tei-c.org/ns/1.0 http://example.com/tei-transcript.xsd">  …</TEI>
Literatur

xml-model Processing Instruction

xml-model Processing Instruction
Schematechnologien Document Type Defintion, W3C XML Schema, RelaxNG, Schematron, …
Mehrere Schemadateien Ja
Beispiel <?xml-model href="http://example.com/tei-transcript.rnc" type="application/relax-ng-compact-syntax"?><?xml-model href="http://example.com/tei-transcript.sch" schematypens="http://purl.oclc.org/dsdl/schematron"?>
Literatur

Schritte gruppieren mit p:group

David Maus, 06.01.2017 · Permalink

p:group ist ein zusammengesetzer Schritt (compound step) mit dessen Hilfe sich andere Schritte zu einer Subpipeline zusammenfassen lassen. Innerhalb von p:group können Ausgabeports definiert werden, mit denen (Zwischen-)Ergebnisse der Subpipeline nach außen geleitet werden können.

Verwendung von p:group
<p:group name="subpipeline" xmlns:p="http://www.w3.org/ns/xproc">  <p:output port="result">    <p:pipe step="last-step" port="result"/>  </p:output>  <p:output port="other">    <p:pipe step="intermediate-step" port="result"/>  </p:output></p:group>

Qualifizierte und unqualifizierte Attribute in XML Schema

David Maus, 03.01.2017 · Permalink

Im Rahmen des Projektes Linked Open Emblem Data nehme ich gerade das für Emblembuchbeschreibungen verwendete Emblem Schema unter die Lupe. Um einen Eindruck davon zu bekommen, wie eine Emblembuchbeschreibung aussieht, die von allen Optionen des Schemas gebraucht macht, habe ich mit Hilfe von <oXygen/> ein Beispieldokument auf Basis des Schemas erstellen lassen. Zu meinem Erstaunen enthielt das Beispieldokument ein einzelnes, mit dem Namensraum des Emblem Schemas qualifiziertes Attribut.

Beispieldokument mit einem qualifizierten Attribut

Stellt sich heraus, dass die Regel für den Namensraum von Attributdefinitionen sich danach unterscheiden, wo ein Attribut deklariert wird. Wird es direkt als Kindelement des schema-Elements als sogenanntes "globales Attribut" deklariert, dann wird immer der im targetNamespace-Attribut des Schemas angegebenen Namensraum verwendet. In allen anderen Fällen kann mit Hilfe des Attributs form angegeben werden, ob es qualified, also mit, oder unqualified und damit ohne Namensraum definiert ist. Wird das Attribut form weggelassen, dann entscheidet der im Attribut attributeFormDefault des Wurzelelements angebene Wert.

Das heisst, dass in folgendem Schema das Attribut byReferenceQualified mit, das Attribute byReference jedoch ohne Namensraum definiert ist:

Einfaches XML-Schema mit Attributdeklarationen
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://example.org/"           elementFormDefault="qualified" attributeFormDefault="unqualified"           targetNamespace="http://example.org/">  <xs:element name="root">    <xs:complexType>      <xs:attribute ref="byReferenceQualified"/>      <xs:attributeGroup ref="byReference"/>    </xs:complexType>  </xs:element>  <xs:attribute name="byReferenceQualified"/>  <xs:attributeGroup name="byReference">    <xs:attribute name="byReference"/>  </xs:attributeGroup></xs:schema>

Und siehe da: Im Emblem Schema ist genau das der Fall.

Attributdeklaration im Emblem Schema 1.2

Das fragliche Attribut key wird in die Attributgruppe standardAttrib über eine Referenz auf die globale Attributdeklaration eingebunden, während die anderen Attribute entweder von Haus aus qualifiziert sind (xml:id, xml:lang, xlink:href) oder direkt in der Attributgruppe deklariert werden (page). Umgekehrt heisst das aber auch, dass keines der anderen global deklarierten Attribute im Schema verwendet wird.