Archiv des Autors: Michael Müller-Hillebrand

XML für Helden

https://youtu.be/ekhtca9HJkQ

Veröffentlicht unter XML/XSL | Kommentare deaktiviert für XML für Helden

Tekom 2013, Do 7.11.2013

Am zweiten Tag der diesjährigen tekom-Jahrestagung kam ich nicht in so viele Vorträge – meinen eigenen habe ich natürlich besucht! – aber ein paar Notizen sind es dennoch geworden. Den Freitag habe ich in diesem Jahr erstmalig nicht mehr besucht.

Wissen macht schön – so werden Sie ein erfolgreicher Wissensmanager

Wichtig: Risiken durch fehlendes Wissensmanagement. Es kann nicht oft genug wiederholt werden: Wissensmanagement ist kein Luxus, sondern eine Notwendigkeit. Bei bestimmten Informationen reicht es nicht, dass es (derzeit!) in der Firma Leute gibt, die das wissen. Sind diese Personen auf ewig verfügbar, werden die nie krank?

Ulrike Parson und Marion Bröer (parson AG) warnen nicht so eindringlich wie ich hier, sondern präsentieren praktikable Vorgehensweisen, wie man zu einem funktionierenden Wissensmanagement kommt. Unterlage

DERCOM e.V. und COTI

Jetzt den Entwurf des Standards für eine herstellerübergreifende Übersetzungsschnittstelle laden und kommentieren: http://www.dercom.de

PowerPoint Folien aus CMS

Frau Dr. Witte von Cognitas stellt das Erstellen von Powerpoint-Foliensötzen (im .pptx-Format) aus COSIMA vor. Für den Kunden des Doku-Dienstleisters bietet sich dadurch die Chance für flexible und modulare Trainingsunterlagen mit allen Vorteilen, die ein Redaktionssystem bietet. Darunter natürlich die vorhandenen Übersetzungsprozesse, wodurch die Übersetzung von PowerPoint-Dateien komplett entfällt.

DOCUFY wird zitiert: „Wenn Sie Pilotkunde sein wollen, dann probieren wir das aus.“

Das Projekt stellt gewisse Herausforderungen an Redaktion und Redaktionssystem:

  • Trainingskonzept: fachliches Konzept wird benötigt, denn sonst ist ein zielgerichtetes Vorgehen nicht möglich
  • Kommunikation mit den Trainern: die Texte werden von den Redakteuren geschrieben, der Input kommt von den Trainern; dadurch muss eine neue Kommunikationskultur entstehen
  • Folien-Notizen in einer anderen Sprache als die Folien und das Handout: In manchen Märkten wird der Vortrag des Trainers synchron übersetzt, Folien und Handout sollen aber in Landessprache sein – die der Trainer selbst nicht versteht

Weniger ist mehr

Laden Sie die Präsentation zu meinem Vortrag

Veröffentlicht unter tekom/tcworld | Kommentare deaktiviert für Tekom 2013, Do 7.11.2013

Tekom 2013, Mi 6.11.2013

Am ersten Tag der diesjährigen tekom-Jahrestagung konnte ich einige Vorträge besuchen. Hier meine kurzen Notizen.

Printlayouts mit CSS3

Gregor Fellenz (bekennender Fan von XML-basiertem Publishing mit umfangreichen Erfahrungen nicht nur mit der Verlagsbranche, zudem Autor von »InDesign automatisieren«) und Tobias Fischer berichten über den Stand er Layoutmöglichkeiten von CSS3. Und haben die mit Beispieldaten auch durchexerziert.

Wer 82079 sagt, muss auch 9241 sagen

Dieter Gust berichtet über ISO-Normen 82079 und 9241. Es geht ihm im Kern um Beurteilungskriterien zur Ergonomie von elektronischen Medien. „Gebrauchstauglichkeit“ – was bedeutet das? Er verweist auf vorhandene und fehlende Aspekte im Normen-Kanon und versucht sich an einer Annäherung mit konkreten Projekten auf »mobile devices«. Fazit: Es bleibt noch einiges zu tun, und ohne intensive Beschäftigung mit der Materie geht es gar nicht.

XSLT 2.0 im Browser mit Saxon-CE

Thomas Meinicke stellt den aktuellen Stand dieser (mittlerweile als OpenSource verfügbaren) Lösung von XSLT-Guru Dr. Michael Kay vor. Auch er kann sich dem Fazit anderer nicht ganz entziehen:

»Great solution, now looking for a problem to solve…«

The Value of Training Users to be „Wiki Gardeners“

Susan Griffin, u.a. Wiki-Gärtner bei Atlassian (Produzent von JIRA und Confluence), betont die Notwendigkeit des Aufräumend, Unkraut-jätend etc. wenn in einem kollaborativen System wie einem Wiki geschrieben und gearbeitet wird. Das gilt nicht nur für Textschaffende, sondern insbesondere auch wenn so ein Stetem als Wissenspool genutzt werden soll.

  • Find your master gardeners!
  • Structuring content.
  • Make sure you have a style guide.
  • Experienced gardeners keep the weeds at bay.
  • Wiki disasters… clean up regularly!
Veröffentlicht unter tekom/tcworld | Kommentare deaktiviert für Tekom 2013, Mi 6.11.2013

XML Prague 2013

http://xmlprague.cz/

Guten Morgen aus Prag, gerade beginnt die 8. Konferenz XML Prague, aufgrund des Erfolgs jetzt zum zweiten Mal in großen Hörsaal der wirtschaftswissenschaftlichen Fakultät. Als Single Track Conference ist es (für mich) äußerst entspannend, mich nicht zwischen verschiedenen, parallelen Vorträgen entscheiden zu müssen.

Der Tag beginnt mit der Vorstellung der Sponsoren: MarkLogic, ExistSolutions, Oxygen (Version 14.2. kommt nächste Woche).

Michael Kay: Multi-user interaction using client-side XSLT

Warum sollten wir am Server statisches XML bereitstellen und im Browser mittels XSLT 2.0 aufbereiten? Michael Kay zeigt ein technologisches cooles Beispiel der Saxon-Dokumentation. Aber all dies könnte auch von Server-side Code erledigt werden?

Warum sollten wir XSLT verwenden, wenn wir auch gleich JavaScript verwenden können?

Es gibt einen offensichtliche Vorteil immer dann, wenn die Quelldaten in XML vorliegen, aber auch dann stellt sich die Frage, inwieweit ich dem Browser XML statt XHTML anbieten möchte, inwieweit ich Teile meiner Lösung (letztlich die XSLT-Programmierung) quasi öffentlich machen möchte.

Abel Braaksma: Efficient XML processing with XSLT 3.0 and higher order functions

Wow, der kommende Standard! Und »Effizienz«, eines meiner Lieblingsworte. Und »closures«, über die ich schon gehört habe… Was bedeutet das alles in einer Welt, in der nur wenige (wenn überhaupt) XSLT-2.0-Funktionen angekommen sind?

„?“ als neuer Operator zur Inline-Definition neuer Funktionen – wer hätt gedacht, dass es so einfach sein kann, die Syntax bestehender Umgebungen mit einem Zeichen so mächtig zu erweitern?

Spannend: Abrasoft wird dieses Jahr einen distributed streaming XSLT 3.0 processor veröffentlichen. Es wird interessant sein, wie sich weitere Mitspieler im doch übersichtlichen Markt der XSLT-Prozessoren auswirken. Und was distributed in diesem Zusammenhang bedeutet.

George Bina: An XML Solution for Legal Documents

Wie verwaltet eine Software-Firma die notwendigen, unterschiedlichen End User License Agreements? Natürlich per XML. Neben einem recht einfachen Schema für die Dokumente gibt es natürlich die zwei Typen von Wiederverwendung:

  • bedingte Ausgabe (Condition, Gültigkeiten) wird für einzelne Textteile verwendet: Über Publikationsprofile wird die Sichtbarkeit der Textabschnitte gesteuert.
  • referenzieren (importieren) von vorhandenen Fragmenten: per XInclude können ganz bestimmte Elemente des Schema wiederverwendet werden

Die nötigen Ergänzungen für OxygenXML zur Bearbeitung gibt es bei GitHub.

Q: Warum wurde nicht einfach DITA verwendet? A: Es wäre sehr viel aufwändiger gewesen, DITA geeignete anzupassen als eine Lösung mit 10 Elementen zu erstellen.

Gerrit Imsieke: Conveying Layout Information with CSSa

Die Beiträge von Gerrit Imsieke in der XSL List sind immer lesenswert!

Ein Zwischenformat für die Vermittlung von n Eingabeformaten zu m Ausgabeformaten reduziert den Bedarf an Konvertern von n×m auf n+m. Dabei müssen aber bestimmte (z.B. Layout-) Informationen „gerettet“ werden. Um das in der XML-Umgebung umzusetzen, sind XML-Attribute geeignet. In dem Zwischenformat, dass le-tex verwendet, landen diese Informationen in Elemente und Attribute in einem eigenen Namespace css:.

Die Erzeugung von IDML (das XML-Format für InDesign-Dokumente) lobt er zu Recht. Alles in allem ein überzeugender Use-Case für den Einsatz der X-Technologien.

Romain Deltour: XProc at the heart of an ebook production framework

Ich dachte, es würde auch ein Projekt gezeigt, aber es war nur eine abstrakte Vorstellung der Bausteine des im Titel genannten Frameworks. Am Ende – und das ich nicht abwertend gemeint – war dieser Vortrag eine weitere Werbung für XProc zum Aufbau von XML-basierten Verarbeitungs-Prozesse.

Patrick Gundlach: Fully automatic database publishing with the speedata Publisher

Jetzt geht es um XSL-FO++, also nicht XSL-FO, sondern das Tool basiert auf LuaTEX.

Die Aufgabe maximize page usage ist komplex für automatisch erzeugte PDF-Dokumente und mit XSL-FO nur schwer oder gar nicht möglich. Für derartige und andere „dynamische“ Regeln muss der Layout-Prozessor mit dem Renderer „reden“. Im Produkt speedata Publisher wird das Input-XML auf Basis spezieller Layoutbefehle (in XML formuliert) verarbeitet. Dabei kommen interaktive Konzepte zum Einsatz, die adaptives Layout ermöglichen.

In der Frage-Session geht es scheinbar primär darum, dass die XSL-FO Working Group beim W3C mangels Interesse eingeschlafen sei…

DeltaXML Ltd: Representing Change Tracking in XML Markup

Änderungsmarkierung ist schon länger eine Herausforderung und es ist mehr als nur die Änderungsanzeige nach dem Vergleich zweier Dokumente. Auf jeden Fall gibt es derzeit keinen Standard, wie Änderungen in Dokumenten markiert werden. So ein Standard, d.h. unabhängig von einem bestimmten XML-Vokabular, böte ein Vielzahl von Möglichkeiten. http://www.w3.org/community/change/ ist die Webseite der »Change Tracking Markup Community Group«.

DeltaXML zeigt neue Konstrukte um einen Hierachiewechsel abzubilden. Wenn zum Beispiel ein Wort im Text fett dargestellt wird, ergab sich bislang immer folgende umständliche Abbildung:

In diesem Satz ist ein fettesfettes Wort.

Aber wie soll eine derartig hinterlegte Änderung dann angezeigt werden?

Alex Milowski: Local Knowledge for In Situ Services

Im Kern geht es um das „semantische Web“, in dem durch bestimmte Auszeichnungen die Inhalte beliebiger Webseiten besser auswertbar werden. Die hier empfohlene Technik dazu ist RDFa. Die Beispiele zeigen auch die Möglichkeit Bilder in einer regelbasierenden Form zu kommentieren.

Die Versuche der Organisatoren, den Vortragenden zu langsameren Sprechen zu motivieren, waren nicht besonders erfolgreich.

John Snelson: RDF for the XML Enthusiast

Und noch einmal RDF – jetzt ohne „a“. Ein Tweet:

Uche Ogbuji @uogbuji Aah! A dozen years after the self-inflicted wound of #RDF-#XML, I’m finally at a conference where everyone uses a saner syntax 🙂


10.02.1998: Birth of XML


Uche Ogbuji: Introducing MicroXML

Uche beginnt – nach einem „Happy Birthday“ für XML – mit einem Rückblick, welche Formate als Konkurrenten zu XML in Stellung gebracht wurden. Die MicroXML Community reduziert die Optionen der XML-Spezifikation auf ein Minimum, im Kern bleibt well-formed XML ohne Namespaces übrig. Und daran entzündet sich die Diskussion, denn z.B. xsl: scheint so unvermeidbar zu sein…

So, für wen ist µXML dann gedacht? »It’s for those who just don’t give a damn anymore!« Also für alle, die genug Probleme mit den Komplikationen von XML hatten…

Vorschläge zur Abbildung z.B. des xsl-Namespace sind xsl.template oder xsl-template

Maik Stührenberg: Quo vadis XML?

Nach dem Appell zur Reduktion vom XML mehr oder weniger auf die 1.0-Recommendation folgt nun ein Beitrag, der einen Blick in die Zukunft verspricht. Natürlich beginnt es mit einem Rückblick… der in eine Vorstellung akademischer Konzepte führt, die auf XML mit mehr oder weniger Kompatibilität basieren. Der Vergleich des 15-jährigen XML-Standards mit einem Teenager war noch unmittelbar einsichtig, die Besonderheiten von XStandoff, LMNL, FtanML etc. sind wohl Lösungen für ganz bestimmte Herausforderungen.


(Leider musste ich mich um aktive Projekte kümmern, so dass ich die weiteren Beiträge nicht zusammenfassen konnte.)

Veröffentlicht unter XML/XSL | Kommentare deaktiviert für XML Prague 2013

Wähle drei Töpfe

Intelligenius

Jeder Topf hat vier Eigenschaften:

  • verschiedene Deckel: kein Deckel, flacher Griff, hoher Griff
  • verschiedene Farben: hell, gestreift, dunkel
  • verschiedene Zeichen: Ring, Kreuz, Doppelkreuz
  • verschiedene Zeichenanzahl: 1, 2 oder 3

Es sollen genau drei Töpfe so ausgewählt werden, dass für jede der vier Eigenschaften alle Töpfe entweder den gleichen Wert oder alle unterschiedliche Werte haben.

XML-Notation

Die Eigenschaften sind Attribute (zur Vereinfachung nenne ich diese a, b, c und d) und jedes Attribut muss einen von drei möglichen Werten annehmen (1, 2, 3).

<pots>
    <pot a="1" b="1" c="3" d="2"></pot>
    <pot a="1" b="1" c="3" d="3"></pot>
    <pot a="3" b="2" c="1" d="2"></pot>
    <pot a="1" b="3" c="2" d="1"></pot>
    <pot a="1" b="1" c="1" d="1"></pot>
    <pot a="2" b="2" c="1" d="2"></pot>
    <pot a="3" b="2" c="2" d="1"></pot>
    <pot a="3" b="2" c="1" d="1"></pot>
    <pot a="3" b="1" c="3" d="2"></pot>
    <pot a="3" b="1" c="1" d="1"></pot>
    <pot a="2" b="1" c="3" d="2"></pot>
    <pot a="3" b="2" c="3" d="3"></pot>
</pots>

Lässt sich die Lösung mit einem XPath-Ausdruck angeben? Nein, wohl nicht, und ich bin auch nur auf eine brute force-Lösung gekommen, die mir wenig elegant erscheint:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" 
  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  xmlns:my="my" 
  exclude-result-prefixes="#all">
  <xsl:output indent="yes" />

  <xsl:template match="pots">
    <xsl:variable name="a" as="node()*" select="my:triples(*, 'a')" />
    <xsl:variable name="b" as="node()*" select="my:triples(*, 'b')" />
    <xsl:variable name="c" as="node()*" select="my:triples(*, 'c')" />
    <xsl:variable name="d" as="node()*" select="my:triples(*, 'd')" />
    <result>
      <!-- only triples which are present for all attributes are returned -->
      <xsl:for-each select="$a[. = $b][. = $c][. = $d]">
        <xsl:sequence select="." />
      </xsl:for-each>
    </result>
  </xsl:template>

  <!-- this function returns all valid triples for a single attribute -->
  <xsl:function name="my:triples" as="node()*">
    <xsl:param name="nodes" as="node()+" />
    <xsl:param name="attr" as="xs:string" />

    <!-- look for common values -->
    <xsl:for-each select="$nodes">
      <xsl:variable name="t1" select="." />
      <xsl:for-each select="$t1/following-sibling::*[@*[name() eq $attr] eq $t1/@*[name() eq $attr]]">
        <xsl:variable name="t2" select="." />
        <xsl:for-each select="$t2/following-sibling::*[@*[name() eq $attr] eq $t1/@*[name() eq $attr]]">
          <triple>
            <xsl:value-of select="(my:pos($nodes, $t1), my:pos($nodes, $t2), my:pos($nodes, .))" />
          </triple>
        </xsl:for-each>
      </xsl:for-each>
    </xsl:for-each>

    <!-- look for distinct values -->
    <xsl:for-each select="$nodes">
      <xsl:variable name="t1" select="." />
      <xsl:for-each select="$t1/following-sibling::*[@*[name() eq $attr] ne $t1/@*[name() eq $attr]]">
        <xsl:variable name="t2" select="." />
        <xsl:for-each select="
              $t2/following-sibling::*[@*[name() eq $attr] ne $t1/@*[name() eq $attr] 
              and 
              @*[name() eq $attr] ne $t2/@*[name() eq $attr]]">
          <triple>
            <xsl:value-of select="(my:pos($nodes, $t1), my:pos($nodes, $t2), my:pos($nodes, .))" />
          </triple>
        </xsl:for-each>
      </xsl:for-each>
    </xsl:for-each>
  </xsl:function>

  <xsl:function name="my:pos" as="xs:string">
    <xsl:param name="nodes" as="node()+" />
    <xsl:param name="node" as="node()" />
    <xsl:value-of select="count($nodes[$node >> .]) + 1" />
  </xsl:function>

</xsl:transform>

Wer kann eine elegantere Lösung anbieten?

Veröffentlicht unter XML/XSL | Kommentare deaktiviert für Wähle drei Töpfe

25 Jahre Adobe Illustrator

Ich war nicht von Anfang an dabei, aber mit Adobe Illustrator 88 und Aldus PageMaker 3.0 aus dem Jahr 1988 begann ich Musiknotensatz zu optimieren und Liederbücher zusammenzustellen. Das mitgelieferte VHS-Video ist längst Bandsalat, aber bei Youtube lassen sich originale Einführungen von John Warnock bewundern:

Herzlichen Glückwunsch zum Geburtstag!

Adobe Anniversary Website


Splash-Screens von http://www.guidebookgallery.org/splashes

Veröffentlicht unter Sonstiges | Kommentare deaktiviert für 25 Jahre Adobe Illustrator

2000–2011: 12 Jahre FrameMaker-Spezialist

Sehr geehrte, liebe Kunden,

seit 1993 bin ich im Bereich der Technischen Dokumentation als Spezialist für Dokumentationstechnologie tätig. In den letzten zwölf Jahren in erster Linie als FrameMaker-Experte, seit ca. 2005 kamen XML-basierte Prozesse mit und ohne FrameMaker hinzu.

Ab Januar 2012 werde ich die Firma DOCUFY GmbH in Bamberg Weiterlesen

Veröffentlicht unter Sonstiges | Ein Kommentar

Textänderungen anzeigen

Ich habe das Tool XTC = XML Tree Compare von Martin Achtziger http://www.xmldifftool.com/ schon auf der tekom-Tagung vorgestellt und in meinem Blog erwähnt. Im praktischen Einsatz in Projekten geht es mittlerweile nicht um so banale Dinge wie die Performance (die mit der aktuellen Version 3.x gefühlt doppelt so schnell ist) sondern um die Feinheiten, die letzten Details.

Ein automatisch erstellter Vergleich ist immer um ein Vielfaches wirtschaftlicher als jedes vorstellbare manuelle Verfahren. Mit der einmaligen Anker-Technik verfügt das Tool über eine Funktion, die es ermöglicht, dass Blöcke anhand eindeutiger Kennungen einander sauber zugeordnet werden, und nicht ein neu eingeschobener Abschnitt 1.3 verzweifelt mit dem alten 1.3 verglichen wird, der ja jetzt die 1.4 ist. Auf diese Weise können auch größere Umstellungen erkannt werden und die Änderungsanzeige hält sich nicht mit Irrelevantem auf.

Bleibt die Anzeige gelöschtem, geändertem und neuem Text. Hier ist der Automat im Nachteil, weil er nicht weiß, wie wir tatsächlich geändert haben, was die Absicht war. Er kann nur den alten und neuen Satz (eigentlich: Textknoten) betrachten und technisch analysieren. Zum Einsatz kommt hier zunächst ein bekannter Algorithmus: Longest common substring.

Beispiele

V1: Der Absatz enthält ganz und gar nichts.
V2: Der Absatz enthält gar nichts.

Diff: Der Absatz enthält ganz und gar nichts.

Der längste gemeinsame Text ist der Textanfang bis einschließlich »ga«. Ideal wäre natürlich dies gewesen: Der Absatz enthält ganz und gar nichts. Aber dies ist für den Computer wohl kaum zu erkennen.

V1: Datentyp des Feldes, sofern Ausprägungen vorgebbar.
V2: Datentyp des Feldes, genau dann wenn Ausprägungen vorgebbar.

Diff: Datentyp des Feldes, sofer
genau dann wenn Ausprägungen vorgebbar.

Natürlich erschwert es auch hier die Lesbarkeit, dass vom Ende sowohl »sofern« als auch »wenn« mit einem »n« enden. Ideal wäre hier ein die Ausdehnung auf ganze Wörter: Datentyp des Feldes, sofern
genau dann wenn Ausprägungen vorgebbar.

Aber die Ausdehnung auf ganze Wörter kann auch unerwünscht sein, wenn zum Beispiel nur Anfangs- oder Endbuchstaben ergänzt oder Tippfehler korrigiert wurden:

V1: Die Erklärung war nicht hinrecihend.
V2: Die Erklärungen waren nicht hinreichend.

Diff: Die Erklärungen waren nicht hinreci
ichend.

Hier wäre die Ganzwortmethode wohl eher hinderlich: Die Erklärung
Erklärungen war
waren nicht hinrecihend
hinreichend.

Fragen

In meinen Augen stellen sich zwei Fragen:

  • Sollten Optimierungen beim Textvergleich vom Diff-Tool oder von einer nachgelagerten Aufbereitung durchgeführt werden?
  • Wie soll diese Optimierung aussehen?
Veröffentlicht unter XML/XSL | Verschlagwortet mit , | Kommentare deaktiviert für Textänderungen anzeigen

Gerade-ungerade Sudoku

Sudokulino

Auch als Sudokulino ist mir diese Form eines Sudoku begegnet. Naben den üblichen Bedingungen – jede Ziffer nur einmal pro Reihe und Spalte – gilt hier noch: Rechts, links, oben, unten benachbarte Zahlen dürfen keine Nachbarzahlen sein, sie müssen sich um mehr als 1 unterscheiden.

XML-Struktur

In Erinnerung an Michael Kays XSLT-Lösung des Rösselsprungs (»Knight’s Tour«) fassen wir das XML ganz einfach, indem wir alle Felder einfach der Reihe nach angeben.

<fields max="6">
 <field val="5"/><field /><field /><field /><field /><field val="2" />
 <field /><field /><field /><field /><field val="4" /><field val="6" />
 <field /><field val="5" /><field val="3" /><field /><field /><field />
 <field val="4"/><field /><field /><field /><field val="5" /><field />
 <field val="2"/><field val="6" /><field /><field /><field /><field />
 <field /><field /><field /><field /><field val="1" /><field val="3" />
</fields>

Jetzt benötigt es Methoden, um für ein beliebiges Feld festzustellen, welche Ziffern gültig sind. Damit lassen sich alle eindeutigen Zuordnungen durchführen und nach ein paar Runden ist das Quiz gelöst. Was aber, wenn es einmal keine eindeutige Lösung gibt?

Veröffentlicht unter XML/XSL | Kommentare deaktiviert für Gerade-ungerade Sudoku

FrameMaker 10.0.2 / 10.0.3

Nach weiteren fünf Monaten ist das zweite Patch-Release für FrameMaker 10 verfügbar. Fünf Monate sind seit dem Release vergangen und aus 10.0.1.402 wird 10.0.2.419. Weiterlesen

Veröffentlicht unter FrameMaker | Kommentare deaktiviert für FrameMaker 10.0.2 / 10.0.3