কোনটি চয়ন করবেন: এক্সএমএল বৈশিষ্ট্য বা সাব নোড?


15

আমরা আমাদের ডেটা বেস থেকে এক্সএমএল হিসাবে কিছু তথ্য রফতানি করতে চাই। উদাহরণস্বরূপ, একটি Personথাকতে পারে age, nameএবং কিছু অন্যান্য বৈশিষ্ট্য।

এক্সএমএল ফর্ম্যাটটি সংজ্ঞায়িত করার জন্য আমাদের দুটি পছন্দ আছে।

পছন্দ # 1:

<Persons>
   <Person>
       <Age>16</Age>
       <Name>Richard</Name>
   </Person>
   <Person>
       <Age>34</Age>
       <Name>Eric</Name>
   </Person>
   ...
</Persons>

পছন্দ # 2:

<Persons>
   <Person Age="16" Name="Richard"/>
   <Person Age="34" Name="Eric"/>
   ...
</Persons>

সুতরাং সাব নোড বা গুণাবলী সংজ্ঞা মধ্যে পার্থক্য কি? এবং প্রতিটি পছন্দের সুবিধা কি?



2
যদিও এটি স্ট্যাক ওভারফ্লোতে ২০০৮ সালে জিজ্ঞাসা করা হয়েছিল , এটি একটি নকশার সিদ্ধান্ত বলে মনে হয় এবং এটি এখানে বিষয়বস্তুতে।
টমাস ওয়ানস

উত্তর:


9

এর জন্য সুস্পষ্ট ডকুমেন্টেশন / সেরা অনুশীলন নেই, তবে বিকল্পগুলি বিবেচনা করুন, যেমন আপনার রয়েছে:

উপাদান পাঠ্য হিসাবে:

  • এক্সএইচটিএমএল ইত্যাদি হিসাবে ডেটা প্রদর্শন করা আরও সহজ হতে পারে যেখানে পাঠ্য সামগ্রীটি মার্কআপ বা মেটা-ডেটা না করে পাঠ্য হিসাবে বিবেচনা করা হয়।
  • একের বেশি থাকতে পারে। আপনার যদি একাধিক বয়স বা নাম সারি সহ শিশু সামগ্রী প্রয়োজন হয়, বৈশিষ্ট্যগুলি এটির অনুমতি দেয় না
  • যদি আপনি স্তর মেটা ডেটা সারি, আপনি গুণাবলীর ব্যবহারের বিকল্প আছে <name>বা <age>এই উদ্দেশ্যে

বৈশিষ্ট্য হিসাবে:

  • এক্সএমএল আরও কমপ্যাক্ট
  • এক্সএসএলটি এবং ডক্টটাইপগুলি উল্লেখ করা সহজ
  • আপনাকে হোয়াইটস্পেস (প্যাডিং, ইনডেন্টিং, লাইন ব্রেক) বা পিসিডিটিএ অঞ্চলে (মন্তব্যগুলি, পিআই এর) পরিচয় করানো (আইটেম টেক্সট) সম্পর্কে চিন্তা করতে হবে না
  • শুধুমাত্র এক হতে পারে! একাধিক ageবৈশিষ্ট্যযুক্ত শিশু সামগ্রী সম্পর্কে আপনাকে চিন্তা করতে হবে না ।

আমি এক্সএমএল এর সাথে কাজ করতে অনেক সময় ব্যয় করেছি এবং আমার মতে খাঁটি তথ্য যোগাযোগের জন্য, যখনই সম্ভব বৈশিষ্ট্যগুলি ব্যবহার করা উচিত। যদি এক্সএমএল উপস্থাপনের জন্য ব্যবহার করা হয় (এক্সএসএলটি, এক্সএইচটিএমএল, ইত্যাদি) তবে এটি পাঠ্য সামগ্রী হিসাবে ভাল হতে পারে (তবে অগত্যা নয়)।


2
মূল্যহীন কিছু নয়: আপনি যদি এক্সএসএলটি ব্যবহার করতে চলেছেন তবে গুণাবলী ব্যবহার না করার আক্ষরিক কোনও কারণ নেই। হতে পারে আপনি যদি কিছু এক্সএমএল + সিএসএস জিনিস করতে যাচ্ছেন বা আপনি অন্য কারোর এক্সএসএলটি ব্যবহার করতে যাচ্ছেন ...
ডগএম

আপনার ভাল উত্তরকে কিছুটা আরও সুষম করতে আমি কয়েকটি পয়েন্ট যুক্ত করেছি, আশা করি আপনি এটির সাথে উন্নত হবেন বলে সম্মত হন।
ডক ব্রাউন

9

এক্সএমএল ডিজাইনের নীতিমালা: আইবিএম থেকে উচে ওগবুজি দ্বারা বৈশিষ্ট্যগুলি বনাম উপাদানগুলি কখন ব্যবহার করা যায় তা সম্ভবত বিষয়টির অন্যতম সেরা উত্স।

সিদ্ধান্তের মূলটি হল বৈশিষ্ট্যগুলি 'কাজ' করা হয়। আপনি এগুলি পরিবর্তন করতে বা তাদের সংশোধন করতে বা বাসা বাঁধতে পারবেন না। তারা উপাদানটির মধ্যে স্বতন্ত্র এবং স্বতন্ত্র অর্ডার করছে (আপনার একই জিনিস দুটি থাকতে পারে না)।

যদি এই বাধাগুলির মধ্যে কোনওটি এমন কিছু হয় যা পরিবর্তিত হতে পারে তবে ডেটাটিকে এক্সএমএলের একটি শিশু নোড তৈরি করুন।

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

এবং তাই আমাদের এমন একজন আছে যার দুটি মাঝারি নাম রয়েছে যার কাছে তাদের কাছে অর্ডার রয়েছে। এটি পরিষ্কারভাবে দেখাতে হবে যে না, কোনও বৈশিষ্ট্য এটির জন্য সেরা পছন্দ নয়।

আমি এটি বর্তমানে খুঁজে পাচ্ছি না, তবে উপরের লিঙ্কযুক্ত নথিতে একটি বিবৃতি রয়েছে যে নামগুলি এমন কিছু জিনিস যা "ভবিষ্যতের নিবন্ধে মার্কআপে মানুষের নামের চিকিত্সা প্রসারিত করার প্রত্যাশা করি"। কারও যদি এর উপরে নেতৃত্ব থাকে তবে দয়া করে একটি মন্তব্য দিন বা এটিকে এটি সম্পাদনা করুন।

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

উচে ওগবুজি সঠিকভাবে একটি এক্সএমএল ফর্ম্যাট ডিজাইনের ক্ষেত্রে তিনটি মূল নীতি চিহ্নিত করে। নিম্নলিখিত উপরোক্ত লিঙ্কযুক্ত নথি থেকে সংক্ষিপ্ত বিবরণ দেওয়া হয়।

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

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

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


2

বিয়ং রলফেলের আরও একটি বিবেচনা ক্ষেত্রের সংখ্যা।
অল্প সংখ্যক গুণাবলীর চেয়ে বেশি বিশৃঙ্খলা হয়ে পড়েছে এবং পড়তে পারা কঠিন (এটি ধরে নিয়েছে যে আপনি নিজের এক্সএমএলকে মানব পাঠযোগ্য হতে চান তবে একজন প্রোগ্রামার হিসাবে আপনি এটি কমপক্ষে পরীক্ষার জন্য করতে চাইছেন)।

এছাড়াও, আপনি যদি কোনও ক্ষেত্রের ডেটা কাঠামো সময়ের সাথে সাথে পরিবর্তনের প্রত্যাশা করেন, তবে এটিকে কোনও বৈশিষ্ট্য বানাবেন না।
উদাহরণস্বরূপ, আপনার নাম ক্ষেত্র। ভবিষ্যতে এই হয়ে যাবে

<name>
  <firstName>George</firstName>
  <lastName>Orwell</lastName>
  <maidenName></maidenName>
  <nickName>Robert</nickName>
</name>

আপনি যদি এমন কিছু হওয়ার আশা করেন তবে এটিকে একটি অ্যাট্রিবিউট তৈরি করার অর্থ পরে আরও রিফ্যাক্টরিং কোড হবে।


এই ভাল পয়েন্ট জন্য ধন্যবাদ। এবং কেন "এটিকে একটি অ্যাট্রিবিউট তৈরি করার অর্থ পরে আরও সংশোধনকারী কোড"?
ZijingWu

2

ব্যক্তিদের ট্যাগের জন্য, ব্যক্তির আরও ট্যাগ থাকা স্বাভাবিক, এটি বোধগম্য হয়, ব্যক্তির তালিকায় কিছু সত্ত্বা থাকে, বৈশিষ্ট্যগুলি নয়।

গল্পটি ব্যক্তি এবং এর উপাদানগুলির জন্য পৃথক। কোনও ব্যক্তির কোনও নাম থাকে না, নামটি ব্যক্তির একটি বৈশিষ্ট্য, তাই আমি নতুন ট্যাগগুলির পরিবর্তে বৈশিষ্ট্যগুলিতে আটকে থাকি। ট্যাগগুলি কার্যকর হয় যখন আপনার ঠিকানাগুলির মতো পুনরাবৃত্তিযোগ্য জিনিস থাকে, আপনি গুণাবলী সহ এটি করতে পারবেন না।

যদি আমরা এইচটিএমএল প্রসঙ্গে চিন্তা করি, আপনার কাছে কোনও মান সহ কোনও নাম ট্যাগ সহ কোনও ইনপুট নেই, তাই না?

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