2013-02-27 3 views
0

J'ai essayé pendant des heures maintenant mais je ne peux pas obtenir l'inclure pour travailler. Tout ce qui me reste est une page blanche. Prenez un coup d'oeil au code:xsl: inclure ne fonctionne pas

something.xsl

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="html" omit-xml-declaration="yes" /> 
    <xsl:output 
     doctype-public="-//WAPFORUM//DTD XHTML Mobile 1.0//EN" 
     doctype-system="http://www.wapforum.org/DTD/xhtml-mobile10.dtd"/> 

    <xsl:template match="/"> 
     <xsl:element name="html"> 
      <xsl:element name="head"> 
       <xsl:element name="title">Something</xsl:element> 
      </xsl:element> 

      <xsl:element name="body"> 
       <xsl:attribute name="onload"> 
        <xsl:text>initialize();</xsl:text> 
       </xsl:attribute> 

       <xsl:element name="div"> 
        <xsl:attribute name="id"> 
         <xsl:text>main</xsl:text> 
        </xsl:attribute>          
       </xsl:element>    

       <xsl:include href="blob.xsl" /> 

      </xsl:element> 

     </xsl:element> 

    </xsl:template> 

</xsl:stylesheet> 

blob.xsl

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="html" omit-xml-declaration="yes" /> 
    <xsl:output 
     doctype-public="-//WAPFORUM//DTD XHTML Mobile 1.0//EN" 
     doctype-system="http://www.wapforum.org/DTD/xhtml-mobile10.dtd"/> 

    <xsl:template match="*"> 
      <xsl:element name="div"> 
       <xsl:attribute name="id"> 
        <xsl:text>navoptions</xsl:text> 
       </xsl:attribute> 
      </xsl:element> 
    </xsl:template> 
</xsl:stylesheet> 

et le code php

<?php 
    $xml = new DOMDocument(); 
    $xml->load('file.xml'); 

    $xsl = new DOMDocument; 
    $xsl->load('something.xsl'); 

    $proc = new XSLTProcessor(); 
    $proc->importStyleSheet($xsl); 

    echo $proc->transformToXML($xml); 
?> 

Mise à jour: Ce est clairement pas aller n'importe où. En ce qui concerne mes recherches, vous ne pouvez pas importer plusieurs feuilles de style xsl lorsque vous utilisez PHP. D'un autre côté, quelqu'un sait-il si cela est possible en utilisant ColdFusion?

Répondre

0

Le processeur XSLTP ne sait probablement pas comment résoudre la ligne. Vous devez l'inclure manuellement ou donner un indice au XSLTProcessor.

http://php.net/manual/en/xsltprocessor.importstylesheet.php

code d'un commentaire qui devrait fonctionner:

<?php 

# LOAD XML FILE 
$XML = new DOMDocument(); 
$XML->load('data.xml'); 

# START XSLT 
$xslt = new XSLTProcessor(); 

# IMPORT STYLESHEET 1 
$XSL = new DOMDocument(); 
$XSL->load('template1.xsl'); 
$xslt->importStylesheet($XSL); 

#IMPORT STYLESHEET 2 
$XSL = new DOMDocument(); 
$XSL->load('template2.xsl'); 
$xslt->importStylesheet($XSL); 

#PRINT 
print $xslt->transformToXML($XML); 
?> 
+0

Essayé, tout ce qu'il fait est de charger la deuxième feuille de style seul. Le premier est ignoré. – Zizo47

+0

De même, lorsque j'ai essayé d'assigner les première et deuxième feuilles de style à différentes variables, j'ai de nouveau obtenu la page blanche. Le commentaire sur cette page indique en fait que le chargement de plusieurs feuilles de style n'est pas supporté. – Zizo47

2

xsl: include doit être un enfant direct de xsl: stylesheet.

Si votre processeur XSLT ne vous envoie pas de message d'erreur, vous avez besoin d'un meilleur processeur XSLT.

Questions connexes