2008-09-15 21 views
14

एक्सएमएल (Google क्रोम या आईई 7) को बदलने के लिए ब्राउज़र का उपयोग करते समय क्या यूआरएल के माध्यम से एक्सएसएलटी स्टाइलशीट में पैरामीटर पास करना संभव है?XML को बदलने के लिए ब्राउज़र का उपयोग करते समय URL के माध्यम से XSLT को पैरामीटर पास करना संभव है?

उदाहरण:

data.xml

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="sample.xsl"?> 
<root> 
    <document type="resume"> 
     <author>John Doe</author> 
    </document> 
    <document type="novella"> 
     <author>Jane Doe</author> 
    </document> 
</root> 

sample.xsl

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:fo="http://www.w3.org/1999/XSL/Format"> 

    <xsl:output method="html" /> 
    <xsl:template match="/"> 
    <xsl:param name="doctype" /> 
    <html> 
     <head> 
      <title>List of <xsl:value-of select="$doctype" /></title> 
     </head> 
     <body> 
      <xsl:for-each select="//document[@type = $doctype]"> 
       <p><xsl:value-of select="author" /></p> 
      </xsl:for-each> 
     </body> 
    </html> 
</<xsl:stylesheet> 

उत्तर

3

आप XSLT सर्वर साइड उत्पन्न कर सकते हैं, भले ही परिवर्तन ग्राहक है पक्ष।

यह आपको पैरामीटर को संभालने के लिए गतिशील स्क्रिप्ट का उपयोग करने की अनुमति देता है।

उदाहरण के लिए, आपके द्वारा निर्दिष्ट कर सकता है:

<?xml-stylesheet type="text/xsl"href="/myscript.cfm/sample.xsl?paramter=something" ?> 

और फिर myscript.cfm में आप उत्पादन XSL फ़ाइल, लेकिन गतिशील स्क्रिप्ट क्वेरी स्ट्रिंग पैरामीटर से निपटने के साथ (यह अलग-अलग होगी हैं जो पटकथा भाषा आप पर निर्भर करता है उपयोग)।

+4

भाग प्रश्न के दो होगा यह तभी संभव क्लाइंट साइड है:

xmlDoc.documentElement.setAttribute("myparam",getParameter("myparam")) 

और जावास्क्रिप्ट समारोह इस प्रकार है? – user9547

6

दुर्भाग्यवश, नहीं - आप केवल क्लाइंट-साइड पर एक्सएसएलटी के पैरामीटर से गुजर नहीं सकते हैं। वेब ब्राउज़र एक्सएमएल से प्रसंस्करण निर्देश लेता है; और सीधे इसे एक्सएसएलटी के साथ बदल देता है।


क्वेरीस्ट्रिंग यूआरएल के माध्यम से मूल्यों को पार करना संभव है और फिर उन्हें जावास्क्रिप्ट का उपयोग करके गतिशील रूप से पढ़ना संभव है। हालांकि ये एक्सएसएलटी (एक्सपीएथ एक्सप्रेशन) में उपयोग करने के लिए उपलब्ध नहीं होंगे - क्योंकि ब्राउज़र पहले ही एक्सएमएल/एक्सएसएलटी को बदल चुका है। वे केवल प्रस्तुत एचटीएमएल आउटपुट में इस्तेमाल किया जा सकता है।

6

बस एक्सएमएल स्रोत फ़ाइल में एक विशेषता के रूप में पैरामीटर जोड़ें और इसे स्टाइलशीट के साथ एक एटिब्यूट के रूप में उपयोग करें।

//Get querystring request paramter in javascript 
function getParameter (parameterName) { 

    var queryString = window.top.location.search.substring(1); 

    // Add "=" to the parameter name (i.e. parameterName=value) 
    var parameterName = parameterName + "="; 
    if (queryString.length > 0) { 
     // Find the beginning of the string 
     begin = queryString.indexOf (parameterName); 
     // If the parameter name is not found, skip it, otherwise return the value 
     if (begin != -1) { 
     // Add the length (integer) to the beginning 
     begin += parameterName.length; 
     // Multiple parameters are separated by the "&" sign 
     end = queryString.indexOf ("&" , begin); 
     if (end == -1) { 
     end = queryString.length 
     } 
     // Return the string 
     return unescape (queryString.substring (begin, end)); 
    } 
    // Return "null" if no parameter has been found 
    return "null"; 
    } 
}