<TeXML/>·Files  
  :: nn :: nn ::    
     


<TeXML>TeX+XML</TeXML>

think {\TeX}
write <TeXML/>
view <?xml?>
print LaTeX
 
HowTo ?
THIS IS NOT IBM's NOR GetFO's TeXML !

Lokale Files frühestes Stadium !

Für die meisten Beispiele gilt: IExplorer und Opera konnte ich bisher kaum zur „Zusammen­arbeit“ bewegen. Das betrifft insbesondere die Anzeige mit der xml/css2-Kombination. Der xml/xsl/css-Code scheint nicht das Problem zu sein, denn die Gecko-basierten Browser (Mozilla, Firefox, Netscape, Galeon u.a.) rendern einigermaßen klaglos. Ebenso transformieren Mozilla 1+ (TransforMiiX), Saxon 6.5.2/3 (instant), LibXML2/xsltproc und Expat/Sablotron (1.95.6/0.98+). Auch Msxsl/Msxml (3.40/4.20) transformieren als “stand-alone”. MSIE6 tut es unter einigen Verrenkungen, die die Anzeige der Resultate betreffen. Von Mozilla und Saxon heißt es, daß sie sich recht genau an die Standards halten, und wenigstens dies versuche ich auch.

Ein besonderes Problem für einige Prozessoren (MSXSL, xsltproc, UXT) sind die in der internen DOCTYPE Untermenge (“Internal Subset”) definierten Entitäten, die XML-Code enthalten. Die entsprechenden Entity-Referenzen werden nicht immer vollständig aufgelöst – und dann auch nicht transformiert. Hier kann eine XML-Kanonisierung (Canonical XML, “C14N”) durch einen vorgeschalteten Parser (RXP, xmllint) helfen, der die Referenzen ersetzt, Default-Attribute und Attributwerte einsetzt, und die DOCTYPE-Deklaration beseitigt.

  1. TeXML-manual.html – Vorläufig das „Handbuch“ in XHTML/CSS.
  2. TeXML.dtdXML Doctype Definition für TeXML. Mit pro­viso­rischen “usage comments”. Es enthält auch namespace-Importe für xhtml, xlink und xml-events.
  3. TeXML.cssCSS-2 Stylesheet zur direkten Anzeige im Browser, z.B. mit „Mozilla 1+“. Häufig gebrauchte eigene Definitionen localDEF.css als Import.
  4. TeXML2TeX.xslXSLT Stylesheet transformiert TeXML nach text/plain (La)TeX. Getestet mit
    • Saxon 6.5.2/3 (instant)
    • Mozilla/Firefox 1.0 ff. (TransforMiiX)
    • Expat/Sablotron (1.95.6/0.98+)
    • LibXML2/LibXSLT/xsltproc (2.6.10/1.1.7)
    • MSXML (3.40+4.20) mit msxsl.exe [nicht MSIE]
    • MSXML (3.40+4.20) mit cscript.exe, Windows Script Host (WSH 5.6)
    • nach XML-c14n: Altova XSLT
    • nach XML-c14n: Unicorn XSLT (1.50)

  5. TeXML-HTpre.xslXSLT Stylesheet transformiert TeXML nach xHTML und <pre>embedded (La)TeX-code</pre>. Nur eine Variante von TeXML2TeX.xsl, die Syntax-Highlight ermöglicht.
  6. TeXML.ent – Bisher ignorieren Mozilla und Saxon(?) die externen Entitäten (Moz. die ganze DTD, IE dagegen liest alles!). Sie müssen in jeder Datei im DOCTYPE nochmals deklariert sein. Entitäten sind aber ungemein praktisch, denn sie können Zeichen und Code enthalten. Deshalb lohnt vorerst auch schon eine reine „Aufbewahrungs-Datei“.
    ENTITAGS Ein anderer Ansatz: Entitäten als (leere) Element-Tags mit eigenem Namensraum.
    • entitags.xml – ohne Stil und DTD; wird von *.xsl als Transformations-Datenbank verwendet. Bei Updates sollten die Attribut-Werte unbedingt „gleichwertig“ zu den Werten in entitags.mod bleiben.
    • entitags.modDTD-Modul, das von TeXML.dtd importiert wird. Streng gesehen überflüssig, da der ganze Aufwand nur gemacht ist für Browser, die die DTD eben nicht lesen. Aber eine Transformation ist natürlich schneller, wenn die schon vom Parser gelesenen und vorbelegten Attributwerte benutzt werden.
    • entitags.css – wird von TeXML.css importiert und zur Anzeige benötigt.
    • entitagX.xml – transformiert „sich selbst“ zu einem JavaScript-Array (für TeXML.js) und einem CSS2-Stylesheet (z.B. entitags.css). Entweder den entsprechenden Teil aus dem Browser-Fenster herauskopieren, oder je nach Stand-Alone-Prozessor den Parameter NN='JS' oder NN='CSS' setzen.
    • entitagX-HTpre.xml – ebenso, aber IE5/6+MSXML3 brauchen eben (zu) oft eine Sonderbehandlung, damit es auch da funktioniert.
    Letztlich bringt der Ansatz aber den nützlichen Nebeneffekt, daß diese „Zeichenkodierung“ vom Parser durchgereicht wird und später – im Stylesheet – beliebig verarbeitet werden kann.
  7. TeXML.js – Einige DOM/JavaScript Funktionen für den Zugriff auf XML-Dokumente. Teilweise nur experimentell.
    • xhtml:onload/onunload Event-Handler für das <TeXML>-Element.
    • einen simplen “Document-Object-Viewer” als Hilfe und Kontrolle für Node-Manipulationen.
    • Setzen einiger zentral verwalteter Standard-Links (mail, disclaimer, impressum usf.)
    • TeXML2TeX() ein halbwegs vollständiger Java­Script-Trans­formator: TeXML nach text/plain LaTeX ohne XSLT.
    • Auswertung einer URL-Query ?ss=file.css, um eine <?xml-stylesheet?> PI zu erzeugen. (s.u.)
    • makeTOC() erzeugt auto­matisch ein Inhalts­verzeichnis, falls irgendwo im Doku­ment die Attri­bute id="toc" und im Root-Element xhtml:onload="iniTeXML();" gesetzt sind.
    Während TeXML.js dazu gedacht ist, in einer TeXML-Datei geladen zu werden – und damit nebenbei in jeder Datei einen Selbst-Transformator zur Verfügung stellen kann – ist der folgende Script-Auszug auch für xHTML-Dateien und Browser, die XML nicht anzeigen und zugleich Script-fähig machen können.
  8. TeXML2TeX.js & TeXML2TeX.wsf – der Java­Script-Trans­formator aus TeXML.js in einer Version, die mit Mozilla und IExplorer (6+) funktioniert und gleichwertige Ergebnisse produziert. Dazu noch ein Kommandozeilen-Wrapper zum Gebrauch mit dem “Windows Script Host 5.6”. Für IE6+/WSH56 mußten natürlich einige fehlende DOM2-XML-Interfaces simuliert werden. Anwendung s.u.
    Als Nebenprodukt von vielleicht allgemeinerem Interesse ein WSH/JScript/MSXML-Interface zum XML-Parser und XSLT-Prozessor.

TeXML Test-Files

  1. TeXML.xml – Die „gute Absicht“ eines TeXML-Manuals in TeXML/XML, das bisher aber nur einigen Blindtext zur Demonstration enthält. Es importiert TeXML.css und benötigt zur Anzeige einen CSS-2 fähigen Browser; z.B. Mozilla. Mit “view page source” o.dgl. überzeuge man sich, ob es sich um TeXML handelt.
  2. TeXML-texmlxsl.xml – Gleiches Testfile (gleicher TeXML-Code), das stattdessen TeXML2TeX.xsl importiert und den TeX-Code als text/plain im Browser zeigt. Mit “select all | copy” kann man diesen über das Clipboard in einen beliebigen Editor übernehmen. Mit “view page source” überzeuge man sich, ob es sich um TeXML handelt.
    [FIXED: Trans­formation problemlos von file://localhost/..., aber nicht vom http://...-Server ??? Mit .htaccess den Mime-Type setzen.]
  3. TeXML-nostyles.xml – ohne jedes Stylesheet, das mit Explorer über das Standard-Stylesheet (IE: defaultss.xsl) ebenfalls in einen Node-Tree transformiert werden sollte. Ok mit IE6 bzw. msxml3-Parser, aber IE5 hat ein Problem mit den para­metrisierten namespaces der DTD.
  4. TeXML-nostyles.xml?ss=TeXML.css – erzeugt mittels DOM/JavaScript eine <?xml-stylesheet?> processing-instruction. Sinn machen eigentlich nur darstellende (nicht transformierende) Stylesheets. Dafür kann ein Stylesheet eigener Wahl zu eigenen Zwecken in der Adresszeile gesetzt werden, ohne das Quellfile verändern zu müssen.
    Zur besseren Anschaulichkeit „vor-transformierte“ oder exportierte Exemplare:
  5. TeXML-xhtmlpre.html – mit TeXML-HTpre.xsl, das den TeX-Code in xhtml/pre einbettet.
  6. TeXML-treeview.html – mit treeview.xsl (Autor: Dave Lindquist), das einen Node-Tree wie vom IE gewohnt erzeugt. Da Saxon die DTD liest, sind im Gegen­satz zu einer Mozilla-Trans­formation die Fix- und Default­werte integriert. Umgekehrt hat ein Style­sheet keinen Zugriff auf die DOCTYPE-Deklara­tion bzw. deren interne Unter­menge. Es bekommt vom vorgeschalteten XML-Parser also z.B. die Entity-Werte, nicht die Entities selbst). Deshalb ist auch dieser Knoten­baum kein voll­ständiges Abbild der Quell-Datei.
  7. TeXML-codeview.html – mit SciTE (“Scintilla Text Editor”) zu HTML exportierter TeXML-Quell-Code, das Folding und Syntax-Highlight bewahrt. Diesmal ein voll­ständiges, nicht unbedingt aktuelles, Abbild der Quell-Datei.

Transformation lokaler Files

  1. Praktische Versuche, erste Beispiele. Da ich meine lokalen TeX-Fonts&Styles nicht im Netz stehen habe, sind die xml-Files für sich nicht aus­reichend, um die ent­sprechenden pdf-Files zu erzeugen. Auch eine Online-Trans­formation nach TeX ohne JavaScript (!) ist noch nicht mög­lich, da alter­native Style­sheets nicht hin­reichend funktionieren und ich die Dateien nicht – wie oben – fast identisch doppelten Platz belegen lassen will.
  2. xslt.html [xslt.js] – eine „XSLTransfactory“ ab Mozilla 1.2.1+ und IE6+MSXML3: Experimente mit DOM/JavaScript- und XSLTrans­formationen.
    Dafür eine eigenständige Primitiv-Seite, der die zu transformierenden Dateien als URL-Query übergeben werden, wie folgend schon vorbereitet. Die Transformation muß nach Abschluß des Ladevorgangs noch eigens aktiviert werden.
  3. Allgemeines JavaScript-Interface zur XSLT-Engine für beliebige XML/XSL-Transformationen
     SieboldN121.xml
     SieboldN122.xml
     SieboldN123.xml
     SieboldN124.xml
     SieboldN125.xml
     SieboldN128.xml
     SieboldN16.xml
     SieboldN22.xml
     SieboldN23.xml
     SieboldN25.xml
     NobiliaireJapon.xml  (420 KB!)
    
  4. Spezielle non-XSLT Transformer-Funktion TeXML2TeX() für <TeXML/>-Nodes (automatisch aktiviert)
     SieboldN121.xml
     SieboldN122.xml
     SieboldN123.xml
     SieboldN124.xml
     SieboldN125.xml
     SieboldN128.xml
     SieboldN16.xml
     SieboldN22.xml
     SieboldN23.xml
     SieboldN25.xml
     NobiliaireJapon.xml  (420 KB!)
    
  5. Die „XSLTransfactory“ direkt benutzt. Sie öffnet für die Ergebnisse – wenn es welche gibt – ein neues Ziel-Fenster.
     TeXML.xml → plain (La)TeX-text
     TeXML.xml → xHTML/pre (La)TeX-text
     TeXML.xml → IE-like node tree
     SieboldN121.xml 
     SieboldN122.xml 
     SieboldN123.xml 
     SieboldN124.xml 
     SieboldN125.xml 
     SieboldN128.xml 
     SieboldN16.xml 
     SieboldN22.xml 
     SieboldN23.xml 
     SieboldN25.xml 
     NobiliaireJapon.xml  (420 KB!)
    

Externe Ressourcen

  1. w3c – Web-Standards, Technical Reports, Re­commen­dations
  2. Mozilla – Open Source WWW-Browser (XSLT ~ TransforMIIX)
  3. Saxon – Open Source XSLT Processor
  4. Expat, RXP – Open Source XML Library, XML-Parser
  5. LibXML2 – Open Source C-Library+Tools (xmllint, xsltproc): Gnome/XmlSoft & Win32/Binaries
  6. Sablotron – Ginger Alliance XSLT Processor (sabcmd)
  7. UXT – Unicorn XSLT Processor
  8. Einige Referenzen …
    IBM’s alphaWorks TeXML+Java/TeXMLatté “has been retired”
    (V1R4; Oct 29, 1999)
    Douglas Lovell’s TeXML: Typesetting XML with TeX
    (TUG-Artikel, ca. 177 KB, PDF)
    Oleg Paraschenko: GetFO’s TeXML+Python


2005 ff. ©|©|StUs