2009-02-13 18 views
12

प्राप्त करें क्या मौजूदा फ़ोल्डर पथ को xslt फ़ाइल से प्राप्त करने का कोई तरीका है?xslt फ़ाइल को वर्तमान फ़ोल्डर पथ

अन्य xml और xslt फ़ाइलों को ढूँढने के लिए इसकी आवश्यकता है। हमारे पास अलग-अलग ग्राहक फ़ोल्डर्स हैं और उन्हें सही फ़ाइलों को सफलतापूर्वक ढूंढने की आवश्यकता होगी।

चीयर्स

उत्तर

6

आप इसे xsl:param का उपयोग कर बाहर से स्टाइल शीट में भेज सकते हैं। फिर आपको यह निर्धारित करने की आवश्यकता है कि बाहर से बाहर आने पर वर्तमान पथ क्या है;)

3

नहीं ...
लेकिन आप शायद सापेक्ष URL का उपयोग और/या स्टाइलशीट में पैरामीटर प्रदान करने के द्वारा समस्या वैकल्पिक हल कर सकता है।

1

AFAIK नहीं (हालांकि आप इसे हमेशा ट्रांसफॉर्म के लिए एक पैरा के रूप में पास कर सकते हैं), लेकिन मुझे स्पष्ट नहीं है कि सापेक्ष पथ क्यों जीते हैं ' यहाँ आपके लिए काम नहीं करते हैं।

4

विंडोज पर MSXSL में, आप इस तरह एक स्क्रिप्ट एक्सटेंशन का उपयोग कर सकते हैं:

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
    xmlns:user="http://tempuri.org/msxsl" 
> 

    <msxsl:script language="JScript" implements-prefix="user"> 
<![CDATA[ 
var fso = new ActiveXObject("Scripting.FileSystemObject"); 

function getCurrentPath(){ 
    return fso.GetFolder(".").Path 
} 
]]> 
    </msxsl:script> 

    <xsl:template match="/"> 
    <xsl:value-of select="user:getCurrentPath()"/> 
    </xsl:template> 

</xsl:stylesheet> 

अन्य XSL प्रोसेसर बाह्य संसाधनों (स्क्रिप्टिंग भाषाओं समारोह पुस्तकालयों आदि) का उपयोग करने के लिए इसी तरह के तरीकों का समर्थन है, तो यह सिर्फ एक है उदाहरण।

+0

यह सुनिश्चित नहीं है कि यह क्यों मतदान किया गया था। यह वास्तव में काम करता है। – Tomalak

+2

इसके लिए खेद है। मैंने इसे गैर मानक विस्तार का उपयोग करने के लिए वोट दिया, लेकिन मेरा जवाब जोड़ने के बाद, मुझे एहसास हुआ कि मैंने वही बात सुझाई है। मुझे लगता है कि ऐसा करने के लिए कोई 'मानक' तरीका नहीं है। (पैराम का उपयोग करने के अलावा) –

+0

आपकी तर्क समझाने के लिए धन्यवाद, बहुत सराहना की। :-) – Tomalak

2

अधिकांश एक्सएसएलटी प्रोसेसर में, आप एक्सटेंशन के रूप में कस्टम फ़ंक्शन जोड़ सकते हैं। उदाहरण के लिए यहां Saxon's documentation यह कैसे करें।

4

क्या xslt फ़ाइल के भीतर से वर्तमान फ़ोल्डर पथ प्राप्त करने का कोई तरीका है?

यह अन्य XML और XSLT फ़ाइलों

किसी भी विस्तार कार्यों या यहाँ तक कि ऐसा करने के लिए मापदंडों के लिए कोई ज़रूरत नहीं पता लगाने के लिए की आवश्यकता है!

किसी भी रिश्तेदार एक <xsl:import> या <xsl:include> शिक्षा का href विशेषता में प्रयोग किया जाता URL को नवीनतम XSLT स्टाइलशीट का URL के आधार पर हल कर रहे हैं - यह केवल एक यूआरएल है, जो vlearly के रूप में कहा गया है की जरूरत है उपरोक्त प्रश्न में सच है। यह एक्सएसएलटी स्टाइलशीट आयात/निर्यात करने में बहुत सुविधाजनक है।

document()समारोह भी उसी तरह में एक रिश्तेदार URL का समाधान होगा, इस प्रकार anrelative यूआरएल का उपयोग कर किसी भी अतिरिक्त XML दस्तावेज सुलभ बनाने।

<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:f="http://fxsl.sf.net/" 
exclude-result-prefixes="xs xdt f" 
> 
<!-- 
     This module contains the FXSL versions of the "standard" XPath functions 

     These are intended as convenience functions, so that they can be passed 
     as parameters to other functions (e.g. to f:zipWith())     
     or curried and passed as parameters (e.g. to f:map())     
--> 

<xsl:import href="func-curry.xsl"/> 
<xsl:import href="func-compose-flist.xsl"/> 

<xsl:import href="func-standardArithmeticXpathFunctions.xsl"/> 
<xsl:import href="func-standardBooleanXpathFunctions.xsl"/> 
<xsl:import href="func-standardStringXpathFunctions.xsl"/> 
<xsl:import href="func-standardNodesXpathFunctions.xsl"/> 
<xsl:import href="func-standardSequencesXpathFunctions.xsl"/> 
<xsl:import href="func-standardAggregateXpathFunctions.xsl"/> 
<xsl:import href="func-standardDateTimeXpathFunctions.xsl"/> 
<xsl:import href="func-standardXSLTXpathFunctions.xsl"/> 
<xsl:import href="func-standardAxisXpathFunctions.xsl"/> 

</xsl:stylesheet> 
+0

आप आयात, शामिल, दस्तावेज़ और सापेक्ष पथ के बारे में बिल्कुल सही हैं। केवल मौजूदा निर्देशिका प्राप्त करने के लिए एक्सटेंशन या पैरामीटर सुझाए गए थे। –

4

यह अपने स्थापना के लिए काम कर सकते हैं:

<xsl:value-of select="system-property('user.dir')"/> 

अन्त में, यहाँan exampleकैसे इस सुविधा बड़े पैमाने पर एक बड़ा पुस्तकालय XSLT कार्य और टेम्प्लेट की (FXSL 2.x) में उपयोग किया जाता है

उदाहरण के लिए,

<xsl:value-of select="document(concat(system-property('user.dir'),'/',filename,'.xml'))//title[1]"/> 
संबंधित मुद्दे