- 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.6 Hilfreiche XQuery Schippsel
Unsortierte Schnippsel für die MarkLogic Konsole, die an mancher Stelle hilfreich sein könnten:
Beschreibung | Beispiel Code Schnippsel |
Datenbank löschen |
xdmp:forest-clear( xdmp:database-forests( xdmp:database("xml-scrapper-content"))) |
Über Collection iterieren |
for $x in collection("/topics") return (<fname>{ fn:document-uri($x) }</fname>, $x) |
Attribut / Knoten ersetzen |
for $ref in collection("/topics")//topicref let $topic := collection("/topics") [contains(.),$ref/@href)], $new := attribute href { $topic/topic/@id } return xdmp:node-replace($ref/@href, $new) |
Dokument "umbenennen" ↗ |
xdmp:document-insert( $new-uri, fn:doc($old-uri), xdmp:document-get-permissions($old-uri), xdmp:document-get-collections($old-uri) ), xdmp:document-delete($old-uri), xdmp:document-set-properties($new-uri, $properties |
Über verschiedene Collections bestimmte Elemente suchen |
for $element in cts:search(/descendant::*[self::b or self::i or self::u], cts:collection-query(("/topics", "/tasks", "/maps"))) return $element/text() |
Ein Element aus einem "Stack" holen und das Element vom Stack nehmen ("Pop") |
let $result := ( for $stack in collection("/stack-pushed") order by $stack/some-element/some-criterion descending return $stack)[1] return ( local:render-response($result), xdmp:document-set-collections(fn:document-uri($result), ("/stack-popped") |
Konvertierung nach JSON |
let $xml:= <tektur-dita> { for $x in collection("/topics") return $x } </tektur-dita>, $config := json:config("full") => map:with("whitespace", "preserve") return json:transform-to-json( $xml , $config ) |
Gib mir alle Dokumente, die nach dem 23.05.2019 zur (temporalen) Collection "/topics" hinzugefügt wurden |
let $period := cts:period( xs:dateTime('0001-01-01T00:00:00'), xs:dateTime('2019-05-23T00:00:00') ) return cts:search( collection("/topics"), cts:period-range-query('system-axis', 'ISO_SUCCEEDS', $period) ) |
cURL Parameter um eine DB zu leeren (als Array Einträge im Python Code) |
args = [ 'curl', '-X', 'POST', '--anyauth', '-u', 'admin:admin', '--header', 'Content-Type:application/json', '-d', '{\"operation\":\"clear-database\"}', 'http://localhost:8002/manage/ v2/databases/mydb'] |
Elementare Permissions an Dokumenten setzen; xdmp:document-update-permissions zum Aktualisieren |
for $x in collection("/my-collection") return xdmp:document-set-permissions( fn:document-uri($x), ( xdmp:permission("my-role", "update"), xdmp:permission("my-role", "read" ))) |