2010-02-27 10 views
1

J'ai un fichier xsl pour un fichier XML. L'emplacement des fichiers xml doit être configurable (c'est-à-dire en configurant le chemin href vers la feuille de style dans le xml) mais le xsl utilise des images et d'autres fichiers javaScript et doit y accéder. Le chemin est juste à côté du fichier de feuille de style, donc une fois que je peux obtenir le répertoire xsl, je peux y accéder. par exemple: dans mon xml J'ai:? Xml-stylesheet type = "texte/xsl" href = ". \ Files \ Style \ test.xsl"> Je veux à partir de l'xsl pour pointer vers ". \ Fichiers \ style » pour l'emplacement des images Hoe puis-je faireObtention du répertoire de la feuille de style à partir du fichier XSL - pour un emplacement xml configurable

+0

Voir la solution à votre problème :) –

+0

Astuce: Si la réponse fournie résout le problème, vous pouvez * * accepter en cliquant sur le coche en haut à gauche de la question. Vous pouvez également être en mesure de l'améliorer, en fonction des points que vous avez actuellement (je pense que vous devez avoir 50 points, afin d'avoir le droit d'upvote). :) –

+0

merci, J'ai encore besoin de votre aide :) J'ai un xsl trnafering à un html dans mon xsl J'ai quelques modèles et quelques fonctions de script java quelle est la bonne façon de transmettre l'information aux autres modèles et à la jScript -Est-ce problématique si j'ai dans le même fiel 2 modélisé avec match? parce que je n'ai pas réussi à atteindre le chemin. C'est peut-être une question de débutant, mais je suis assez nouveau dans ce domaine. J'apprécie votre aide – user271077

Répondre

1

Voici une solution XSLT 1.0 (XSLT 2.0 possède des fonctionnalités beaucoup plus puissants pour le traitement de la chaîne, comme des expressions régulières):

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text"/> 

<xsl:template match="processing-instruction()"> 
    <xsl:variable name="vpostHref" 
    select="substring-after(., 'href=')"/> 

    <xsl:variable name="vhrefData1" 
    select="substring($vpostHref,2)"/> 

    <xsl:variable name="vhrefData2" 
    select="substring($vhrefData1, 1, 
         string-length($vhrefData1)-1 
        )"/> 

    <xsl:call-template name="stripBackwards"> 
    <xsl:with-param name="pText" 
     select="$vhrefData2"/> 
    <xsl:with-param name="pTextLength" 
    select="string-length($vhrefData2)"/> 
    </xsl:call-template> 
</xsl:template> 

<xsl:template name="stripBackwards"> 
    <xsl:param name="pText"/> 
    <xsl:param name="pStopChar" select="'\'"/> 
    <xsl:param name="pTextLength"/> 

    <xsl:choose> 
    <xsl:when test="not(contains($pText, $pStopChar))"> 
    <xsl:value-of select="$pText"/> 
    </xsl:when> 
    <xsl:otherwise> 
    <xsl:variable name="vLastChar" 
     select="substring($pText,$pTextLength,1)"/> 
    <xsl:choose> 
     <xsl:when test="$vLastChar = $pStopChar"> 
     <xsl:value-of select="substring($pText,1,$pTextLength -1)"/> 
     </xsl:when> 
     <xsl:otherwise> 
     <xsl:call-template name="stripBackwards"> 
      <xsl:with-param name="pText" 
      select="substring($pText,1,$pTextLength -1)"/> 
      <xsl:with-param name="pTextLength" select="$pTextLength -1"/> 
      <xsl:with-param name="pStopChar" select="$pStopChar"/> 
     </xsl:call-template> 
     </xsl:otherwise> 
    </xsl:choose> 
    </xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 
</xsl:stylesheet> 

Lorsque cette transformation est appliquée au document XML suivant:

<?xml-stylesheet type="text/xsl" href=".\Files\Style\test.xsl"?> 
<t/> 

le résultat correct est produit:

.\Files\Style 
+0

Merci! ressemble exactement ce que je cherchais Je vais l'essayer – user271077