2009-12-29 10 views
3

Vu un fichier de configuration de NHibernate normal:XSLT fonctionne dans IE, pas dans Chrome ou Firefox

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="http://localhost/xmlStylesheets/nhibernate.xsl"?> 

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
    <session-factory> 
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> 
    <property name="dialect">NHibernate.Dialect.Oracle10gDialect</property> 
    <property name="connection.driver_class">NHibernate.Driver.OracleDataClientDriver</property> 
    <property name="connection.connection_string">Data Source=MyDB;User ID=MyUser;Connection Lifetime=0;Enlist=false;Pooling=true;Max Pool Size=100;Min Pool Size=0;Incr Pool Size=5;Decr Pool Size=1;Statement Cache Size=100;</property> 
    <property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property> 
    <property name="use_outer_join">true</property> 
    <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property> 
    <property name="show_sql">true</property> 
    </session-factory> 
</hibernate-configuration> 

J'ai créé une transformation xslt pour elle.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
       xmlns:h="urn:nhibernate-configuration-2.2"> 
    <xsl:template match="h:hibernate-configuration/h:session-factory"> 
    <html> 
     <head> 
     <title>Projects</title> 
     <link rel="Stylesheet" type="text/css" 
       href="http://localhost/xmlStylesheets/xml.css" /> 
     </head> 
     <body> 
     <div id="container"> 
      <div class="content" id="settings"> 
      <xsl:value-of select="count(h:property)" /> properties 
      <table class="grid"> 
       <thead> 
       <tr> 
        <th>Property</th> 
        <th>Value</th> 
       </tr> 
       </thead> 
       <tbody> 
       <xsl:for-each select="h:property"> 
       <tr> 
        <td><xsl:value-of select="@name" /></td> 
        <td><xsl:value-of select="." /></td> 
       </tr> 
       </xsl:for-each> 
       </tbody> 
      </table> 
      </div> 
     </div> 
     </body> 
    </html> 
    </xsl:template> 
</xsl:stylesheet> 

Cela fonctionne très bien dans IE, mais ne sera pas rendu en chrome ou firefox. Des idées quel est le problème?

Répondre

5

Votre serveur Web doit renvoyer le type mime correct pour la feuille xsl pour que cela fonctionne.

Mozilla requiert text/xml ou application/xml, comme spécifié dans le XSL FAQ. Il semblerait que le chrome serait également best served avec application/xml.

Comme c'est le cas de nombreuses fois, IE n'est pas aussi difficile que d'autres navigateurs et est heureux avec text/xsl.

+0

Intéressant. Je n'ai jamais rencontré un problème comme celui-ci, donc c'est bon de savoir que cela peut être un problème. Merci! –

+1

en outre, je naviguais directement dans le fichier. Une fois que je l'ai mis sur un serveur Web et que j'ai corrigé les types MIME, il fonctionne dans des navigateurs autres que les navigateurs. Merci! –

+1

pour moi 'text/xml' et' application/xml' ne fonctionnent pas en chrome. Il affiche uniquement un écran blanc. Pourriez-vous deviner la raison? – Manish

1

Cela fonctionne très bien pour moi dans l'opéra 10.10, chrome 4.0, firefox 3.6 et IE8. Je reçois cette sortie:

8 properties 
Property Value 
connection.provider NHibernate.Connection.DriverConnectionProvider 
dialect NHibernate.Dialect.Oracle10gDialect 
connection.driver_class NHibernate.Driver.OracleDataClientDriver 
connection.connection_string Data Source=MyDB;User ID=MyUser;Connection   Lifetime=0;Enlist=false;Pooling=true;Max Pool Size=100;Min Pool Size=0;Incr Pool Size=5;Decr Pool Size=1;Statement Cache Size=100; 
proxyfactory.factory_class NHibernate.ByteCode.Castle.ProxyFactoryFactory,   NHibernate.ByteCode.Castle 
use_outer_join true 
query.substitutions true 1, false 0, yes 'Y', no 'N' 
show_sql true