मैं कैसे सम्मिलित कर सकता हूँ
XSLT स्टाइलशीट में, मुझे यह त्रुटि मिलती रहती है:
XML पार्सिंग त्रुटि: अपरिभाषित इकाई
अनिवार्य रूप से मुझे XSLT टेम्पलेट में एक गैर ब्रेकिंग स्पेस कैरेक्टर चाहिए।
मैं कैसे सम्मिलित कर सकता हूँ
XSLT स्टाइलशीट में, मुझे यह त्रुटि मिलती रहती है:
XML पार्सिंग त्रुटि: अपरिभाषित इकाई
अनिवार्य रूप से मुझे XSLT टेम्पलेट में एक गैर ब्रेकिंग स्पेस कैरेक्टर चाहिए।
जवाबों:
 
इसके बजाय इकाई कोड का उपयोग करें ।
एक HTML "चरित्र इकाई संदर्भ" है। XML में गैर-ब्रेकिंग स्पेस के लिए कोई नामांकित इकाई नहीं है, इसलिए आप कोड का उपयोग करते हैं  
।
विकिपीडिया में XML और HTML संस्थाओं की एक सूची शामिल है , और आप देख सकते हैं कि XML में केवल 5 "पूर्वनिर्धारित संस्थाएँ" हैं, लेकिन HTML में 200 से अधिक हैं। मैं XSL में एक स्थान (& nbsp;) बनाने की ओर भी इशारा करूँगा जिसमें है शानदार जवाब।
Š
इसके बजाय  
, बाद वाला जो हमेशा एक यूनिकोड गैर-ब्रेकिंग स्पेस को हल करेगा।
 
वास्तव में अच्छी तरह से काम करता है। हालांकि, यह एएनएसआई एन्कोडिंग में उन अजीब पात्रों में से एक को प्रदर्शित करेगा। <xsl:text>
मेरे लिए सबसे अच्छा काम किया।
<xsl:text> </xsl:text>
एक भी ऐसा कर सकता है:
<xsl:text disable-output-escaping="yes"><![CDATA[ ]]></xsl:text>
disable-output-escaping
, जिसे इसकी आवश्यकता नहीं है और इसे एक्सएसएलटी 2.0 में और अधिक 3.0 में चित्रित किया गया था। इन संस्करणों में आप xsl:character-map
क्रॉस-प्रोसेसर काम करने की गारंटी के साथ समान प्रभाव तक पहुंच सकते हैं । इसके अलावा, यह
आउटपुट में एक नामित इकाई रखता है , जो जरूरी नहीं कि एक गैर-ब्रेकिंग स्पेस के समान हो और प्राप्त करने वाले छोर पर इस इकाई को घोषित किया जाना चाहिए (HTML में यह आमतौर पर निहित है)।
इसे इस्तेमाल करो
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
संपादित करें: डाउनवोटर्स को संभवतः यह सत्यापित करना चाहिए कि यह पहले काम करता है (यह करता है, और समस्या का सबसे सामान्य समाधान है।)
आप फ़ाइल की शुरुआत में इस इकाई के लिए परिभाषा जोड़ना चाहते हैं (xml घोषणा के नीचे):
<!DOCTYPE stylesheet [
<!ENTITY nbsp " " >
]>
इसके अलावा आप और अधिक संस्थाओं को जोड़ सकते हैं जैसे कि Ntilde, Aacute, आदि।
विजेता ह्यूगो के उत्तर के अलावा , XSLT फ़ाइल में सभी ज्ञात वर्ण संदर्भ कानूनी रूप से प्राप्त करना संभव है, जैसे:
<!DOCTYPE stylesheet [
<!ENTITY % w3centities-f PUBLIC "-//W3C//ENTITIES Combined Set//EN//XML"
"http://www.w3.org/2003/entities/2007/w3centities-f.ent">
%w3centities-f;
]>
...
<xsl:text>& –</xsl:text>
<xsl:text disable-output-escaping="yes">
एक की तुलना में इस दृष्टिकोण के परिणाम में भी कुछ अंतर है । उत्तरार्द्ध
सभी प्रकार के आउटपुट के लिए, जैसे कि इसके लिए भी स्ट्रिंग शाब्दिक उत्पादन करने जा रहा है <xsl:output method="text">
, और यह आपकी इच्छा के अनुसार भिन्न हो सकता है ... इसके विपरीत, XSLT टेम्पलेट के लिए परिभाषित इकाइयाँ प्राप्त <!DOCTYPE ... <!ENTITY ...
करना हमेशा आउटपुट के अनुरूप होगा। आपकी xsl:output
सेटिंग्स
और जब सभी चरित्र संदर्भों को शामिल किया जाता है, तो XSLT इंजन को इंटरनेट से वर्ण इकाई परिभाषाओं को लाने के लिए स्थानीय इकाई रिज़ॉल्वर का उपयोग करना बुद्धिमान हो सकता है। JAXP या स्पष्ट Xalan-J उपयोगकर्ताओं को Xalan-J के लिए रिज़ॉल्वर का सही उपयोग करने के लिए एक पैच की आवश्यकता हो सकती है। पैच डाउनलोड और टिप्पणियों के लिए मेरा ब्लॉग XSLT, इकाइयाँ, जावा, Xalan ... देखें ।
जब आप निम्नलिखित का उपयोग करते हैं (बिना disable-output-escaping
!) आपको एक एकल गैर-ब्रेकिंग स्पेस मिलेगा:
<xsl:text> </xsl:text>
disable-output-escaping
इस के लिए
XSLT स्टाइलशीट को अच्छी तरह से गठित XML होना चाहिए। चूंकि पांच पूर्वनिर्धारित XML संस्थाओं में से " "
एक नहीं है , इसलिए इसे सीधे स्टाइलशीट में शामिल नहीं किया जा सकता है। इसलिए आपके समाधान पर वापस आना आपके " "
लिए एक सही प्रतिस्थापन है जिसका " "
आपको उपयोग करना चाहिए।
उदाहरण:
<xsl:value-of select="$txtFName"/> <xsl:value-of select="$txtLName"/>
मैं एक HTML तालिका में एक खाली सेल पर सीमाओं को प्रदर्शित करने की कोशिश कर रहा था। खाली कक्षों में गैर-ब्रेकिंग स्पेस का उपयोग करने की मेरी पुरानी चाल xltlt से काम नहीं कर रही थी। मैंने उसी प्रभाव के साथ लाइन ब्रेक का उपयोग किया। मैं सिर्फ इस बात का उल्लेख करता हूं कि जिस कारण से आप गैर-ब्रेकिंग स्पेस का उपयोग करने की कोशिश कर रहे थे, वह सेल बॉर्डर को चालू करने के लिए 'खाली' टेबल सेल को कुछ सामग्री देना था।
<br/>
उपयोग करने का प्रयास करें
<xsl:text> </xsl:text>
लेकिन यह आपके द्वारा उपयोग किए जा रहे XSLT प्रोसेसर पर निर्भर करता है: XSLT कल्पना को इसे "
" में बदलने के लिए XSLT प्रोसेसर की आवश्यकता नहीं होती है ।
हालाँकि उत्तर @brabster और अन्य लोगों द्वारा पहले ही उपलब्ध करा दिया गया है।
मुझे लगता है कि अधिक पुन: प्रयोज्य समाधान होगा:
<xsl:variable name="space"> </xsl:variable>
...
<xsl:value-of select="$space"/>