কীভাবে sertোকানো যায় & nbsp; এক্সএসএলটি-তে


207

আমি কীভাবে .োকাতে পারি

 

একটি এক্সএসএলটি স্টাইলশিটে, আমি এই ত্রুটিটি পেতে থাকি:

এক্সএমএল বিশ্লেষণ ত্রুটি: অপরিবর্তিত সত্তা

মূলত আমি এক্সএসএলটি টেম্পলেটটিতে একটি নন ব্রেকিং স্পেস অক্ষর চাই।


2
আপনি & # xA0; & # 160; এখানে দেখুন stackoverflow.com/questions/7511214/...
user3766111

উত্তর:


336

 পরিবর্তে সত্তা কোড ব্যবহার করুন।

 একটি HTML "অক্ষর সত্তা রেফারেন্স"। এক্সএমএল-অবিচ্ছেদী স্থানের জন্য কোনও নামী সত্তা নেই, সুতরাং আপনি কোডটি ব্যবহার করুন  

উইকিপিডিয়া এক্সএমএল এবং HTML সত্ত্বা একটি তালিকা অন্তর্ভুক্ত , এবং আপনি শুধুমাত্র 5 "পূর্বনির্ধারিত সত্ত্বা" XML- এর আছে দেখতে পারেন, কিন্তু এইচটিএমএল 200. উপর রয়েছে আমিও হাতে বাতলান করব XSL কেও হয়; একটি স্থান তৈরি করা হচ্ছে (আরও & nbsp) যা চমৎকার উত্তর।


3
আমরা সম্প্রতি এমন পরিস্থিতিতে পৌঁছেছি যেখানে বেশ কয়েকটি এক্সএসএল এর মধ্যে একটিতে এই কৌশলটি নিয়ে কাজ করা বন্ধ করে দিয়েছিল এবং একটি অদ্ভুত চরিত্র দেখাতে শুরু করে। তবে আমি যদি ওয়াটারসোলের সিডিএটিএ প্রযুক্তি ব্যবহার করি তবে এটি কার্যকর হয়।

@ ব্রায়ানিন্ডেল, সম্ভবত এর অর্থ হ'ল আপনি ভুল সংখ্যার সত্তা রেফারেন্সটি ব্যবহার করেছেন, অর্থাৎ Šপরিবর্তে  , যা সর্বদা একটি ইউনিকোড অ-ব্রেকিং স্পেসে সমাধান করবে।
আবেল


<xsl: টেক্সট> & # 160; </ xsl: টেক্সট> এটি দুটি ক্ষেত্র পৃথক করে
মনশ রঞ্জন ডাকুয়া

1
লিঙ্কটি পচা হয়েছে।
GSerg

37

&#160;সত্যিই ভাল কাজ করে। যাইহোক, এটি এএনএসআই এনকোডিংগুলিতে সেই বিচিত্র অক্ষরের একটি প্রদর্শন করবে। <xsl:text>আমার জন্য সবচেয়ে ভাল কাজ।

<xsl:text> </xsl:text>

3
স্বীকৃত উত্তরটি ব্যবহার করে আমি আমার এক্সএমএল আউটপুটে একটি লাইন ব্রেকিং স্পেস দিয়ে শেষ করেছি (কমপক্ষে এটি ভিএস 2010 এর এক্সএমএল সম্পাদক হিসাবে দেখতে লাগল)। এই উত্তরটি ব্যবহার করে আমি ঠিক 1 স্থান পেয়েছি।
ম্যাথিজস ফ্লাইটসট্রা

1
@ ম্যাথিজ, এটি একটি স্থান, একটি ব্রেক-ব্রেক নয়, যা একই নয়। যদি ভিএস এটিকে ভুলভাবে দেখায়, আপনার এনকোডিংটি পরীক্ষা করুন (ভিএস সঠিকভাবে এটি দেখানোর পক্ষে পুরোপুরি সক্ষম এবং এটি স্বাধীনভাবে এনকোডিং করা উচিত, তাই সম্ভবত আপনি অন্য কোনও ভুল করছেন।
আবেল

25

কেউ এটিও করতে পারেন:

<xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>

2
প্রসেসর সমর্থন করে তবে এটিdisable-output-escaping কাজ করবে , যার এটির প্রয়োজন নেই এবং এটি এক্সএসএলটি ২.০ এ অবমাননা করা হয়েছিল এবং আরও অনেকগুলি 3.0 তে। এই সংস্করণগুলিতে আপনি xsl:character-mapক্রস-প্রসেসরের কাজ করার গ্যারান্টিযুক্ত সাথে একই প্রভাবটিতে পৌঁছাতে পারেন । এছাড়াও, &nbsp;এটি আউটপুটে একটি নামকৃত সত্তা রাখে, যা অবিচ্ছেদ্য স্থানের মতো অগত্যা নয় এবং প্রাপ্তির শেষেরটি অবশ্যই এই সত্তা ঘোষিত হতে হবে (এইচটিএমএলে এটি সাধারণত অন্তর্নিহিত হয়)।
আবেল

21

এটা ব্যবহার কর

<xsl:text disable-output-escaping="yes">&amp;</xsl:text>nbsp;

সম্পাদনা করুন: ডাউনভোটারদের সম্ভবত এটি যাচাই করা উচিত যা এটি প্রথমে কাজ করে (এটি হয় এবং সমস্যার সর্বাধিক সাধারণ সমাধান))


1
নিশ্চিত নয়, তবে আমি আমার পদ্ধতির পরীক্ষা করেছি এবং এটি কাজ করে, সুতরাং
ডাউনওয়েটি

2
এছাড়াও, অনুমোদিত উত্তরটি লিঙ্কযুক্ত পৃষ্ঠা অনুসারে সমস্ত পার্সারের পক্ষে বৈধ হবে না; সবেমাত্র একটি মাথা আপ
jugprinderDP

1
আমি আমার ডাউনভোটের কারণ আগে দিয়েছি, তবে যদি আমি এই উত্তরটি হ্রাস করতে পারি তবে কারণটি হবে - এটি ভুল প্রশ্নের উত্তর দেয়। ওপি স্পষ্টভাবে এক্সএসল্ট ব্যবহার করে অবিচ্ছেদ্য স্থানে কীভাবে রাখবে এবং আপনি এম্পারস্যান্ড-এনএসপিএস-সেমিকোলন সিকোয়েন্সটি কীভাবে রাখবেন তা উত্তর দিয়েছিলেন। এবং ডাউনভোটদের নিয়ে ঝগড়া করাও খুব কম কাজ। তবে সিরিয়াসলি, আপনি কি কখনও সিডিএটিএ সম্পর্কে বলেননি?
মাইকেল ক্রেলিন - হ্যাকার

1
ঠিক আছে, জগপ্রিন্ডারদীপ, আমি আমার নিম্নবিতাকে প্রত্যাহার করি, তবে এর বদলে দয়া করে আমার সাথে দেখা করুন একবার মানসিক আশ্রয় নেওয়ার পরে। (মনে রাখবেন যে নতুন কারণে আমি আপনাকে ডাউনটা ফিরিয়ে দিচ্ছি না)। তবে বুঝতে পারেন যে আপনি ভুল প্রশ্নের উত্তর দিয়েছেন। আমি মনে করি অন্য ডাউনটোটের পিছনে ঠিক সে কারণ ছিল।
মাইকেল ক্রেলিন - হ্যাকার

8
আপনি প্রাপ্তির শেষটি & nbsp; ঘোষণা করবে বলে গ্যারান্টি দিতে না পারায় আমিও হ্রাস পেয়েছি। আপনি যদি xslt + এইচটিএমএল নিয়ে কাজ করছেন তবে হ্যাঁ, এটি হ্যাক করার একটি উপায় এটি। তবে, আপনি যদি অন্য এক্সএমএল জেনারেট করার জন্য এক্সস্ল্ট ব্যবহার করেন, তবে এটি কেবল আপনার দিকে উড়ে যাবে।
ডগ

14

আপনি ফাইলটির শুরুতে এই সত্তার জন্য সংজ্ঞা যুক্ত করতে চাইতে পারেন (এক্সএমএল ঘোষণার নীচে):

<!DOCTYPE stylesheet [
<!ENTITY nbsp  "&#160;" >
]>

এছাড়াও আপনি আরও সত্তা যেমন Ntilde, Aacute, ইত্যাদি যুক্ত করতে পারেন


5

বিজয়ী হুগোর উত্তরের পাশাপাশি একটি এক্সএসএলটি ফাইলে সমস্ত পরিচিত চরিত্রের রেফারেন্স আইনী হওয়াও সম্ভব:

<!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>&amp; &nbsp; &ndash;</xsl:text>

<xsl:text disable-output-escaping="yes">একের তুলনায় এই পদ্ধতির ফলাফলের মধ্যেও কিছু পার্থক্য রয়েছে । পরেরটি &nbsp;সমস্ত ধরণের আউটপুট, এমনকি এর জন্য স্ট্রিং আক্ষরিক উত্পাদন করতে চলেছে <xsl:output method="text">এবং এটি আপনার ইচ্ছার থেকে আলাদা হতে পারে ... বিপরীতে, এক্সএসএলটি টেম্প্লেটের জন্য সংস্থাগুলি সংজ্ঞায়িত করা <!DOCTYPE ... <!ENTITY ...সর্বদা সাথে সামঞ্জস্যপূর্ণ আউটপুট উত্পাদন করবে আপনার xsl:outputসেটিংস

এবং সমস্ত চরিত্রের রেফারেন্স অন্তর্ভুক্ত করার সময়, এক্সএসএলটি ইঞ্জিনটিকে ইন্টারনেট থেকে অক্ষর সত্তার সংজ্ঞা আনতে বাধা দেওয়ার জন্য স্থানীয় সত্তা রিসলভারটি ব্যবহার করা বুদ্ধিমান হতে পারে। জ্যাকএক্সপি বা স্পষ্টত জালান-জে ব্যবহারকারীদের রিসলভারটি সঠিকভাবে ব্যবহারের জন্য জ্যালান-জের জন্য প্যাচ দরকার হতে পারে। প্যাচ ডাউনলোড এবং মন্তব্যের জন্য আমার ব্লগ এক্সএসএলটি, সত্তা, জাভা, জালান ... দেখুন


1
নোট করুন যে সম্প্রতি, ডাব্লু 3 কোনও স্বয়ংক্রিয় প্রক্রিয়া থেকে আগত হলে সেগুলি এবং অনুরূপ লিঙ্কগুলিকে খুব বেশি অনুরোধগুলি ব্লক করা শুরু করেছিল। স্থানীয়ভাবে বা আপনার সার্ভারে সেই ফাইলটি রাখুন এবং সেই অনুযায়ী URL টি সামঞ্জস্য করুন এবং আপনার ভাল হওয়া উচিত। এটির বাইরে, +1 এবং এইচটিএমএল নামের সত্ত্বা ব্যবহারের দুর্দান্ত সমাধান।
আবেল

একটি ভাল নোট, এবং সত্তা সংজ্ঞা সহ ফাইলের স্থানীয় অনুলিপি থাকার আরও একটি কারণও রয়েছে, অন্যথায় যদি ইন্টারনেট সংযোগ উপলব্ধ না হয় তবে এক্সএসএলটি প্রক্রিয়াটি ব্যর্থ হওয়ার সম্ভাবনা রয়েছে। জাভা বিশ্বে ইউআরএল হ্যাক করার দরকার নেই, কারণ কোনও এনটিটিআরসলভারের ব্যবস্থা করা সম্ভব , এবং অ্যাপাচি এক্সএমএল কমন্স রেজোলভার ভাল প্রার্থী হতে পারে। অন্যান্য প্রোগ্রামিং প্ল্যাটফর্মেও একই ধরণের কৌশল থাকতে পারে ...
সের্গেই উশাকভ


2

আপনি যখন নিম্নলিখিতগুলি ব্যবহার করেন (ছাড়াই disable-output-escaping!) আপনি একটি একক অবিচ্ছেদী স্থান পাবেন:

<xsl:text>&#160;</xsl:text>


4
আপনি প্রয়োজন হবে না disable-output-escapingএই জন্য
ইয়ান রবার্টস

2

এক্সএসএলটি স্টাইলশিটগুলি অবশ্যই এক্সএমএল সুগঠিত হওয়া উচিত। যেহেতু "&nbsp;"এক নয় পাঁচটি পূর্বনির্ধারিত এক্সএমএল সত্ত্বা , তা সরাসরি স্টাইলশীট মধ্যে অন্তর্ভুক্ত করা যাবে না। সুতরাং আপনার সমাধান ফিরে আসা আপনার ব্যবহার করা উচিত "&#160;"একটি নিখুঁত প্রতিস্থাপন "&nbsp;"

উদাহরণ:

<xsl:value-of select="$txtFName"/>&#160;<xsl:value-of select="$txtLName"/>

0

আপনি এটি ব্যবহার করতে পারেন:

<xsl:value-of select="'&amp;nbsp'"/>

& এর পরে অ্যাম্পটি মনে রাখবেন বা আপনি একটি ত্রুটি বার্তা পাবেন


এটি আউটপুট করবে &amp;nbsp;(ধরে নিলে আপনি সেমিকোলনকে সেখানে রেখেছিলেন), যা রেন্ডার করবে &nbsp;,, (এনবি-স্পেস) হিসাবে নয়।
আবেল

0

আমি এইচটিএমএল টেবিলের একটি খালি কক্ষে সীমানা প্রদর্শন করার চেষ্টা করছিলাম। খালি সেলগুলিতে নন-ব্রেকিং স্পেস ব্যবহারের আমার পুরানো কৌশলটি xslt থেকে কাজ করছে না। আমি একই প্রভাব সঙ্গে লাইন ব্রেক ব্যবহার। আপনি কেবল নন-ব্রেকিং স্পেসটি ব্যবহার করার চেষ্টা করছিলেন সে কারণেই আমি এটি উল্লেখ করছি, ঘরের সীমাটি চালু করার জন্য কোনও 'খালি' টেবিল কক্ষে কিছু সামগ্রী দেওয়া।

<br/>

আমার একই রকম দৃশ্য রয়েছে এবং এটি টেবিলের ঘরগুলি রেন্ডার করার ক্ষেত্রে কাজ করে বলে মনে হচ্ছে।
রিচার্ড মুর

0

ব্যবহার করার চেষ্টা করুন

<xsl:text>&#160;</xsl:text>

তবে এটি আপনি যে এক্সএসএলটি প্রসেসরটি ব্যবহার করছেন তার উপর নির্ভর করে: এক্সএসএলটি স্পেকের এটির জন্য রূপান্তর করার জন্য এক্সএসএলটি প্রসেসরের প্রয়োজন হয় না &nbsp;


0

যদিও উত্তরটি ইতিমধ্যে @ ব্র্যাবস্টার এবং অন্যরা সরবরাহ করেছেন।
আমি মনে করি আরও পুনরায় ব্যবহারযোগ্য সমাধান হ'ল:

<xsl:variable name="space">&#160;</xsl:variable>
...
<xsl:value-of select="$space"/>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.