নাল এক্সএমএল উপাদান উপস্থাপনের সঠিক উপায় কী?


166

আমি nullবিভিন্ন উপায়ে প্রতিনিধিত্বকারী উপাদানগুলি দেখেছি :

উপাদানটি উপস্থিত রয়েছে xsi:nil="true":

 <book>
     <title>Beowulf</title>
     <author xsi:nil="true"/>
 </book>

উপাদানটি উপস্থিত রয়েছে, তবে খালি উপাদান হিসাবে উপস্থাপিত হয়েছে (যা আমি বিশ্বাস করি যে 'খালি' হওয়ার পরে ভুল এবং nullশব্দার্থগতভাবে আলাদা):

 <book>
     <title>Beowulf</title>
     <author/>
 </book>

 <!-- or: -->
 <book>
     <title>Beowulf</title>
     <author></author>
 </book>

ফিরে আসা মার্কআপে উপাদানটি মোটেও উপস্থিত নয় :

 <book>
     <title>Beowulf</title>
 </book>

উপাদানটির একটি <null/>শিশু উপাদান রয়েছে ( নীচে টিস্ট্যাম্পার থেকে ):

 <book>
     <title>Beowulf</title>
     <author><null/></author>
 </book>

এই জাতীয় nullমান উপস্থাপন করার জন্য কোনও সঠিক, বা প্রচলিত উপায় আছে ? উপরোক্ত উদাহরণগুলির চেয়ে অতিরিক্ত উপায় আছে?

উপরের উদাহরণগুলির জন্য এক্সএমএলটি সংশ্লেষিত, সুতরাং এর মধ্যে খুব বেশি দূরে পড়বেন না। :)

উত্তর:


121

xsi: শূন্যস্থানটি এমন কোনও মানের প্রতিনিধিত্ব করার সঠিক উপায় যা: DOM স্তর 2 কল getElementValue () জারি করা হয়, NULL মান প্রদান করা হয়। xsi: নীল কোনও সামগ্রী ছাড়াই একটি বৈধ উপাদান নির্দেশ করতে ব্যবহৃত হয় এমনকি যদি উপাদান উপাদান ধরণের সাধারণত খালি উপাদানগুলিকে মঞ্জুরি দেয় না।

যদি একটি খালি ট্যাগ ব্যবহার করা হয়, getElementValue () খালি স্ট্রিং ("") প্রদান করে যদি ট্যাগটি বাদ দেওয়া হয়, তবে কোনও লেখক ট্যাগ এমনকি উপস্থিত নেই। এটি 'শূন্য' হিসাবে সেট করার চেয়ে শব্দার্থগতভাবে পৃথক হতে পারে (উদাঃ "শিরোনাম" নির্ধারণের জন্য এটি নির্ধারণ করা হতে পারে যে বইটি কোনও সিরিজের সাথে সম্পর্কিত নয়, তবে সিরিজ বাদ দেওয়ার অর্থ এই হতে পারে যে সিরিজটি বর্তমান উপাদানটির জন্য একটি অযোগ্য উপাদান is)

থেকে: ডাব্লু 3 সি

এক্সএমএল স্কিমা: কাঠামোগুলি সিগন্যাল করার জন্য একটি প্রক্রিয়া প্রবর্তন করে যে কোনও উপাদানকে এমন কোনও বিষয়বস্তু থাকা সত্ত্বেও যখন কোনও উপাদান বৈধ হিসাবে গ্রহণ করা উচিত। বৈধ। হিসাবে গ্রহণ করা উচিত যা খালি সামগ্রীর প্রয়োজন হয় না বা প্রয়োজনীয়ভাবে অনুমতি দেয় না। মানটির সাথে এক্সসি: শূন্য বৈশিষ্ট্যটি থাকলে কোনও উপাদান সামগ্রী ছাড়াই · বৈধ · হতে পারে। লেবেলযুক্ত একটি উপাদান অবশ্যই খালি থাকতে হবে, তবে সংশ্লিষ্ট জটিল ধরণের দ্বারা অনুমোদিত হলে বৈশিষ্ট্য বহন করতে পারে।

একটি ব্যাখ্যা:
আপনার কাছে যদি কোনও বইয়ের এক্সএমএল উপাদান থাকে এবং শিশু উপাদানগুলির মধ্যে একটি বই হয়: সিরিজটি পূরণ করার সময় আপনার কাছে বেশ কয়েকটি বিকল্প থাকে:

  1. উপাদানটিকে পুরোপুরি সরিয়ে ফেলা - এটি করা যেতে পারে যখন আপনি ইঙ্গিত করতে ইচ্ছুক যে সিরিজটি এই বইয়ের জন্য প্রযোজ্য নয় বা সেই বই কোনও সিরিজের অংশ নয়। এই ক্ষেত্রে xsl রূপান্তর (বা অন্যান্য ইভেন্ট ভিত্তিক প্রসেসর) এর সাথে টেমপ্লেট রয়েছে যা বইয়ের সাথে মেলে: সিরিজ কখনই ডাকা হবে না। উদাহরণস্বরূপ, যদি আপনার xsl বইয়ের উপাদানটিকে টেবিল সারি (xhtml: tr) এ পরিণত করে তবে আপনি এই পদ্ধতিটি ব্যবহার করে টেবিল কোষের ভুল নম্বর পেতে পারেন (xhtml: td)।
  2. উপাদানটি খালি রেখে দেওয়া - এটি নির্দেশ করতে পারে যে সিরিজটি "", বা অজানা, বা বইটি কোনও সিরিজের অংশ নয়। বইয়ের সাথে মেলে যে কোনও এক্সএসএল ট্রান্সফর্ম (বা অন্যান্য সদাভিত্তিক ভিত্তিক পার্সার): সিরিজ বলা হবে। কারেন্ট () এর মান হবে ""। আপনি পরবর্তী বর্ণিত বর্ণনার মতো এই পদ্ধতিটি ব্যবহার করে একই সংখ্যার এক্সএইচটিএমএল: টিডি ট্যাগ পাবেন।
  3. এক্সসি: নীল = "সত্য" ব্যবহার করে - এটি প্রকাশ করে যে বইটি: সিরিজ উপাদানটি খালি নয়, নাল রয়েছে। আপনার এক্সএসএল ট্রান্সফর্ম (বা অন্যান্য ইভেন্ট ভিত্তিক পার্সার) যা একটি টেমপ্লেট ম্যাচিং বই রয়েছে: সিরিজ বলা হবে। কারেন্ট () এর মান খালি হবে (খালি স্ট্রিং নয়)। এই পদ্ধতি এবং (2) এর মধ্যে প্রধান পার্থক্য হ'ল বইয়ের স্কিমা ধরণের: সিরিজের একটি খালি স্ট্রিং ("") একটি বৈধ মান হিসাবে অনুমোদিত করার দরকার নেই। এটি কোনও সিরিজ উপাদানটির পক্ষে সত্যিকার অর্থে উপলব্ধি করে না, তবে এমন একটি ভাষার উপাদান যা স্কিমাতে একটি গণিত টাইপ হিসাবে সংজ্ঞায়িত হয়েছে, xsi: nil = "true" উপাদানটির কোনও তথ্য নেই। আর একটি উদাহরণ দশমিক টাইপের উপাদানগুলি হবে। আপনি যদি এগুলি খালি রাখতে চান তবে আপনি একটি গণিত স্ট্রিং সংযুক্ত করতে পারবেন যা কেবলমাত্র "" দশমিক এবং "দশমিকের মঞ্জুরি দেয়, বা ডিলিমাল ব্যবহারযোগ্য যা ননযোগ্য।

11
এক্সসি: নীল ব্যবহার সঠিক, তবে আপনার অবশ্যই এটি যথাযথ নেমস্পেসের মধ্যে থাকা নিশ্চিত করা উচিত: xmlns: xsi = " w3.org/2001/XMLSchema-instance "
STW

এটা আসলে xmlns:xsi="http://w3.org/2001/XMLSchema-instance"। অনুপস্থিত http: // নোট করুন। এটি গুরুত্বপূর্ণ কারণ নেমস্পেস স্ট্রিংটি আসলে এক্সএমএল পার্সারের কেবল একটি স্ট্রিং এবং কোনও ইউরি নয়।
বুড়াক আরসলান

9
হেই, আমি বিশ্বাস করি যে এখনও কিছুটা ভুল। এটা হওয়া উচিত xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"। দ্রষ্টব্য "www।" W3.org/TR/xmlschema-1/#no-xsi
ম্যাটিলা

আমার উত্তরে বলা হয়েছে যেহেতু আমি ব্যাখ্যাটির সাথে একমত নই যেহেতু এটি উপাদানটির রাষ্ট্রের প্রতিনিধিত্ব করে না, তবে উপাদানটির ব্যবহারের প্রতিবন্ধকতা
ওক্কুল

2
@ ক্রিসভি: সত্য নয়, xsi:উপসর্গটি অবশ্যই ঘোষণা করতে হবে। যদি আপনি xsi:প্রিফিক্সটি ঘোষণা না করে ব্যবহার করার চেষ্টা করেন তবে একটি নেমস্পেস-সচেতন এক্সএমএল পার্সার আপনার এক্সএমএল নথিটিকে প্রত্যাখ্যান করবে। এখানে প্রাসঙ্গিক বৈশিষ্টটি w3.org/TR/xML-names/#nsc-NSDeclared (" নেমস্পেসের সীমাবদ্ধতা: উপসর্গ ঘোষণা করা হয়েছে") যা কেবলমাত্র পূর্বনির্ধারিত উপসর্গগুলি হ'লxml: এবং xmlns:। এক্সএমএল স্কিমা এক্সএমএল নেমস্পেস স্পেকের শীর্ষে তৈরি করে তবে এটিতে কোনও অতিরিক্ত পূর্বনির্ধারিত উপসর্গ যুক্ত করে না, যেহেতু এটি করা আসলে এক্সএমএল নেমস্পেসগুলি অনুমান করে।
সাইমন কিসনে

9

কোনও প্রাসঙ্গিক উত্তর নেই, যেহেতু এক্সএমএলটির মূলত কোনও নাল ধারণা নেই। তবে আমি ধরে নিই যে আপনি এক্সএমএল / অবজেক্ট ম্যাপিং চান (যেহেতু বস্তুর গ্রাফগুলির নাল রয়েছে); সুতরাং আপনার জন্য উত্তরটি হ'ল "আপনার সরঞ্জাম যা ব্যবহার করে"। আপনি যদি হ্যান্ডলিং লিখেন, তার অর্থ আপনি যা পছন্দ করেন তার অর্থ। এক্সএমএল স্কিমা ব্যবহার করে এমন সরঞ্জামগুলির জন্য, xsi:nilযাওয়ার উপায়। বেশিরভাগ ম্যাপারদের জন্য, ম্যাচিং উপাদান / গুণাবলী বাদ দেওয়া এটি করার উপায়।


8

এটি কীভাবে আপনার এক্সএমএলকে বৈধতা দেয় তা নির্ভর করে। আপনি যদি এক্সএমএল স্কিমা বৈধতা ব্যবহার করেন তবে nullমানগুলি উপস্থাপনের সঠিক উপায়টি xsi:nilবৈশিষ্ট্য সহ।

[ উত্স ]


7

ডাব্লু 3 লিঙ্কে ডকুমেন্টেশন

http://www.w3.org/TR/REC-xml/#sec-starttags

এটি পুনরুদ্ধারকৃত ফর্মগুলি বলে।

<test></test>
<test/>

অন্যান্য উত্তরে উল্লিখিত বৈশিষ্ট্যটি বৈধতা প্রক্রিয়া এবং রাষ্ট্রের উপস্থাপনা নয়। দয়া করে http://www.w3.org/TR/xmlschema-1/#xsi_nil দেখুন

এক্সএমএল স্কিমা: কাঠামোগুলি সিগন্যাল করার জন্য একটি প্রক্রিয়া প্রবর্তন করে যে কোনও উপাদানকে এমন কোনও বিষয়বস্তু থাকা সত্ত্বেও যখন কোনও উপাদান বৈধ হিসাবে গ্রহণ করা উচিত। বৈধ। হিসাবে গ্রহণ করা উচিত যা খালি সামগ্রীর প্রয়োজন হয় না বা প্রয়োজনীয়ভাবে অনুমতি দেয় না। মানটির সাথে এক্সসি: শূন্য বৈশিষ্ট্যটি থাকলে কোনও উপাদান সামগ্রী ছাড়াই · বৈধ · হতে পারে। লেবেলযুক্ত একটি উপাদান অবশ্যই খালি থাকতে হবে , তবে সংশ্লিষ্ট জটিল ধরণের দ্বারা অনুমোদিত হলে বৈশিষ্ট্য বহন করতে পারে।

এই উত্তরটি পরিষ্কার করার জন্য: সামগ্রী

  <Book>
    <!--Invalid construct since the element attribute xsi:nil="true" signal that the element must be empty-->
    <BuildAttributes HardCover="true" Glued="true" xsi:nil="true">
      <anotherAttribute name="Color">Blue</anotherAttribute>
    </BuildAttributes>
    <Index></Index>
    <pages>
      <page pageNumber="1">Content</page>            
    </pages>
    <!--Missing ISBN number could be confusing and misguiding since its not present-->
  </Book>
</Books>

7
খালি উপাদানগুলির জন্য এটিই সুপারিশ ; আপনি কি মতামত করছেন যে খালি === নাল? আমি বিশ্বাস করি দুজনের মধ্যে পার্থক্য রয়েছে যদিও এটি প্রায়শই পরিস্থিতিগত হয়। আপনি যদি বিবৃতি দিচ্ছেন যে সেগুলি একই, তবে আমি আপনার উত্তরে সেই যুক্তি উল্লেখ করার পরামর্শ দেব।
রব হুশকা

1
খালি শূন্যের মতো নয়; যদি এটি হত তবে এই স্ট্যাকওভারফ্লো প্রশ্নটি কখনই জিজ্ঞাসা করা হত না। এই উত্তরটি ভুল। যাইহোক, প্রোগ্রামারটি নির্ধারণ করা উচিত যে এক্সএমএল পড়তে হবে এমন যুক্তিটি কোনও অনুপস্থিত উপাদান বা xsi: শূন্য করার জন্য প্রস্তুত কিনা; যদি তা না হয় তবে এই ফর্মগুলির একটি ব্যবহার করা প্রয়োজন হতে পারে; এটি হ'ল নাল / অনুপস্থিত উপাদান এবং একটি খালি উপাদানগুলির মধ্যে পার্থক্য হারাতে হবে।
নির্মাতা স্টিভ

@ রবহ্রস্কা হ্যাঁ, আপনি ঠিক বলেছেন, এটি একটি খালি উপাদানটির সংজ্ঞা, তবে কিটসুনওয়াইএমজি দ্বারা চিহ্নিত W3C সংজ্ঞাটি বিবেচনায় নিলে এটি সংজ্ঞায়িত করে যে উপাদানটি অবশ্যই নাল হতে হবে এবং আমি বিশ্বাস করি যে প্রতিনিধিত্বমূলক সংজ্ঞাটির আরও সংজ্ঞা রয়েছে তার বর্তমান অবস্থার উপস্থাপনা ট্যাগ করুন, তাই আমি সেই উত্তরটির সাথে একমত নই এবং বিশ্বাস করি যে খালিটি শূন্য উপাদানটির সেরা উপস্থাপনা। ধারণাটি সহজ, ভাল কাঠামো বজায় রাখতে আপনার সমস্ত উপাদানকে উপস্থাপন করা দরকার অন্যথায় আপনি এর অস্তিত্ব সম্পর্কে জানেন না, এবং তাই এটির ভুল ব্যাখ্যা করতে পারেন।
ওক্কুল

4

আপনি xsi:nilযখন ব্যবহার করেন আপনার স্কিমা শব্দার্থবিজ্ঞান নির্দেশ করে যে কোনও উপাদানটির একটি ডিফল্ট মান আছে এবং যদি উপাদান উপস্থিত না থাকে তবে ডিফল্ট মানটি ব্যবহার করা উচিত। আমাকে ধরে নিতে হবে যে স্মার্ট ব্যক্তিরা আছে যাদের পূর্ববর্তী বাক্যটি স্ব-স্পষ্টতই ভয়ানক ধারণা নয়, তবে এটি আমার কাছে নয় ধরণের খারাপ বলে মনে হচ্ছে। আমি যে কোনও এক্সএমএল ফর্ম্যাট নিয়ে কাজ করেছি সেগুলি উপাদান বাদ দিয়ে নাল মানকে উপস্থাপন করে। (বা বৈশিষ্ট্য, এবং শুভকামির সাথে একটি গুণকে চিহ্নিত করে xsi:nil))


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

4

কেবল অ্যাট্রিবিউট বা উপাদান বাদ দেওয়া কম ফর্মাল ডেটাতে ভাল কাজ করে।

আপনার যদি আরও পরিশীলিত তথ্যের প্রয়োজন হয় তবে জিএমএল স্কিমার সাথে নীল রজন যুক্ত বৈশিষ্ট্য যুক্ত করা যায়, যেমন: জিওএসসিএমএলে :

  • xsi:nil "সত্য" এর মান সহ কোনও মান উপলব্ধ নেই তা বোঝাতে ব্যবহৃত হয়
  • nilReasonহারিয়ে যাওয়া মানগুলির জন্য অতিরিক্ত তথ্য রেকর্ড করতে ব্যবহৃত হতে পারে; এটি স্ট্যান্ডার্ড জিএমএল কারণগুলির একটি হতে পারে ( missing, inapplicable, withheld, unknown), বা পাঠ্য দ্বারা প্রেরিত other:, বা আরও বিশদ ব্যাখ্যার জন্য ইউআরআই লিঙ্ক হতে পারে।

আপনি যখন ডেটা এক্সচেঞ্জ করছেন, এক্সএমএল যে ভূমিকাটির জন্য সাধারণত ব্যবহৃত হয়, কোনও প্রাপকের কাছে বা নির্দিষ্ট উদ্দেশ্যে প্রেরিত ডেটাতে এমন বিষয়বস্তু অস্পষ্ট থাকতে পারে যা অন্য কারও কাছে উপলব্ধ থাকতে পারে যা পৃথক প্রমাণীকরণ প্রদান করেছে বা রয়েছে। বিষয়বস্তু নিখোঁজ হওয়ার কারণটি জানা খুব গুরুত্বপূর্ণ হতে পারে।

বিজ্ঞানীরা কেন তথ্য অনুপস্থিত তা নিয়ে উদ্বিগ্ন। উদাহরণস্বরূপ, যদি এটি মানের কারণে বাদ দেওয়া হয় তবে তারা আসল খারাপ ডেটা দেখতে চাইতে পারে।


2

অনেক ক্ষেত্রে নাল মানের উদ্দেশ্য হ'ল এমন কোনও ডেটা মানের জন্য পরিবেশন করা যা আপনার অ্যাপ্লিকেশনটির আগের সংস্করণে উপস্থিত ছিল না।

সুতরাং বলুন আপনার কাছে অ্যাপ্লিকেশন "রিপোর্টমাস্টার" সংস্করণ 1 থেকে একটি এক্সএমএল ফাইল রয়েছে।

এখন রিপোর্টমাস্টার সংস্করণ 2 এ আরও কয়েকটি বৈশিষ্ট্য যুক্ত করা হয়েছে যা সংজ্ঞায়িত বা নাও হতে পারে।

আপনি যদি 'কোনও ট্যাগ মানে নাল' প্রতিনিধিত্ব ব্যবহার করেন তবে আপনি আপনার রিপোর্টমাস্টার 1 এক্সএমএল ফাইলটি পড়ার জন্য স্বয়ংক্রিয়ভাবে পশ্চাদপটে সামঞ্জস্য পাবেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.