styleincl_step_1.xslt
XInclude - Elemente für CSS- und Javascript-Verweise einsetzen
2013-06-27
Herbert
Schiemann
h.schiemann@herbaer.de
Die Zahl der Requests kann veringert werden,
indem CSS-Regeln und Javascript direkt in die Transformtion eingebunden werden.
Script einfügen
An der Stelle von Elementen der Form
<xsl:element name = "script">
<xsl:attribute name = "src">
<xsl:value-of select = "concat ($p_styleprefix, 'common.js')"/>
</xsl:attribute>
</xsl:element>
soll eingefügt werden:
<xsl:element name = "script">
<xsl:text><xi:include href = "tmpmin/common.js" parse = "text" encoding = "utf-8"
/></xsl:text>
</xsl:element>
CSS-Regeln einfügen
An der Stelle von Elementen der Form
<xsl:element name = "link">
<xsl:attribute name = "href">
<xsl:value-of select = "concat ($p_styleprefix, 'ixdesk.css')"/>
</xsl:attribute>
<xsl:attribute name = "rel">stylesheet</xsl:attribute>
</xsl:element>
soll eingefügt werden:
<xsl:element name = "style">
<xsl:text tm:placeholder="imageprefix"><xi:include
href = "tmpmin/ixdesk.css" parse = "text" encoding = "utf-8"
/></xsl:text>
</xsl:element>
Platzhalter für Text
Platzhalter für Text werden durch XSLT-Elemente ersetzt,
die den Text einsetzen.
Vorlagen für einfachen Text
Vorlagen für Listen
Komma-getrennte Liste der Namen der Dateien,
die nicht mit xi:include eingebunden werden sollen
Präfix des Pfades von temporären JavaScript- und CSS-Dateien
Pfad des XML-Dokuments mit den kurzen IDs der Platzhalter
Das Wurzelelement der kurzen ID-Werte
Die Zeichenkette zwischen den letzten beiden einfachen Anführungszeichen:
Die Eingabe concat ($p_styleprefix, 'ixdesk.css')
ergibt ixdesk.css
Die Wurzel
Verarbeitungsanweisungen auf Wurzel-Ebene werden kopiert.
Elemente werden kopiert.
Attribute werden kopiert.
Vorlage für ein Script-Element
Der Name einer Script-Datei (Javascript, CSS),
die aber nicht in der Liste $p_exclude enthalten ist.
Fügt ein xsl:text-Element mit einem xi:include-Element ein,
um eine Scriptdatei einzubinden.
text
utf-8
Vorlage für einen Stylesheet-Verweis
style
Platzhalter für Text (in verschiedenen Sprachen) werden trickreich behandelt.
Wo ein Platzhalter l:ph erscheint,
muss die Variable g_l (Wurzelelement der Lokalisierungsdatei)
definiert sein. Normalerweise ist es eine Top-Level-Variable,
aber es kann auch nötig sein, die Variable lokal zu deefinieren,
wenn nämlich die Sprache auf der obersten Ebene nicht feststeht.
Deswegen prüft diese Transformation, ob überhaupt irgendwo
eine Variable g_l existiert.
Wenn nicht, wird eine Top-Level-Variable eingefügt,
deren Wert das Wurzelelement der Lokalisierungsdatei ist.
Für die Lokalisierungsdaten und Platzhalter für Texte sollten im Idealfall
verschiedene Namensräume benutzt werden.
Wenn das Wurzelelement der Quelle einen Namensraumknoten für die Platzhalter enthält,
dann sollte das Wurzelelement der Ausgabe
einen Namensraumknoten für die Lokalisierungsdaten enthalten.
Da Namensraumknoten mittels XSTL umständlich zu handhaben sind,
benutze ich hier ein anderes Namensraumpräfix li (für Platzhalter),
das in der Ausgabe nicht erscheinen soll.
g_lang
l
/*/@xml:lang
contains($l, '-')
substring-before ($l, '-')
$l
g_l
document(concat('/local/local.xml.', $g_lang))
/l:localization
Platzhalter für Texte
$g_l/l:t[@id='
']