এক্সএমএল বৈশিষ্ট্য বনাম এক্সএমএল উপাদান


253

কাজের জায়গায় আমাদের অন্য অফলাইনে অ্যাপ্লিকেশনটিতে ডেটা পাস করার জন্য এক্সএমএল ফাইলগুলি তৈরি করতে বলা হচ্ছে যা আমাদের কিছু ডেটা আপডেট করার জন্য আবার পাস করার জন্য একটি দ্বিতীয় এক্সএমএল ফাইল তৈরি করবে। প্রক্রিয়া চলাকালীন আমরা এক্সএমএল ফাইলের গঠন সম্পর্কে অন্যান্য অ্যাপ্লিকেশনটির দলের সাথে আলোচনা করেছি been

আমি যে নমুনাটি নিয়ে এসেছি তা হ'ল মূলত:

<INVENTORY>
   <ITEM serialNumber="something" location="something" barcode="something">
      <TYPE modelNumber="something" vendor="something"/> 
   </ITEM>
</INVENTORY>

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

<INVENTORY>
   <ITEM>
      <SERIALNUMBER>something</SERIALNUMBER>
      <LOCATION>something</LOCATION>
      <BARCODE>something</BARCODE>
      <TYPE>
         <MODELNUMBER>something</MODELNUMBER>
         <VENDOR>something</VENDOR>
      </TYPE>
   </ITEM>
</INVENTORY>

আমি প্রথমটির কারণটির কারণটি হ'ল তৈরি করা ফাইলের আকারটি অনেক ছোট। স্থানান্তরকালে ফাইলটিতে প্রায় 80000 আইটেম থাকবে। বাস্তবে তাদের পরামর্শটি আমার প্রস্তাবিতের চেয়ে তিনগুণ বড় প্রমাণিত হয়। আমি বর্ণিত রহস্যময় "ইন্ডাস্ট্রি স্ট্যান্ডার্ড" সন্ধান করেছি, তবে নিকটতম আমি খুঁজে পেতে পারি যে এক্সএমএল বৈশিষ্ট্যগুলি কেবল মেটা ডেটার জন্যই ব্যবহার করা উচিত, তবে বলেছিলেন যে বিতর্কটি আসলে মেটা ডেটা কী ছিল তা নিয়ে।

দীর্ঘ বাতাসের ব্যাখ্যার পরে (দুঃখিত) আপনি কীভাবে মেটা ডেটা তা নির্ধারণ করবেন এবং এক্সএমএল ডকুমেন্টের কাঠামোটি ডিজাইন করার সময় কোনও বৈশিষ্ট্য বা উপাদান ব্যবহার করার সময় আপনার কীভাবে সিদ্ধান্ত নেওয়া উচিত?


4
আমি এই সত্যই ভাল উত্সটি
লরেন্স

5
+1 "এর
আটকানো

হাইফেন সহ ছোট ছোট ট্যাগের নামটি দয়া করে নোট করুন: স্ট্যাকওভারফ্লো
বেন

উত্তর:


145

আমি এই নিয়মটি থাম্ব ব্যবহার করি:

  1. একটি অ্যাট্রিবিউট হ'ল এমন কিছু যা স্ব-অন্তর্ভুক্ত থাকে, যেমন একটি রঙ, একটি আইডি, একটি নাম।
  2. একটি এলিমেন্ট এমন একটি জিনিস যা এর নিজস্ব বৈশিষ্ট্যগুলি ধারণ করতে পারে বা অন্যান্য উপাদান থাকতে পারে।

তাই আপনার কাছাকাছি। আমি এমন কিছু করতাম:

সম্পাদনা : নীচের মতামতের ভিত্তিতে মূল উদাহরণটি আপডেট করা হয়েছে।

  <ITEM serialNumber="something">
      <BARCODE encoding="Code39">something</BARCODE>
      <LOCATION>XYX</LOCATION>
      <TYPE modelNumber="something">
         <VENDOR>YYZ</VENDOR>
      </TYPE>
   </ITEM>

22
আমি কয়েকটি উত্তরের মাধ্যমে পড়লাম এবং এমন কিছু যা আমার অভিজ্ঞতার পক্ষে যথেষ্ট পরিমাণে চাপ দেওয়া হয়নি তা হ'ল যদি আপনার কোনও "গুণাবলী" তে ডেটা থাকে এবং হঠাৎ একটি>> বা <এক্সএমএল ডকুমেন্টটি ভেঙে যায় তবে আমার মনে হয় পাঁচটি আসকি চর রয়েছে (>, <, &,?, ") এটি মেরে ফেলবে this এই বিশেষ চরিত্রটি যদি কোনও এলিমেন্টে থাকে তবে আপনি কেবল এই ডেটাটির চারপাশে কিছু সিডিএটি ট্যাগ যুক্ত করতে পারেন I আমি বলব, কেবলমাত্র বৈশিষ্ট্যগুলি ব্যবহার করুন যখন আপনি 100% জানেন যে কোন মানগুলি কী লিখতে চলেছে only সেখানে, যেমন, একটি পূর্ণসংখ্যা বা একটি তারিখ, সম্ভবত কম্পিউটার যা কিছু তৈরি করে If বারকোডটি যদি কোনও মানুষের দ্বারা উত্পাদিত হয় তবে এটির কোনও বৈশিষ্ট্য হওয়া উচিত নয়
John

39
পার্টিতে আসলেই দেরি হয়ে গেছে, তবে বিশেষ ASCII চর যুক্তিটি ভুল - এট্রিবিউটস এবং টেক্সট ডেটা উভয়ের জন্যই পলায়ন is
মাইকেলাহটন

2
@ ডনরোবি - দুঃখিত, যোগাযোগ করার ক্ষেত্রে এটি আমার ভুল হবে। পালিয়ে যাওয়ার অর্থ, এক্সএমএল এনকোডিং। '<' = & lt; ইত্যাদি ইত্যাদি বিষয়বস্তুর অর্থের পরিবর্তে সামগ্রী তৈরি করে এমন চরিত্রগুলির উপর ভিত্তি করে কোনও গুণ বা উপাদানটির মধ্যে সিদ্ধান্ত নেওয়া আমার কাছে অদ্ভুত বলে মনে হয়।
micahtan

3
@ ডনরোবি: এটি ভুল। এর প্রতিস্থাপন পাঠ্যটি &lt;হ'ল &#60;যা একটি চরিত্রের রেফারেন্স, কোনও সত্তার রেফারেন্স নয়। &lt;বৈশিষ্ট্যগুলিতে ঠিক আছে। দেখুন: w3.org/TR/REC-xML/#sec-pred
परिभाषित-

14
@ জন: যদি এটি সমস্যা হয় তবে আপনার সরঞ্জামচেনে এমন কিছু আছে যা বৈধ এক্সএমএল তৈরি করে না। আমি মনে করি না এটি গুণ বা উপাদানগুলির মধ্যে চয়ন করার একটি কারণ। (তদ্ব্যতীত, আপনি ব্যবহারকারীর ]]>
ইনপুটটির

48

বৈশিষ্ট্যগুলির সাথে কিছু সমস্যা হ'ল:

  • বৈশিষ্ট্যে একাধিক মান থাকতে পারে না (শিশু উপাদানগুলি পারে)
  • বৈশিষ্ট্যগুলি সহজেই প্রসারিত হয় না (ভবিষ্যতের পরিবর্তনের জন্য)
  • বৈশিষ্ট্যগুলি কাঠামোগুলি বর্ণনা করতে পারে না (শিশু উপাদানগুলি পারে)
  • প্রোগ্রাম কোড দ্বারা বৈশিষ্ট্যগুলি ম্যানিপুলেট করা আরও বেশি কঠিন
  • ডিটিডি এর বিপরীতে অ্যাট্রিবিউট মানগুলি পরীক্ষা করা সহজ নয়

আপনি যদি ডেটার জন্য ধারক হিসাবে বৈশিষ্ট্যগুলি ব্যবহার করেন তবে আপনি এমন নথিগুলি শেষ করবেন যা পড়া এবং বজায় রাখা শক্ত are ডেটা বর্ণনা করতে উপাদান ব্যবহার করার চেষ্টা করুন। তথ্যের সাথে প্রাসঙ্গিক নয় এমন তথ্য সরবরাহ করতে অ্যাট্রিবিউটগুলি ব্যবহার করুন।

এভাবে শেষ করবেন না (এটি এক্সএমএল ব্যবহার করা উচিত নয়):

<note day="12" month="11" year="2002" 
      to="Tove" to2="John" from="Jani" heading="Reminder"  
      body="Don't forget me this weekend!"> 
</note>

সূত্র: http://www.w3schools.com/xML/xML_dtd_el_vs_attr.asp


2
প্রথম পয়েন্ট ভুল, দেখুন: w3.org/TR/xmlschema-2/#derivation-by-list
porges

6
আমি বলব যে প্রথম বিষয়টি সঠিক এবং listএই সমস্যার একটি আংশিক সমাধান ar একই নামের সাথে একাধিক বৈশিষ্ট্য থাকতে পারে না। সঙ্গে listঅ্যাট্রিবিউট এখনও শুধুমাত্র একটি মান, যা কিছু datatypes একটি হোয়াইটস্পেস পৃথক করা তালিকা আছে। পৃথকীকরণের অক্ষরগুলি স্থির করে দেওয়া হয়েছে যাতে আপনার একাধিক মান থাকতে পারে না যদি ওয়ান্ড ডেটাটাইপের একক মান হোয়াইটস্পেস থাকতে পারে। এটি উদাহরণস্বরূপ এক "ঠিকানা" বৈশিষ্ট্যে একাধিক ঠিকানা রাখার সম্ভাবনাগুলিকে অস্বীকার করে।
জাসো

7
'প্রোগ্রামের কোড দ্বারা বৈশিষ্ট্যগুলি আরও কার্যকর করা আরও কঠিন' - এটির সাথে একমত হতে পারে না। আসলে আমি এর বিপরীতটি সত্য বলে খুঁজে পেয়েছি। সত্যিই যে কোনওভাবে বিবরণ দিতে পার্থক্য যথেষ্ট নয়।
পল আলেকজান্ডার

4
এক্সটিএমএল-স্কিমা, স্কিম্যাট্রন এবং রিল্যাক্স, ইত্যাদি সহ আমি কোনও ডিটিডি-র বিরুদ্ধে বৈধকরণটি আসলেই প্রাসঙ্গিক নয় add অল। সবগুলি আরও বেশি শক্তিশালী এবং কিছু ক্ষেত্রে এক্সএমএল ডকুমেন্টগুলিকে বৈধতা দেওয়ার আরও স্বজ্ঞাত উপায় সরবরাহ করে providing এছাড়াও,

37

"এক্সএমএল" এর অর্থ "এক্সটেনসিবল মার্কআপ ল্যাঙ্গুয়েজ"। একটি চিহ্নআপ ভাষা বোঝায় যে ডেটাটি পাঠ্য, কাঠামো বা ফর্ম্যাটিং সম্পর্কে মেটাডেটা দিয়ে চিহ্নিত

এক্সএইচটিএমএল এটি হ'ল এক্সএমএলটির উদাহরণ হিসাবে এটি ব্যবহৃত হয়েছিল:

<p><span lang="es">El Jefe</span> insists that you
    <em class="urgent">MUST</em> complete your project by Friday.</p>

এখানে উপাদান এবং বৈশিষ্ট্যের মধ্যে পার্থক্য স্পষ্ট is পাঠ্য উপাদানগুলি ব্রাউজারে প্রদর্শিত হয় এবং বৈশিষ্ট্যগুলি সেগুলি কীভাবে প্রদর্শন করতে হয় সে সম্পর্কে নির্দেশাবলী (যদিও এমন কয়েকটি ট্যাগ রয়েছে যা সেভাবে কাজ করে না)।

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


32

এক্সএমএল এলিমেন্ট বনাম এক্সএমএল বৈশিষ্ট্য

এক্সএমএল সব চুক্তি সম্পর্কে। আপনার সম্প্রদায় বা শিল্পের মধ্যে বিদ্যমান যে কোনও এক্সএমএল স্কিমা বা প্রতিষ্ঠিত কনভেনশনগুলিতে প্রথমে পিছনে।

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

<versus>
  <element attribute="Meta content">
    Content
  </element>
  <element attribute="Flat">
    <parent>
      <child>Hierarchical</child>
    </parent>
  </element>
  <element attribute="Unordered">
    <ol>
      <li>Has</li>
      <li>order</li>
    </ol>
  </element>
  <element attribute="Must copy to reuse">
    Can reference to re-use
  </element>
  <element attribute="For software">
    For humans
  </element>
  <element attribute="Extreme use leads to micro-parsing">
    Extreme use leads to document bloat
  </element>
  <element attribute="Unique names">
    Unique or non-unique names
  </element>
  <element attribute="SAX parse: read first">
    SAX parse: read later
  </element>
  <element attribute="DTD: default value">
    DTD: no default value
  </element>
</versus>

23

এটি আপনার ব্যবহারের উপর নির্ভর করে। এক্সএমএল যা ডাটাবেস থেকে উত্পন্ন স্টাচুরড ডেটা উপস্থাপন করতে ব্যবহৃত হয় চূড়ান্তভাবে ক্ষেত্রের মানগুলি অ্যাট্রিবিউট হিসাবে স্থাপনের সাথে ভালভাবে কাজ করতে পারে।

তবে মেসেজ ট্রান্সপোর্ট হিসাবে ব্যবহৃত এক্সএমএল প্রায়শই আরও বেশি উপাদান ব্যবহার করা ভাল be

উদাহরণস্বরূপ বলা যাক যে উত্তরে প্রস্তাবিত হিসাবে আমাদের কাছে এই এক্সএমএল ছিল: -

<INVENTORY>
   <ITEM serialNumber="something" barcode="something">
      <Location>XYX</LOCATION>
      <TYPE modelNumber="something">
         <VENDOR>YYZ</VENDOR>
      </TYPE>
    </ITEM>
</INVENTORY>

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

   <ITEM serialNumber="something">
      <barcode encoding="Code39">something</barcode>
      <Location>XYX</LOCATION>
      <TYPE modelNumber="something">
         <VENDOR>YYZ</VENDOR>
      </TYPE>
   </ITEM>

মূল বিষয়টি হ'ল যদি না আপনি পাথরের কাঠামোর কাঠামো ঠিক করার জন্য নেমস্পেসের সাথে একরকম এক্সএসডি বা ডিটিডি তৈরি করেন, তবে আপনার বিকল্পগুলি খোলা রেখেই আপনাকে সেরা পরিবেশন করা যেতে পারে।

আইএমও এক্সএমএল এটির সবচেয়ে কার্যকর যখন এটি বিদ্যমান কোডটি ব্যবহার না করে ফ্লেক্স করা যায়।


"বারকোড" সম্পর্কে ভাল বক্তব্য, আমি আমার উদাহরণটি ছুটে এসেছি এবং অবশ্যই এটি তার নিজস্ব উপাদানকে ভেঙে ফেলেছি। এক্সএসডি / ডিটিডি-তেও ভাল পয়েন্ট।
চক

10

আমি বনাম উপাদানগুলির গুণাবলী সম্পর্কে আমার স্কিমা ডিজাইনে নিম্নলিখিত নির্দেশিকাগুলি ব্যবহার করেছি:

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

বৈশিষ্ট্যগুলির জন্য অগ্রাধিকারটি এটি নিম্নলিখিত সরবরাহ করে:

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

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

যদি এক্সএমএল স্কিমা "সমস্ত" সামগ্রীর মডেলকে সীমাবদ্ধ বা প্রসারিত করার অনুমতি দেয় তবে আমি সম্ভবত এটি ফেলে দেব drop


8

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


8

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

এক্সএইচটিএমএল এমন একটি অঞ্চল যেখানে বৈশিষ্ট্যগুলির প্রাকৃতিক ব্যবহার রয়েছে (উদাহরণস্বরূপ শ্রেণি = 'ফু')। বৈশিষ্ট্যের কোনও অর্ডার নেই এবং এটি কিছু লোকের জন্য সরঞ্জাম বিকাশকে আরও সহজ করে তুলতে পারে। OTOH বৈশিষ্ট্যগুলি কোনও স্কিমা ছাড়াই টাইপ করা শক্ত। আমি নেমস্পিডের বৈশিষ্ট্যগুলিও দেখতে পাই (foo: bar = "zork") বিভিন্ন টুলসেটগুলিতে পরিচালনা করা প্রায়শই শক্ত। তবে কিছু মিশ্রণটি দেখতে সাধারণ ডাব্লু 3 সি ভাষায় দেখুন at এসভিজি, এক্সএসএলটি, এক্সএসডি, ম্যাথএমএল কয়েকটি সুপরিচিত ভাষার উদাহরণ এবং সকলের বৈশিষ্ট্য এবং উপাদানগুলির সমৃদ্ধ সরবরাহ রয়েছে। কিছু কিছু ভাষা এমনকি এক-একতরফা এটি করার অনুমতি দেয়, যেমন

<foo title="bar"/>;

অথবা

<foo>
  <title>bar</title>;
</foo>;

মনে রাখবেন যে এগুলি সিনট্যাকটিকভাবে সমতুল্য নয় এবং প্রসেসিং সরঞ্জামগুলিতে সুস্পষ্ট সমর্থন প্রয়োজন)

আমার পরামর্শটি হ'ল আপনার আবেদনের নিকটতম অঞ্চলে প্রচলিত অভ্যাসটি দেখে নেওয়া উচিত এবং আপনি কী কী টুলসেট প্রয়োগ করতে চান তা বিবেচনা করতে হবে।

অবশেষে নিশ্চিত হয়ে নিন যে আপনি নামের বৈশিষ্ট্যগুলি থেকে পৃথক করে। কিছু এক্সএমএল সিস্টেম (উদাঃ লিনক) এপিআই-তে বৈশিষ্ট্য হিসাবে নেমস্পেসগুলি উপস্থাপন করে। আইএমও এটি কুৎসিত এবং সম্ভাব্য বিভ্রান্তিকর।


6

অন্যরা কীভাবে উপাদানগুলি থেকে গুণাবলীর মধ্যে পার্থক্য রাখবেন তা বোঝাতে পেরেছেন তবে বৈশিষ্ট্যগুলিতে সমস্ত কিছুকে আরও সাধারণ দৃষ্টিকোণ থেকে রেখেছেন কারণ এটি ফলস্বরূপ এক্সএমএলকে ছোট করে তোলে।

এক্সএমএল কমপ্যাক্ট হওয়ার জন্য নয় বরং পোর্টেবল এবং মানব পাঠযোগ্য be আপনি যদি ট্রানজিটে ডেটার আকার হ্রাস করতে চান তবে অন্য কিছু ব্যবহার করুন (যেমন গুগলের প্রোটোকল বাফার )।


ছোট এক্সএমএল পাঠটি ছোট হওয়ায় আরও বেশি মানব-পঠনযোগ্য!
নাসেভ

5

মিলিয়ন ডলারের প্রশ্ন!

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

আরও দৃ concrete়ভাবে, আপনি কোনও উপাদানটির সামগ্রী মডেলকে আরও জটিল করে তুলতে পারেন তবে কোনও বৈশিষ্ট্য বাড়ানো আরও শক্ত।


5

বস্তুর সম্পত্তি সংরক্ষণের জন্য দুটি পদ্ধতিই পুরোপুরি বৈধ। আপনার ব্যবহারিক বিবেচনা থেকে বিদায় নেওয়া উচিত। নিম্নলিখিত প্রশ্নের উত্তর দেওয়ার চেষ্টা করুন:

  1. কোন উপস্থাপনা দ্রুত ডেটা পার্সিং-প্রজন্মের দিকে নিয়ে যায়?

  2. কোন উপস্থাপনা দ্রুত ডেটা ট্রান্সফারের দিকে পরিচালিত করে?

  3. পঠনযোগ্যতা কি গুরুত্বপূর্ণ?

    ...


5

মেটা ডেটার (উপাদানটির ডেটা সম্পর্কিত ডেটা) জন্য ডেটা এবং বৈশিষ্ট্যের জন্য উপাদানগুলি ব্যবহার করুন।

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

মনে রাখবেন যে এক্সএমএল হ'ল মেশিন রিডেবল হ'ল মানব পঠনযোগ্য নয় এবং বড় নথির জন্য এক্সএমএল খুব ভালভাবে সংকোচিত হন।


4

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

এক্সএমএল অত্যন্ত কুখ্যাত। পরিবহন এবং স্টোরেজগুলির জন্য, যদি আপনি প্রসেসিং শক্তি সামর্থ করতে পারেন তবে সংক্ষেপণটি অত্যন্ত সুপারিশ করা হয়। এক্সএমএল এটির পুনরাবৃত্তির কারণে কখনও কখনও চমত্কারভাবে ভালভাবে সংক্ষেপিত হয়। আমার কাছে বড় ফাইলগুলি তাদের মূল আকারের 5% এরও কম কমপ্রেস করে।

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


4

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

যেমন আমি পছন্দ করি .....

<?xml version="1.0" encoding="utf-8"?>
<data>
    <people>
         <person name="Rory" surname="Becker" age="30" />
        <person name="Travis" surname="Illig" age="32" />
        <person name="Scott" surname="Hanselman" age="34" />
    </people>
</data>

...পরিবর্তে....

<?xml version="1.0" encoding="utf-8"?>
<data>
    <people>
        <person>
            <name>Rory</name>
            <surname>Becker</surname>
            <age>30</age>
        </person>
        <person>
            <name>Travis</name>
            <surname>Illig</surname>
            <age>32</age>
        </person>
        <person>
            <name>Scott</name>
            <surname>Hanselman</surname>
            <age>34</age>
        </person>
    </people>
</data>

তবে যদি আমার কাছে এমন ডেটা থাকে যা 20-30 টি অক্ষরের ভিতরে সহজেই প্রতিনিধিত্ব করে না বা অনেকগুলি উদ্ধৃতি বা অন্যান্য অক্ষর রয়েছে যা পালানোর দরকার হয় তবে আমি বলতে পারি যে উপাদানগুলি ছিন্ন করার সময় ... সম্ভবত সিডিটা ব্লক সহ।

<?xml version="1.0" encoding="utf-8"?>
<data>
    <people>
        <person name="Rory" surname="Becker" age="30" >
            <comment>A programmer whose interested in all sorts of misc stuff. His Blog can be found at http://rorybecker.blogspot.com and he's on twitter as @RoryBecker</comment>
        </person>
        <person name="Travis" surname="Illig" age="32" >
            <comment>A cool guy for who has helped me out with all sorts of SVn information</comment>
        </person>
        <person name="Scott" surname="Hanselman" age="34" >
            <comment>Scott works for MS and has a great podcast available at http://www.hanselminutes.com </comment>
        </person>
    </people>
</data>

2
এটি ফ্ল্যাট ভুল আমি ভীত - আপনার ডাব্লু 3 সি নির্দেশিকা অনুসরণ করা উচিত: w3schools.com/DTD/dtd_el_vs_attr.asp - এক্সএমএলটি পঠনযোগ্যতা বা এটি "কমপ্যাক্ট" তৈরির উপর গঠন করা উচিত নয় - বরং উপাদান বা বৈশিষ্ট্যগুলি সঠিকভাবে ব্যবহারের জন্য ব্যবহার করা উচিত যা তাদের জন্য ডিজাইন করা হয়েছিল।
ভিডার

24
আমি দুঃখিত, তবে এটি বিভ্রান্তিকর। ডাব্লু 3 স্কুলগুলি ডাব্লু 3 সি গাইডলাইন নয়। ডাব্লু 3 সি এক্সএমএল সুপারিশ (যাতে আমি একজন অংশগ্রহণকারী ছিলাম) ব্যবহারকারীর প্রয়োজন এবং শৈলী অনুযায়ী উপাদান এবং বৈশিষ্ট্যগুলি ব্যবহার করার অনুমতি দেয়।
peter.murray.rust

4

কীভাবে আমাদের হার্ড অর্জিত অবজেক্ট অরিয়েন্টেশন অন্তর্নিহিত সুবিধা গ্রহণ করবেন? আমি সাধারণত এটি কোন অবজেক্ট এবং কোনটি অবজেক্টের একটি অ্যাট্রিবিউট বা কোন অবজেক্টের সাথে এটি উল্লেখ করা হচ্ছে তা ভাবতে সরাসরি এগিয়ে যায় find

উপাদানগুলির মধ্যে উপাদানগুলির মতো উপযুক্ত হিসাবে যেকোন স্বজ্ঞাততার সাথে তা বোঝায়। এর বৈশিষ্ট্যগুলি (বা বৈশিষ্ট্যগুলি) xML বা বৈশিষ্ট্যযুক্ত শিশু উপাদানগুলিতে এই উপাদানগুলির জন্য বৈশিষ্ট্য হবে।

আমি মনে করি সহজ উদাহরণগুলির জন্য যেমন অবজেক্ট অরিয়েন্টেশন সাদৃশ্যটি কোন উপাদানটি এবং কোন উপাদানটির বৈশিষ্ট্য এটি নির্ধারণ করা ঠিক আছে।


2

কিছু খারাপ তথ্যের সংশোধন মাত্র দু'টি:

@ জন বলিঞ্জার: বৈশিষ্ট্যে কোনও চরিত্রের ডেটা থাকতে পারে। <> & "'র যথাক্রমে & lt; & gt; & amp; & quot; এবং & apos; এ পালানো দরকার you আপনি যদি এক্সএমএল লাইব্রেরি ব্যবহার করেন তবে এটি আপনার যত্ন নেবে।

হেল, একটি বৈশিষ্ট্যে বাইনারি ডেটা যেমন একটি চিত্র থাকতে পারে, যদি আপনি সত্যিই চান তবে কেবল বেস64-এনকোডিং করে এবং এটি একটি ডেটা তৈরি করে: ইউআরএল।

@ ফেনস্টার: বৈশিষ্ট্যগুলিতে আইডিএস বা NAMES এর ক্ষেত্রে স্পেস-বিচ্ছিন্ন একাধিক আইটেম থাকতে পারে, যার মধ্যে সংখ্যা অন্তর্ভুক্ত থাকবে। নিতপিকি, তবে এটি স্থান সাশ্রয় করতে পারে।

বৈশিষ্ট্যগুলি ব্যবহার করে XML কে JSON এর সাথে প্রতিযোগিতামূলক রাখতে পারে। ফ্যাট মার্কআপ দেখুন : ফ্যাট মার্কআপ মিথকে একবারে এক ক্যালোরি ছাঁটাই


শুধু আইডিস বা নাম নয়। এগুলিতে প্রায় কোনও কিছুর স্পেস-বিভাজিত তালিকা থাকতে পারে।
জন স্যান্ডার্স

@ জনসন্ডার্স আইডি বা নামগুলি নির্দিষ্ট ডিটিডি ধরণের (এক্সএমএল স্কিমাও আমার মনে হয়), বেশিরভাগ এক্সএমএল প্রসেসর দ্বারা স্বল্প স্তরে সমর্থিত। যদি এক্সএমএল লাইব্রেরির পরিবর্তে অ্যাপ্লিকেশন স্তর দ্বারা পরিচালিত হয় তবে যে কোনও ধরণের অক্ষর ডেটা কাজ করে (পৃথক মান বা যাই হোক না কেন)।
ব্রায়ানারি

ব্যক্তিগতভাবে, কেবল কারণ আপনার বোঝানো উচিত নয়।
লঙ্ক্যমার্ট

1
@ লঙ্কায়মার্ট যেমনটি বলেছিলাম, আমি কিছু ভুল তথ্য সংশোধন করছিলাম (এটি কোনও কারণে উচ্চতর স্কোরিং ছিল)। বাইনারি ডেটা সাধারণত এক্সএমএলে অন্তর্ভুক্ত থাকে না।
ব্রায়ানারি

1

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

সুতরাং উদাহরণস্বরূপ, চিহ্নবিহীন পাঠ্যটি সর্বদা বৈশিষ্ট্যের সাথে সম্পর্কিত। সর্বদা.

উপ-কাঠামো বা সামগ্রীতে তালিকাভুক্ত। সময়ের সাথে সাথে এম্বেড করা কাঠামোগত সাব-সামগ্রী অন্তর্ভুক্ত থাকতে পারে এমন পাঠ্যগুলি in (আমার অভিজ্ঞতার তুলনায় এর তুলনামূলকভাবে খুব কমই রয়েছে - মার্কআপ সহ পাঠ্য - যখন ডেটা স্টোরেজ বা এক্সচেঞ্জের জন্য এক্সএমএল ব্যবহার করা হয়।)

এক্সএমএল স্কিমা এইভাবে লিখিত সংক্ষিপ্ত।

যখনই আমি এর মতো কেস দেখতে পাই, তখন আমি <car><make>Ford</make><color>Red</color></car>নিজেকেই ভাবি "লেখক কি ভেবেছিলেন যে মেক উপাদানটির মধ্যে উপ-উপাদান থাকবে?" <car make="Ford" color="Red" />উল্লেখযোগ্যভাবে আরও পঠনযোগ্য, সাদা স্থান কীভাবে পরিচালনা করা হবে ইত্যাদি নিয়ে কোনও প্রশ্ন নেই

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


আমি যে কয়েকটি ব্যাখ্যা পড়তে পারি তার একটি। এটি একটি ভাল ধারণা আছে কিনা তা কোনও ধারণা নেই ... তবে কমপক্ষে আমি বিষয়টি বুঝতে পারি;)
থুফির

0

এটি এইচটিএমএলে খুব স্পষ্ট যেখানে বৈশিষ্ট্য এবং মার্কআপের পার্থক্য পরিষ্কারভাবে দেখা যায়:

  1. সমস্ত ডেটা মার্কআপের মধ্যে রয়েছে
  2. বৈশিষ্ট্যগুলি এই ডেটা বৈশিষ্ট্যযুক্ত করতে ব্যবহৃত হয় (যেমন ফর্ম্যাটগুলি)

যদি আপনার এক্সএমএল হিসাবে খাঁটি ডেটা থাকে তবে একটি স্বল্প পার্থক্য রয়েছে। ডেটা মার্কআপ বা বৈশিষ্ট্যগুলির মধ্যে দাঁড়িয়ে থাকতে পারে।

=> বেশিরভাগ ডেটা মার্কআপের মধ্যে দাঁড়িয়ে থাকতে হবে।

আপনি যদি এখানে বৈশিষ্ট্যগুলি ব্যবহার করতে চান: আপনি ডেটাটিকে দুটি বিভাগে ভাগ করতে পারেন: ডেটা এবং "মেটা ডেটা", যেখানে মেটা ডেটা রেকর্ডের অংশ নয়, আপনি উপস্থাপন করতে চান, তবে "ফর্ম্যাট সংস্করণ", "তৈরি তারিখ" এর মতো জিনিস ইত্যাদি

<customer format="">
     <name></name>
     ...
</customer>

কেউ এটিও বলতে পারেন: "ট্যাগটি বৈশিষ্ট্যযুক্ত করতে বৈশিষ্ট্যগুলি ব্যবহার করুন, ডেটা দেওয়ার জন্য ট্যাগ ব্যবহার করুন" "


-1

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


-1

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

কেবলমাত্র যখনই আমি সেগুলি ব্যবহার করেছি কেবলমাত্র সম্পদ ইউআরএলটির ফাইল এক্সটেনশানটি সংজ্ঞায়িত করা ছিল:

<image type="gif">wank.jpg</image> ...etc etc

আমি অনুমান করি আপনি যদি 100% জানেন তবে বৈশিষ্ট্যটি প্রসারিত করার দরকার পড়বে না আপনি সেগুলি ব্যবহার করতে পারেন, তবে আপনি এটি কতবার জানেন।

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