2009-04-22 11 views
5

मैं मदद करने के लिए कुछ गुणवत्ता आश्वासन परीक्षकों उपयोगी डिबगिंग जानकारी सबमिट जब वे मुद्दों के पार चलो एक बुकमार्कलेट लिखने की कोशिश कर रहा हूँ। वर्तमान में मैं एक यूआरएल में window.location सेट कर सकता हूं जो इस डीबगिंग जानकारी प्रदान करता है, लेकिन यह संसाधन एक एक्सएमएल-स्टाइलशीट प्रोसेसिंग निर्देश वाला एक्सएमएल दस्तावेज़ है।वहाँ ब्राउज़रों की अनदेखी की है या XML- स्टाइलशीट प्रोसेसिंग निर्देश ओवरराइड करने के लिए कोई तरीका है?

यह वास्तव में अधिक सुविधाजनक होगा यदि परीक्षक कच्चे एक्सएमएल डेटा को सादे पाठ के रूप में देख सकें, या आईई और फ़ायरफ़ॉक्स के लिए डिफ़ॉल्ट एक्सएमएल प्रतिपादन देख सकें।

किसी को अक्षम या एक XML दस्तावेज के अंदर प्रदान की एक्सएमएल-स्टाइलशीट निर्देशों ओवरराइड करने के लिए एक तरह से पता है, इंटरनेट एक्सप्लोरर या फ़ायरफ़ॉक्स का उपयोग कर?

संपादित करें: मैं इस सवाल पर एक इनाम खोल दिया है। आवश्यकताएँ: केवल

  • क्लाइंट-साइड कोड, कोई उपयोगकर्ता के हस्तक्षेप की अनुमति दोनों IE और Firefox के लिए
  • समाधान की जरूरत (वे विभिन्न समाधान हो सकता है)
  • स्टाइलशीट प्रसंस्करण अक्षम और पाठ के रूप में यह प्रतिपादन स्वीकार्य
  • है
  • एक कस्टम XSL साथ अधिभावी स्टाइलशीट प्रसंस्करण स्वीकार्य
  • ब्राउज़र डिफ़ॉल्ट एक्सएमएल स्टाइलशीट साथ एक्सएमएल प्रतिपादन है स्वीकार्य है

उत्तर

3

संपादित: बहुत बुरा है, हालांकि सभी पूर्वावलोकन में ठीक लग रहा था, क्लिक करने योग्य उदाहरण गंदगी बातें करने लगते हैं ... हो सकता है कि लेआउट के इतिहास में ठीक है।

मैंने सुना है, लेकिन आईई के लिए मान्य नहीं कर सकता, कि आईई और फ़ायरफ़ॉक्स दोनों "दृश्य-स्रोत:" छद्म प्रोटोकॉल का समर्थन करते हैं। मैक पर फ़ायरफ़ॉक्स वास्तव में इसे समझता है, लेकिन सफारी नहीं करता है।

निम्न बुकमार्कलेट में निर्दिष्ट the XSLT transformation को ट्रिगर नहीं करेगा। और हालांकि फ़ायरफ़ॉक्स इस प्रस्तुत करना कुछ रंगों का उपयोग करेगा, यह डिफ़ॉल्ट परिवर्तन सामान्यत: XML without any XSLT के लिए प्रयोग करेंगे (हां, तो स्रोत-देखें का परिणाम एक खुलने और बंधनेवाला दस्तावेज़ पेड़ कि फ़ायरफ़ॉक्स सामान्य रूप से दिखाई देते हैं उपज नहीं है) पर अमल नहीं करता है:

javascript:(function(){ 
    var u = 'http://www.w3schools.com/xsl/cdcatalog_with_ex1.xml'; 
    var w = window.open(); 
    w.document.location.href = 'view-source:' + u; 
})() 

अजाक्स का उपयोग कर दस्तावेज़ लाने पर एक alertoneporter तक सीमित नहीं है, लेकिन इसे एक नई विंडो में भी प्रदर्शित कर सकता है। फिर:

javascript:(function(){ 
    var u = 'http://www.w3schools.com/xsl/cdcatalog_with_ex1.xml'; 

    var w = window.open(); /* open right away for popup blockers */ 

    var x = new XMLHttpRequest(); 
    x.open('GET', u, true); 
    x.onreadystatechange = function(){ 
    if(x.readyState == 4){ 
     w.document.open('text/html'); 
     /* hack to encode HTML entities */ 
     var d = document.createElement('div'); 
     var t = document.createTextNode(x.responseText); 
     d.appendChild(t); 
     w.document.write('<html><body><pre>' 
      + d.innerHTML + '</pre></body></html>'); 
     w.document.close(); 
     w.focus(); 
    } 
    }; 
    x.send(null); 
})() 
0

जहाँ तक मुझे पता है, ऐसा करने का कोई तरीका नहीं है जिसे आप करने की कोशिश कर रहे हैं। मुद्दा यह है कि जावास्क्रिप्ट क्लाइंट साइड xml/xsl ट्रांसफॉर्म से xml के डोम को नहीं पढ़ सकता है। जहां तक ​​जावास्क्रिप्ट का संबंध है, यह एक सामान्य एचटीएमएल डोम पर निष्पादित कर रहा है।

हालांकि, कुछ webapp के प्रकार पर निर्भर आशा हो सकता है। आप वर्तमान यूआरएल के एक्सएमएल प्राप्त करने के लिए AJAX का उपयोग कर सकते हैं। जब तक कोई पोस्ट डेटा या कोई अन्य यादृच्छिकता न हो, तब तक इस विधि को ठीक काम करना चाहिए।

2

तुम सिर्फ दोनों ब्राउज़र में "स्रोत देखें" ऐसा नहीं कर सकते हैं?

+1

मैं परीक्षकों पर बहुत अधिक मानसिक प्रयास जगह नहीं करना चाहती: इस XSLT परिवर्तन है कि निर्दिष्ट किया जाता है आह्वान नहीं होंगे। :) लेकिन आश्चर्य की बात नहीं है कि यह अब तक का सबसे अच्छा विकल्प की तरह दिख रहा है। आईई 8 और फ़ायरफ़ॉक्स में –

+0

+1 स्रोत दर्शक एक्सएमएल प्रदर्शित करने का बहुत अच्छा काम करता है। –

+0

यदि आप उस ऐप को बदलना चाहते हैं जो स्रोत को देखता है (कहें, नोटपैड 2 पर) तो http://dotnet.org.za/thea/archive/2004/11/25/7933.aspx –

1

ब्राउज़र में सामग्री आउटपुट होने से पहले आप XML को प्री-प्रोसेस करने के लिए मध्यस्थ चरण का उपयोग कर प्रसंस्करण निर्देश से बच सकते हैं।

क्लाइंट-साइड सुझाव

  1. एक AJAX अनुरोध
  2. के माध्यम से प्रासंगिक XML दस्तावेज़ पुन: प्राप्त एक डोम में XML पार्स (ध्यान दें: एक डोम नहीं डोम)
  3. डीओएम को पार करें और ब्राउज़र में आवश्यक डेटा

सर्वर साइड सुझाव

सीधे उचित XML दस्तावेज़ का अनुरोध करने के बजाय, बजाय एक प्रॉक्सी स्क्रिप्ट है कि XML सामग्री से हटा सभी प्रोसेसिंग निर्देश, या वास्तव में सभी है कि आप नहीं चाहते हैं के लिए एक अनुरोध कर सकते हैं।

बजाय:

window.location = 'http://example.com/document.xml'; 

उपयोग:

window.location = 'http://example.com/proxy/'; 


पर स्क्रिप्ट http://example.com/proxy/ होगा:

  1. लोड document.xml
  2. उपयोग जो भी प्रक्रिया को दूर करने के लिए आवश्यक है एक्सएमएल सामग्री
  3. आउटपुट एक्सएमएल सामग्री
+0

में एक स्थान पट्टी डालना होगा, आप केवल एक अलग दस्तावेज़ प्रस्तुत करना या एक अलग दस्तावेज़ को इंगित करके उस छोटे से बना सकते थे। " –

2

जब तक आप क्रॉस डोमेन अनुमतियाँ, एक सरल ajax अनुरोध/XML स्रोत चाल करना होगा साथ चेतावनी बॉक्स से निपटने के लिए नहीं होगा, क्योंकि से ssing अनुदेश। IE के साथ संगत बनाने के लिए आपको xmlHttp घोषणा में थोड़ा सा जोड़ना होगा।

<html> 
<body> 

<script language="JavaScript"> 
function ajaxFunction() 
{ 

var xmlHttp=new XMLHttpRequest();; 

    xmlHttp.onreadystatechange=function() 
    { 
    if(xmlHttp.readyState==4) 
     { 
     alert(xmlHttp.responseText); 
     } 
    } 
    xmlHttp.open("GET","YOURFILE.xml",true); 
    xmlHttp.send(null); 

} 
</script> 

<a href="#" onclick="JavaScript:ajaxFunction()">Errors</a> 

</body> 
</html>