2014-05-07 3 views
1

J'ai plusieurs fichiers xsl qui doivent inclure un fichier xsl commun. Donc, au lieu d'inclure les fichiers javascript dans chacun d'entre eux, je voudrais créer un Common.xsl qui inclura les fichiers de script Java et tous les fichiers xsl l'incluront.
La question est de savoir comment faire cela?

J'ai essayé quelques méthodes utilisant notamment javascript fichier, mais sans succès, dans la console du navigateur je reçois des erreurs:
Uncaught ReferenceError: jQuery n'est pas défini
Uncaught ReferenceError: $ non est définie

On dirait que la jquery n'était pas incluse.
J'ai essayé de faire quelque chose comme ceci:Comment inclure le fichier xsl commun dans d'autres fichiers xsl?

<"script type="text/javascript" src="common.js" />
or

(function() { 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = "../jquery/jquery-1.9.1.min.js"; 

    document.getElementsByTagName('head')[0].appendChild(script) 
})(); 


Edit: Je répondu à ma question voir réponse ci-dessous.

Répondre

1

Je résolu mon problème par le code suivant à l'aide xsl au lieu de fichiers javascript:

J'ai créé un fichier Common.xsl qui inclut tous mes fichiers javascript communs.

Common.xsl

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template name="Common"> 
    <link rel="stylesheet" href="SiteRef_getCSS?CSSName=Site/site.css" type="text/css"/> 

    <script type="text/javascript" src="SiteRef_getJS?JSName=jquery/jquery-1.11.1.min.js"/> 
    <script type="text/javascript" src="SiteRef_getJS?JSName=Site/common.js"/> 
    <script type="text/javascript" src="SiteRef_getJS?JSName=Site/MessagesConstants.js"/> 
    <script type="text/javascript" src="SiteRef_getJS?JSName=Site/win_functions.js"/> 
    <script type="text/javascript" src="SiteRef_getJS?JSName=Site/resizeFunctions.js"/> 
</xsl:template> 



Sur chaque fichier xsl qui ont besoin de ces comprend j'ai ajouté les lignes suivantes:

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
<xsl:include href="common/Common.xsl"/> <!-- Here I include the Common.xsl --> 
    <xsl:template match="/Reflection"> 
    <xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "SiteRef_getCSS?CSSName=Site/xhtml1-transitional.dtd"></xsl:text> 
     <html> 
      <head> 
       <title><xsl:value-of select="Localization/ViewAbout"/></title> 

       <xsl:call-template name="Common"/> <!-- Here I apply the tamplate of the common includes --> 

        <body> 
        . 
        . 
        . 
        </body> 
    </xsl:template> 
</xsl:transform> 



Pour résoudre les inclure URI (voir xsl: include) dans mon serveur d'applications java je devais mettre en œuvre la résolution de URIResolver() fonction:

public class XslURIResolver implements URIResolver 
{ 
    private static final String XSL_PATH = System.getProperty("user.dir") + File.separatorChar + INetlayerConstants.c_UI_PATH + INetlayerConstants.c_XSL_PATH; 

@Override 
public Source resolve(String href, String base) throws TransformerException 
{ 
    DOMSource xslDomSource; 
    try 
    { 
     DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance(); 
     dFactory.setNamespaceAware(true); 

     DocumentBuilder dBuilder = dFactory.newDocumentBuilder(); 

     InputStream in = new FileInputStream(XSL_PATH + href); 
     InputSource xslInputSource = new InputSource(in); 

     Document xslDoc = dBuilder.parse(xslInputSource); 
     xslDomSource = new DOMSource(xslDoc); 
     xslDomSource.setSystemId(XSL_PATH + href); 
     return xslDomSource; 
    } 
    catch (ParserConfigurationException e) 
    { 
     e.printStackTrace(); 
    } 
    catch (SAXException e) 
    { 
     e.printStackTrace(); 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 

    return null; 
} 
} 



Et puis avant la transformation, j'ai réglé l'URIResolver:

TransformerFactory tFactory = TransformerFactory.newInstance(); 
tFactory.setURIResolver(new XslURIResolver()); 


C'est à ce sujet, il aide quelqu'un espère ...

0
<xsl:element name="script"> 
     <xsl:attribute name="src">common.js</xsl:attribute> 
     /* common code */ 
    </xsl:element> 

Cela devrait faire l'affaire

+0

Mais vous pouvez utiliser la même approche pour pointer directement vers la jquery – stwissel