Frage

Ich baue eine Website, das XSL-Stylesheets verwendet, und ich bin eine kleine Bibliothek von nützlichen Funktionen in einem util Sheet, die anderen Blätter Aufbau importieren mit

<xsl:import href="util" />

an der Spitze von jedem Blatt. Das funktioniert nicht in Google Chrome, da es nicht xsl unterstützt: Import noch. Kann jemand schreiben Sie mir bitte ein Stylesheet, das ich auf der Server-Seite ausgeführt werden kann, der die xsl liest: Importzeile und importieren Sie die entsprechenden Sheet vor seiner gesendet an den Client

War es hilfreich?

Lösung

Ich würde so etwas wie die folgenden tun, die den Stylesheet server kombinieren, bevor es zu Chrome bekommt. Der erste Schritt ist vorhanden, weil xsl:import als Ersatz für alle Orte mit den importierten Stylesheets nicht das gleiche ist.

  1. Alle ersetzen xsl:import mit xsl:include (Import Priorität nicht anwendbar ist xsl:include, so können Sie Ihren Code und die Verwendung Prioritäten statt ändern müssen)
  2. Verwenden Sie die serverseitige Sheet unter ihnen in eine verschmelzen vor dem Servieren
  3. Warten Sie ein paar Wochen (kann Monate). Ich habe ein Update für Chrome erstellt und bin zur Arbeit mit dem Entwickler-Team des Update in die Build enthalten.
<xsl:template match="node()">
    <xsl:copy>
       <xsl:copy-of select="@*"/>
       <xsl:apply-templates select="node()"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="xsl:include">
   <!-- you'll probably want to be a bit more restrictive here -->
   <xsl:copy-of select="document(@href)/xsl:stylesheet/*" />
</xsl:template>

Update: Nur ein Hinweis:. Die Chrome Fehler erscheint in Safari zu

Andere Tipps

Sie könnte es in Python tun mit der libxml2 und libxslt Module ... nicht alle Ihrer Arbeit für Sie zu tun, aber mit so etwas wie dem Start-:

import libxml2, libxslt

styledoc = libxml2.parseFile("page.xsl")
style = libxslt.parseStylesheetDoc(styledoc)
doc = libxml2.parseFile("somefile.xml")
result = style.applyStylesheet(doc, None)

Dann einfach die Sache dient wieder aus.

Versuchen Sie so etwas wie dies in php:

<?php
$sXml  = "<xml>";
$sXml .= "<testtag>hello tester</testtag>";
$sXml .= "</xml>";

# LOAD XML FILE
$XML = new DOMDocument();
$XML->loadXML( $sXml );

# START XSLT
$xslt = new XSLTProcessor();
$XSL = new DOMDocument();
$XSL->load( 'xsl/index.xsl', LIBXML_NOCDATA);
$xslt->importStylesheet( $XSL );
#PRINT
print $xslt->transformToXML( $XML );
?>

http://www.w3.org/TR/xslt#literal -Ergebnis-Element zeigt, wie das Duplikat-xsl-Namespace-Problem zu lösen, wenn einen XSL-Stylesheet zu schreiben, die Ihren bestehenden XSL-Stylesheet in einen XSL-Stylesheet mit dem <xsl:import>s erweitert transformiert.

Seien Sie vorsichtig, aber über den Unterschied zwischen <xsl:import> und <xsl:include>.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top