- 1 Intro
- 2 Anwendungsgebiete
- 2.1 XSLT - die Programmiersprache im XML Bereich
- 2.2 Aktuelle und vergangene Anwendungen
- 2.3 Professionelle XML Verarbeitung
- 2.4 Technische Dokumentation
- 3 Wichtige Konzepte
- 3.1 Push vs. Pull Stylesheets
- 3.2 Eindeutigkeit der Regelbasis
- 3.3 Namespaces
- 3.4 Schemata
- 3.5 Standards
- 3.5.1 DITA
- 3.5.2 DITA Inhaltsmodell
- 3.5.1 DITA
- 4 Ausgewählte Themen
- 4.1 Transformationen mit XSLT
- 4.1.1 Vortransformationen
- 4.1.2 Komplexe XML-2-XML Transformationen
- 4.1.2.8 Vererbung
- 4.1.2.8 Vererbung
- 4.1.3 XSLT Streaming
- 4.1.3.1 XSLT Akkumulator
- 4.1.3.2 XSLT Iterator
- 4.1.4 Reguläre Ausdrücke
- 4.1.5 Modus vs. Tunnel Lösung
- 4.1.6 Identifikation mit
generate-id()
- 4.1.6.4 XPath-Achsenbereich selektieren
- 4.1.6.4.1 Funktionen und Module
- 4.1.6.4.1 Funktionen und Module
- 4.1.6.4 XPath-Achsenbereich selektieren
- 4.1.7 Webservice Calls mit doc() und unparsed-text()
- 4.1.8 Stylesheet-Parameter auf der Kommandozeile
- 4.1.9 Leerzeichenbehandlung
- 4.1.10 Mit
translate
Zeichen ersetzen
- 4.1.10.1 Spass mit dem Sequenzvergleich
- 4.1.11 Character Mappings in der Ausgabe
- 4.1.12 JSON mit XSLT 1.0 und Python lxml
- 4.1.1 Vortransformationen
- 4.2 Abfragen mit XQuery
- 4.2.5 XQuery als Programmiersprache
- 4.2.5.3
if..then..else
Ausdrücke
- 4.2.5.3.2 SQL Views in MarkLogic
- 4.2.5.3
if..then..else
Ausdrücke
- 4.2.6 Hilfreiche XQuery Schippsel
- 4.2.5 XQuery als Programmiersprache
- 4.3 XML Datenbanken
- 4.3.1 Connector zu Marklogic in Oxygen
- 4.3.2 Bi-Temporale Dokumente
- 4.3.2.1 Anlegen des Testszenarios auf der ML Konsole
- 4.3.2.2 Ausführen einiger Beispiel-Queries
- 4.3.3 Webapps mit MarkLogic
- 4.3.3.5 Wikipedia Scrapper Applikation
- 4.3.3.5 Wikipedia Scrapper Applikation
- 4.3.4 Dokument-Rechte in MarkLogic
- 4.3.5 MarkLogic Tools
- 4.3.5.1 EXPath Konsole
- 4.3.5.2 mlcp - MarkLogic Content Pump
- 4.3.5.3 Deployment-Tools
- 4.4 XSL-FO mit XSLT1.x
- 4.5 Testing
- 4.5.1 Validierung mit Schematron
- 4.5.2 Erste Schritte mit XSpec
- 4.5.1 Validierung mit Schematron
- 4.6 Performanz-Optimierung
- 4.1 Transformationen mit XSLT
- 5 Zusätzliches Know-How
- 5.1 XML Editoren
- 5.2 Quellcode-Versionskontrolle
- 5.2.1 Kurze Geschichte zur Versionskontrolle Test
- 5.2.2 GIT Kommandos
- 5.2.1 Kurze Geschichte zur Versionskontrolle Test
- 5.1 XML Editoren
- 6 Glossary
- 7 Tektur CCMS
4.2.5 XQuery als Programmiersprache
Erste Schritte in XQuery gehen sehr schön
mit der Query Konsole auf dem Marklogic Server (Port 8000).
Hat man parallel auch noch oXygen Editor offen, kann man die Testergebnisse aus der Konsole direkt in ein XQuery Server Skript packen.
4.2.5.1 Schleifen
Die ersten 10 Dokumente auf dem Server bekommt man z.B. mit:
(doc())[position() lt 11]
Die Zahlen von 1 bis 100 mit:
(for $i in (1 to 100) return $i)
Wenn man diese beide Anweisungen untereinander in die Konsole
schreibt bekommt man einen Fehler. Trennt man sie mit einem
Komma - ein Tupel wird erzeugt - dann klappt es.
4.2.5.2 Dokumente in der DB anlegen
Der Befehl zum Anlegen eines Dokuments in der Marklogic DB sieht
folgendermassen aus (Doku) ↗:
xdmp:document-insert( "/alex-test/example-alex.xml", <root>Hier steht der Content</root>, <options xmlns="xdmp:document-insert"> <metadata>{ map:map() => map:with("valid-start", "2014-06-03T14:13:05.472585-07:00") => map:with("valid-end", "9999-12-31T11:59:59Z") }</metadata> </options>)
Packt man diese Instruktion in die for-Schleife oben, dann sieht das Konstrukt so aus:
(for $i in (1 to 10) return xdmp:document-insert( concat("/alex-test/example-alex-",$i,".xml"), <root>Hier steht der Content {$i}</root>, <options xmlns="xdmp:document-insert"> <metadata>{ map:map() => map:with("valid-start", "2014-06-03T14:13:05.472585-07:00") => map:with("valid-end", "9999-12-31T11:59:59Z") }</metadata> </options>) )
Dokumente kann man einer Collection zuweisen, um sie leichter finden und auswerten
zu können. Das geht mit dem folgenden Befehl (Doku) ↗ und diesem Schnippsel:
let $root := <mein-test> <id>{$id}</id> <content>Hallo Welt!</content> </mein-test>, $options := <options xmlns="xdmp:document-insert"> <permissions>{xdmp:default-permissions()}</permissions> <collections> <collection>/alex-test</collection> </collections> </options>, $fname := concat('/',$id,'_','.xml'), $td := xdmp:document-insert($fname,$root,$options) return [...]
Die Dokumente, die mit der Collection
alex-test
getaggt wurden, kann man sich mit der folgenden Schleife ausgeben lassen:
for $x in collection("/alex-test") return fn:document-uri($x)