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=' ']