xsd স্কিমার উদাহরণের উপর ভিত্তি করে 1c xml। ফেডারেল কাস্টমস সার্ভিসের জন্য পরিসংখ্যানগত প্রতিবেদন আপলোড করার উদাহরণ ব্যবহার করে XSD স্কিম ব্যবহার করে একটি XML ফাইল তৈরি করার একটি সংক্ষিপ্ত বিবরণ। একটি XDTO প্যাকেজ যোগ করা হচ্ছে

টীকা: XML ডেটা স্কিমাস (XSD)। Visual Studio .NET-এ একটি XSD স্কিমা তৈরি করা হচ্ছে। একটি টাইপ করা DataSet অবজেক্ট তৈরি করা হচ্ছে। একটি DataSet অবজেক্টের গঠন সম্পর্কে তথ্য প্রাপ্ত করা। টাইপ করা এবং নিয়মিত ডেটাসেট অবজেক্টে XML ডকুমেন্ট এবং XSD স্কিমা লোড করা হচ্ছে। ReadXml এবং ReadXmlSchema পদ্ধতি। একটি টাইপ করা এবং নিয়মিত ডেটাসেট অবজেক্টের বিষয়বস্তু এবং গঠন রেকর্ড করা। WriteXml এবং WriteXmlSchema পদ্ধতি

টাইপ করা DataSet অবজেক্ট। XML নথি পড়া এবং লেখা

XML ডেটা স্কিমাস (XSD)

ডেটা স্কিমা 1 XML স্কিমা ডকুমেন্টের সঠিক অনুবাদ -< XML নথি স্কিমা>, তবে আমরা "XML ডেটা স্কিমা" শব্দটি ব্যবহার করা চালিয়ে যাব।এক্সএসডি (এক্সএমএল স্কিমা ডকুমেন্ট, এক্সএসডি) হল এক্সএমএল ডকুমেন্টের নিয়ম তৈরির একটি বিকল্প উপায়। DTD-এর তুলনায়, স্কিমাগুলি জটিল ডেটা স্ট্রাকচার সংজ্ঞায়িত করার জন্য আরও শক্তিশালী, একটি ভাষার ব্যাকরণ বর্ণনা করার জন্য একটি পরিষ্কার উপায় প্রদান করে এবং সহজেই আধুনিকীকরণ এবং প্রসারিত করা যায়। একটি XSD স্কিমা নিম্নলিখিত তথ্য থাকতে পারে:

  • ডেটা উপাদানগুলির মধ্যে সম্পর্কের উপস্থাপনা, একটি রিলেশনাল ডাটাবেসের মধ্যে টেবিলের মধ্যে বিদেশী কী সম্পর্কের অনুরূপ;
  • একটি প্রাথমিক কী অনুরূপ অনন্য শনাক্তকারীর উপস্থাপনা;
  • টাইপ স্পেসিফিকেশনএকটি XML নথিতে প্রতিটি পৃথক উপাদান এবং বৈশিষ্ট্যের জন্য ডেটা।

Visual Studio .NET-এ একটি ডেটা স্কিমা তৈরি করতে, প্রধান মেনুতে File\New\File-এ যান এবং টেমপ্লেটের তালিকা থেকে XML স্কিমা নির্বাচন করুন (চিত্র 11.3 দেখুন)। একটি উইন্ডো প্রদর্শিত হবে যেখানে বলা হয়েছে "শুরু করতে, সার্ভার এক্সপ্লোরার বা টুলবক্স উইন্ডো থেকে বস্তুগুলিকে কর্মক্ষেত্রে (ডিজাইন এলাকা) টেনে আনুন বা ডান-ক্লিক করুন" (চিত্র 11.1):


ভাত। 11.1।

মূল বিষয় হল আমরা ডিজাইন মোডে আছি। বোতামে ক্লিক করে কোড মোডে স্যুইচ করুন (XML):

প্রথম লাইনটি হল পরিচিত ইঙ্গিত যে স্কিমা হল একটি XML নথি যার মূল উপাদান xs:schema। xs উপসর্গ: নামস্থান নির্দেশ করার জন্য সমস্ত স্কিমা উপাদানকে উপসর্গ করে। দ্বিতীয় লাইনে স্কিমার একটি দীর্ঘ, বিস্তারিত এবং প্রায়শই সম্পূর্ণ অপ্রয়োজনীয় বর্ণনা রয়েছে (এইচটিএমএল পৃষ্ঠাগুলির জন্য অনুরূপ কোডের সাথে তুলনা করুন)। সঠিক ক্রিয়াকলাপের জন্য, নিম্নলিখিত উপস্থাপনায় নিজেকে সীমাবদ্ধ করা যথেষ্ট:

যাইহোক, স্টুডিওর অন্তর্নির্মিত ভিজ্যুয়ালাইজেশন সরঞ্জামগুলি এই "হেডার" এর উপস্থিতি অনুমান করে, তাই এটি সরানো উচিত নয়। একটি স্কিমা তৈরি করা যা ভিজ্যুয়াল স্টুডিও .NET-এ একটি প্রদত্ত XML নথির বর্ণনা দেয় একটি মোটামুটি সহজ কাজ। আসুন নিম্নলিখিত XMLEasy.xml ডকুমেন্ট তৈরি করি:

1

আমরা (ডেটা) ট্যাবে স্যুইচ করি এবং শুধুমাত্র একটি এন্ট্রি দেখতে পাই (চিত্র 11.2)।


ভাত। 11.2।

আপনি একটি স্কিমা তৈরি করতে পারেন যা এই নথিটিকে বিভিন্ন উপায়ে বর্ণনা করে: প্রধান মেনুতে, "XML \ স্কিমা তৈরি করুন" আইটেমটি নির্বাচন করুন (চিত্র 11.3, A), XML মোডে, প্রসঙ্গ মেনুতে একই আইটেমটি নির্বাচন করুন (চিত্র। 11.3, B), XML মোডে, প্রসঙ্গ মেনুতে একই আইটেমটি নির্বাচন করুন (চিত্র 11.3, B), ডেটাতে, প্রসঙ্গ মেনুতে এই আইটেমটি নির্বাচন করুন (চিত্র 11.3, সি), এবং অবশেষে, ডেটা মোডে, XML টুলবার বোতামে ক্লিক করুন (চিত্র 11.3, D)।


ভাত। 11.3।

যাই হোক না কেন, নথির রূপরেখাটি একটি টেবিলের আকারে প্রদর্শিত হবে (চিত্র 11.4)। এখন স্কিমা মোড ছেড়ে (XML) মোডে স্যুইচ করা যাক।


ভাত। 11.4।

নথির গঠন বর্ণনা করে পরিবেশ XML কোড তৈরি করেছে:

এটি ADO .NET অবজেক্ট ব্যবহার করে স্কিমাকে আরও ম্যানিপুলেট করার জন্য প্রয়োজনীয় বিবরণও অন্তর্ভুক্ত করে। উত্স XMLEasy.xml নথিতে, ডেটা স্কিমার একটি লিঙ্ক উপস্থিত হয়েছে:

XMLEasy.xsd নথি স্বয়ংক্রিয়ভাবে একই ডিরেক্টরিতে তৈরি হয়েছিল যেখানে XMLEasy.xml অবস্থিত।

XSD স্কিমাগুলি বুঝতে শেখার জন্য, আপনাকে প্রথমে অতিরিক্ত উপাদান ছাড়াই ডেটার বিশুদ্ধ আকারে বর্ণনার সাথে কাজ করতে হবে। সারণি 11.1 ADO .NET অবজেক্টের সাথে আবদ্ধ না হয়ে তৈরি করা বেশ কয়েকটি সাধারণ XML নথি এবং তাদের স্কিমা দেখায়।

টেবিল 11.1। XSD স্কিমা তৈরির উদাহরণ
XML নথির বিষয়বস্তু XSD স্কিমা বিষয়বস্তু

1

বর্ণনা
একটি XMLEasy.xml ডকুমেন্টে, TOUR এলিমেন্ট হল রুট এলিমেন্ট যাতে IDTOUR চাইল্ড এলিমেন্ট থাকে। রুট উপাদানের জন্য সাধারণ স্কিম নিম্নরূপ:

: উপাদান সামগ্রী...

শিশু উপাদান এই মত বর্ণনা করা হয়:

XML নথির বিষয়বস্তু XSD স্কিমা বিষয়বস্তু

1 সাইপ্রাস RUB 25,000.00 দুটি প্রাপ্তবয়স্ক ভাউচারের মূল্যে একটি শিশুর মূল্য অন্তর্ভুক্ত রয়েছে (7 বছর পর্যন্ত) 2 গ্রীস 32,000.00 রুবি বিশেষ ছাড় আগস্ট এবং সেপ্টেম্বরে প্রযোজ্য 3 থাইল্যান্ড 30,000.00 রুবি বিমান ভাড়া সহ নয় 4 ইতালি 26,000.00 রুবি হোটেলে প্রাতঃরাশ ভ্রমণের মূল্যের অন্তর্ভুক্ত 5 ফ্রান্স 27,000.00 রুবি অতিরিক্ত ভ্রমণ ভ্রমণের মূল্য অন্তর্ভুক্ত করা হয় না

বর্ণনা
রুট টেবিল এলিমেন্টে একটি ট্যুর এলিমেন্ট থাকে, যার ফলে শিশু উপাদানের একটি গ্রুপ থাকে। পছন্দের উপাদানটি অন্যান্য উপাদানের নির্বাচন নিয়ন্ত্রণ করে, maxOccurs অ্যাট্রিবিউটের "সীমাহীন" মান দিয়ে নির্দেশ করে যে ট্যুর গ্রুপগুলি সীমাহীন হতে পারে।

: :

XML নথির বিষয়বস্তু XSD স্কিমা বিষয়বস্তু

1 সাইপ্রাস RUB 25,000.00 1 দুটি প্রাপ্তবয়স্ক ভাউচারের মূল্যে একটি শিশুর মূল্য অন্তর্ভুক্ত রয়েছে (7 বছর পর্যন্ত)


ভাত। 11.5।
বর্ণনা
IDTOUR এলিমেন্টের ডাটা টাইপ int এ সেট করা হয়েছে, ক্লোজড এলিমেন্টের ডাটা টাইপ বুলিয়ানে সেট করা হয়েছে এবং বাকিগুলো ডিফল্ট স্ট্রিং ডাটা টাইপ সেট করা হয়েছে। আপনি সরাসরি XML ডেটা স্কিমা মোডে ডেটা টাইপ পরিবর্তন করতে পারেন, তবে স্কিমা মোড ব্যবহার করা আরও সুবিধাজনক (এই ক্ষেত্রে মোডটিকে ডেটাসেট বলা হবে) ড্রপ-ডাউন তালিকা থেকে ডেটা টাইপ নির্বাচন করুন (চিত্র 11.5) :

কোর্স সফ্টওয়্যারটিতে আপনি XSD ফোল্ডারে (Code\Glava5\XSD) এই টেবিলের জন্য সমস্ত ফাইল পাবেন।

একটি XML নথিতে একটি ডেটা টাইপ সেট করা (সারণী 11.1 সর্বশেষ উদাহরণ) বিষয়বস্তু সীমাবদ্ধ করার একটি উপায়। একটি প্রদত্ত ধরনের মান সীমাবদ্ধ করতে অতিরিক্ত বৈশিষ্ট্য ব্যবহার করা হয়। নিম্নলিখিত স্কিমা ফ্র্যাগমেন্টে, PRICE উপাদানের মান 50 এবং 100 এর মধ্যে হতে হবে:

একটি XML ডকুমেন্টকে কিছু নির্দিষ্ট মানের মধ্যে সীমাবদ্ধ করতে, নিম্নলিখিত গঠনটি ব্যবহার করুন:

এখানে NAME উপাদানটি পাঁচটি দেশের নামের মধ্যে শুধুমাত্র একটি নির্দিষ্ট মান নিতে পারে।

একটি XSD স্কিমা বিকাশ করা বেশ অনেক কাজ। Visual Studio .NET-এর ভিজ্যুয়াল টুল এই কাজটিকে অনেক সহজ করে তোলে। মৌলিক ধারণাগুলি আয়ত্ত করার জন্য, অনেকগুলি স্বয়ংক্রিয়ভাবে তৈরি হওয়া XML নথি স্কিমাগুলি শেখার পরামর্শ দেওয়া হয়। সারণি 11.2-11.4 মুখ্য উপাদান এবং বৈশিষ্ট্যগুলির একটি বর্ণনা প্রদান করে যা সম্মুখীন হতে পারে।

টেবিল 11.2। XSD স্কিমা উপাদান
উপাদান বর্ণনা
সব নেস্টেড উপাদান যেকোনো ক্রমে সংজ্ঞায়িত করা যেতে পারে
টীকা মন্তব্য উপাদান অভিভাবক উপাদান এবং
যেকোনো যেকোন নেস্টেড উপাদান
anyAtribute কোনো গুণাবলী
app তথ্য মন্তব্য উপাদান. স্কিমার শিরোনাম নির্দিষ্ট করে
বৈশিষ্ট্য বৈশিষ্ট্য
অ্যাট্রিবিউট গ্রুপ অ্যাট্রিবিউট গ্রুপ
পছন্দ অন্যান্য উপাদান নির্বাচন. অপারেটরের অ্যানালগ "|" ডিটিডি-তে
জটিল বিষয়বস্তু বিধিনিষেধ বা মডেল এক্সটেনশনজটিল বিষয়বস্তুর ধরন
জটিল প্রকার জটিল উপাদান
ডকুমেন্টেশন মন্তব্য উপাদান. স্কিমা সম্পর্কে তথ্য প্রদান করে
উপাদান উপাদান
এক্সটেনশন উপাদান এক্সটেনশন
ক্ষেত্র ক্ষেত্র ঘোষণা। একটি উপাদান ভিতরে প্রযোজ্য ক্ষেত্র সংজ্ঞায়িত করতে
দল উপাদানের গ্রুপ
আমদানি অন্য স্কিমা থেকে একটি প্রকার ঘোষণা আমদানি করা হচ্ছে
অন্তর্ভুক্ত একটি বিদ্যমান নামস্থানে একটি ভিন্ন স্কিমা সহ
চাবি অন্য উপাদানের দিকে নির্দেশ করে একটি কী দিয়ে একটি উপাদান বা বৈশিষ্ট্য নির্দিষ্ট করা
keyref মূল নির্দেশ করে এমন উপাদান বা বৈশিষ্ট্য নির্দিষ্ট করা
তালিকা একটি উপাদান যা মানগুলির একটি তালিকা ধারণ করতে পারে৷
পুনরায় সংজ্ঞায়িত করা ওভাররাইডিং ইতিমধ্যে ঘোষিত উপাদান
সীমাবদ্ধতা উপাদান সীমাবদ্ধতা
স্কিমা স্কিমা মূল উপাদান
নির্বাচক XML উপাদান নির্বাচন করার জন্য নির্বাচক
ক্রম অন্যান্য উপাদানের ক্রম। অপারেটরের এনালগ "," ডিটিডিতে
সহজ বিষয়বস্তু একটি মডেল যার বিষয়বস্তু শুধুমাত্র অক্ষর ডেটা উপস্থাপন করে
সহজ প্রকার সরল উপাদান
মিলন একটি উপাদান বা বৈশিষ্ট্য যার একাধিক অর্থ থাকতে পারে
অনন্য একটি উপাদান বা বৈশিষ্ট্য যার একটি অনন্য মান থাকতে হবে৷
টেবিল 11.3। গুণাবলী - XSD স্কিমা সীমাবদ্ধতা
বৈশিষ্ট্য বর্ণনা
মানের গণনা তালিকা
দৈর্ঘ্য দৈর্ঘ্য
সর্বোচ্চ দৈর্ঘ্য সর্বোচ্চ দর্ঘ্য
ন্যূনতম দৈর্ঘ্য ন্যূনতম দৈর্ঘ্য
maxExclusive সর্বোচ্চ মূল্য
maxInclusive সর্বাধিক মান সহ
minএক্সক্লুসিভ সর্বনিম্ন মান
mininclusive ন্যূনতম মান অন্তর্ভুক্ত
ভগ্নাংশ সংখ্যা ভগ্নাংশ সংখ্যায় দশমিক স্থানের সংখ্যা
মোট সংখ্যা সংখ্যার সংখ্যা
প্যাটার্ন উপাদান বিষয়বস্তুর নমুনা (প্যাটার্ন)
ডিফল্ট ডিফল্ট উপাদান বা বৈশিষ্ট্য মান
elementFormDefault বিশ্বব্যাপী সংজ্ঞায়িত হিসাবে একটি স্থানীয় উপাদানের বৈশিষ্ট্য সেট করা
স্থির স্থির উপাদান বা বৈশিষ্ট্য মান
ফর্ম স্থানীয়ভাবে ঘোষিত উপাদান নির্দিষ্ট নথি দৃষ্টান্তে সংজ্ঞায়িত করা হয়
খবর ধরন তালিকা আইটেম প্রকার
সদস্য প্রকার ইউনিয়নে ব্যবহৃত সদস্যদের প্রকার
সর্বাধিক ঘটনা একটি উপাদানের সংঘটনের সর্বাধিক সংখ্যা
সামান্য ঘটনা একটি উপাদানের সংঘটনের ন্যূনতম সংখ্যা
মিশ্রিত একটি মিশ্র ধরনের আছে একটি উপাদান নির্দিষ্ট করা
নাম উপাদান বা বৈশিষ্ট্যের নাম
নামস্থান নামস্থান
কোন নামস্থান পরিকল্পিত নথির অবস্থান নির্দিষ্ট করে,
স্কিমা অবস্থান কোনো ফলের নামস্থান নেই
নিষ্কাশনযোগ্য একটি উপাদানের একটি খালি NULL মান থাকতে পারে তা নির্ধারণ করা (nil)
রেফ একটি বিশ্বব্যাপী সংজ্ঞায়িত উপাদান একটি রেফারেন্স সেট করা
স্কিমা অবস্থান সার্কিট সনাক্তকরণ
প্রতিস্থাপন গোষ্ঠী অন্যান্য উপাদানের সাথে উপাদানের প্রতিস্থাপন সংজ্ঞায়িত করা
টার্গেট নেমস্পেস ফলাফল স্কিমা নামস্থান
টাইপ খবর ধরন
ব্যবহার উপাদান প্রয়োজন বা না?
মান পরিকল্পিত উপাদান মান
xsi:nil একটি XML নথিতে একটি নাল (NULL) উপাদানের প্রকৃত বিষয়বস্তু সেট করা
xsi: স্কিমা অবস্থান XML নথিতে উপাদানটির প্রকৃত অবস্থান
xsi: প্রকার XML নথিতে উপাদানটির প্রকৃত প্রকার

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

সুতরাং, এফসিএস ওয়েবসাইটে নিবন্ধন করার পরে, এটি স্পষ্ট হয়ে গেছে যে রপ্তানি সংক্রান্ত পরিসংখ্যানগত প্রতিবেদন নথি তৈরি করার জন্য, পণ্য ও পরিষেবা বাণিজ্য ব্যবস্থাপনা নথিগুলির বিক্রয় থেকে ডেটা ডাউনলোড করা এবং ডাউনলোড করার জন্য একটি ফাইল তৈরি করা প্রয়োজন৷

দুটি সম্ভাব্য ডাউনলোড বিকল্প আছে।

প্রথমত: একটি এক্সেল ফাইল থেকে পণ্যগুলির সাথে ট্যাবুলার অংশটি লোড করা (এই বিকল্পটি একটি কার্যকরী বিকল্প হিসাবে বেছে নেওয়া হয়েছিল, কারণ এটির সুবিধা ছিল যে নথির "শিরোনাম" প্রক্রিয়াকরণে বিরক্ত করার প্রয়োজন নেই, তবে আপনি কেবল অনুলিপি করতে পারেন। আগেরটি, এটিকে "শিরোনাম" "এ পরিবর্তন করা যা প্রয়োজন ছিল)।

দ্বিতীয়: "ইলেক্ট্রনিক ডকুমেন্ট ফর্মের জন্য বিন্যাসের অ্যালবাম" আকারে FCS ওয়েবসাইট থেকে ডাউনলোড করা স্কিম অনুযায়ী একটি XML ফাইল তৈরি করা। অ্যালবামে মোটামুটি বড় সংখ্যক XSD স্কিম রয়েছে। তারা "পণ্যের চলাচলের জন্য অ্যাকাউন্টিংয়ের জন্য পরিসংখ্যানগত ফর্ম" এর একটি চিত্র এবং এটির প্রকারের বিবরণ সহ অতিরিক্ত ফাইল খুঁজে পেয়েছে। ডায়াগ্রামগুলি প্রসেসিং সহ আর্কাইভের নিবন্ধের সাথে সংযুক্ত করা হয়েছে।

XSD স্কিমা দেখতে, আমরা বিনামূল্যে Microsoft XML Notepad 2007 ব্যবহার করেছি।

চিত্রটি XSD স্কিমা সহ মূল ফাইলটি দেখায় "পণ্যের চলাচলের জন্য অ্যাকাউন্টিংয়ের জন্য পরিসংখ্যানগত ফর্ম।" চিত্রটি XSD স্কিমের প্রধান ব্লকগুলিকে হাইলাইট করে যা আমাদের এটি বুঝতে হবে।

ডায়াগ্রাম থেকে এটা স্পষ্ট যে আমাদের স্ট্যাটিকফর্ম টাইপ টাইপের "xs: element" শাখায় নির্দিষ্ট কাঠামো দিয়ে একটি XML ফাইল পূর্ণ করতে হবে।

গঠনটি বেশ জটিল হতে পারে (আমাদের ক্ষেত্রে যেমন)। শাখায় সরাসরি উপস্থিত টাইপ বিবরণ সহ, একটি পৃথক শাখায় স্থাপন করা হয়, বা এমনকি অন্য ফাইলে অবস্থিত।

এই কাঠামোর একটি টাইপ StaticFormType আছে, যার ফলে একটি বেস টাইপ BaseDocType, বিভিন্ন ধরনের অবজেক্ট এবং টেক্সট অ্যাট্রিবিউটের একটি সেট থাকে।

বেস টাইপ BaseDocStyle একটি ভিন্ন ফাইলে সংজ্ঞায়িত করা হয়েছে (এবং নামস্থান)
.

এই ফাইলটিতে অনেক ধরণের রয়েছে যা আমাদের ক্ষেত্রে ব্যবহার করা হয় না।

এখন 1C তে কাজ করা যাক। সংক্ষেপে, আমাদের যা করতে হবে তা নিচের দিকে আসে:

1. XDTO কারখানা তৈরি করা হচ্ছে

OurFactoryXDTO = CreateFactoryXDTO(ArrayFullFileNamesWithXSDSchemas);

2. XDTO ফ্যাক্টরিতে, সমস্ত জটিল ডেটা টাইপ তৈরি করা হয়, যা আমরা তৈরি করা XML ফাইলে পূরণ করব:

StaticFormType = MyFactoryXDTO.Type("urn:customs.ru:Information:CustomsDocuments:StaticForm:5.4.0", "StaticFormType");

একটি নির্দিষ্ট প্রকারের মধ্যে অন্তর্ভুক্ত ডেটা প্রকারগুলি এর বৈশিষ্ট্যগুলির সংগ্রহ থেকে প্রাপ্ত করা যেতে পারে:

CUOrganizationType = StaticFormType.Properties.Get("Consignee").Type; NameType = CUOrganizationType.Properties.Get("OrganizationName").Type; ShortNameType = CUOrganizationType.Properties.Get("ShortName").Type; LanguageCodeType = CUOrganizationType.Properties.Get("OrganizationLanguage").Type;

3. যখন সমস্ত জটিল ডেটা টাইপ তৈরি করা হয়, তখন আমরা তাদের উপর ভিত্তি করে একটি XML ফাইল গঠন তৈরি করি, যার মধ্যে XDTO ফ্যাক্টরি অবজেক্ট রয়েছে:

StaticFormType_XDTOObject = MyXDTOFactory.Create(StaticFormType); // নথি সহ সংগ্রহ NewDocuments = MyFactoryXDTO.Create(DocumentsType); NewDocuments.PrDocumentName = MyFactoryXDTO.Create(PrDocumentNameType, "ওয়েবিল"); NewDocuments.PrDocumentNumber = MyFactoryXDTO.Create(PrDocumentNumberType, "123-number"); NewDocuments.PrDocumentDate = MyFactoryXDTO.Create(PrDocumentDateType, "2014-10-05"); StaticFormType_XDTO.Documents.Add(New Documents);

একই সময়ে, প্রাথমিক (সরল প্রকার) বিবরণ পূরণ করুন।

4. এবং অবশেষে, আমরা XDTO ফ্যাক্টরি থেকে একটি ফাইলে সবকিছু আনলোড করি:

XML ফাইল = নতুন XML এন্ট্রি(); FileXML.OpenFile(ফাইলের নাম); FileXML.WriteXMLDeclaration(); MyXDTOFactory.WriteXML(XMLFile, StaticFormType_XDTOObject); FileXML.Close();

পুনশ্চ. সংরক্ষণাগারটিতে XML-এ একটি আপলোড টেমপ্লেট ফাইল রয়েছে (শুধুমাত্র কিছু বিবরণ তৈরি করা হয়েছে, যেখানে ফাইলটি পূরণ করা হয়েছে এমন সমস্ত ক্ষেত্রে প্রতিফলিত করে) এবং XSD স্কিমা।

একটি নির্দিষ্ট ডিরেক্টরিতে সমস্ত ফাইল আনজিপ করুন।

এতে XML তৈরি হবে।

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

XML ফাইল রিপ্রেজেন্টেশন এবং রিডিং

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

1C তে ডেটা আমদানির একটি উদাহরণ বিবেচনা করার জন্য, উপরে উপস্থাপিত ফাইলটি যথেষ্ট হবে। লিখিত পদ্ধতির জন্য XML ফাইলটি পড়তে সক্ষম হওয়ার জন্য, ফাইলটিতে নিজেই পাথ পাস করা যথেষ্ট। এটি ইন্টারফেসের মাধ্যমে করা যেতে পারে, ব্যবহারকারীদের ফাইলটি নিজেরাই নির্দিষ্ট করতে বা পাঠে হার্ড-কোডেড প্রক্রিয়াকরণের মাধ্যমে।

1C তে 100 MB পর্যন্ত XML এর সাথে কাজ করার জনপ্রিয় উপায় হল ডকুমেন্ট অবজেক্ট মডেল (DOM) ব্যবহার করা। এর অর্থ হল XML-এ উপস্থাপিত সমস্ত নথি নোডগুলিকে ক্রমানুসারে প্রক্রিয়া করা। অন্তর্নির্মিত 1C ভাষায়, এই অ্যালগরিদমটি এইরকম দেখাচ্ছে:

  1. XML ফাইলটি পড়ার প্রক্রিয়াগুলির ঘোষণা; নোড অতিক্রম করার জন্য লুপ;
  2. একটি নোডে ডেটা এবং গুণাবলী পড়া;
  3. তথ্য আউটপুট। প্রয়োজনে, এই পর্যায়ে লেখা ভেরিয়েবল বা সরাসরি প্রয়োজনীয় টেবিলে ঘটতে পারে;
  4. প্রক্রিয়া সমাপ্তি.
&OnServer পদ্ধতি ReadOnServer(PathToFile) //মেকানিজমের ঘোষণা রিডিং মেকানিজম = নতুন রিডিংএক্সএমএল; Reader.OpenFile(PathToFile); বিল্ডার = New BuilderDOM; ডকুমেন্ট = বিল্ডার।রিড(রিডার); Document.DocumentElement.ChildrenNodes লুপ //রিডিং ডেটা যদি element.NodeName = "Product" তারপর পণ্য = element; প্রতিটি মানের জন্য পণ্য থেকে। ChildrenNodes সাইকেল যদি values.NodeName = "Name" তারপর Name = values; রঙ = Name.Attributes.GetNamedElement("Color"); ElseIf values.NodeName = "মূল্য" তারপর Cost = values; মুদ্রা = Cost.Attributes.GetNamedItem("মুদ্রা"); যদি শেষ; এন্ডসাইকেল; //আউটপুট বার্তা বিজ্ঞপ্তি ("নাম: " + নাম। পাঠ্য বিষয়বস্তু + "; রঙ: "+ রঙ। মান +"; মূল্য: "+ মূল্য। পাঠ্য বিষয়বস্তু + "; মুদ্রা: "+ মুদ্রা। মান); যদি শেষ; এন্ডসাইকেল; //মেকানিজম বন্ধ করা নন-মেকানিজম রিডিং.ক্লোজ(); পদ্ধতির সমাপ্তি

ফলস্বরূপ, আমরা আমদানি করা ডেটা সহ ব্যবহারকারীকে বার্তা প্রদর্শন করি। আপনি পছন্দসই কাঠামোতে সমস্ত ডেটা রাখতে পারেন এবং এর উপর ভিত্তি করে, ডিরেক্টরিতে একটি নথি বা এন্ট্রি তৈরির প্রোগ্রাম করতে পারেন। xml এর সাথে 1C কাজের গতি বেশ বেশি, তাই অন্যান্য উত্সের সাথে ডেটা বিনিময় করার সময় এই বিন্যাসটি ক্রমবর্ধমানভাবে ব্যবহৃত হয়।

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

  1. xml ফাইলের সাথে সংযোগ করুন;
  2. আমরা প্রধান উপাদান তৈরি করি এবং তাদের কাছে ডেটা লিখি। আপনি যদি একটি XML ফাইলে প্রচুর পরিমাণে তথ্য আপলোড করতে চান তবে এই পর্যায়ে আপনি লুপ ব্যবহার করবেন। সতর্কতা অবলম্বন করুন এবং মনে রাখবেন যে ডেটা অনুরোধটি লুপের আগে করা উচিত, এবং এটিতে নয়;
  3. ফাইল বন্ধ করুন।
// Nomenclatura.xml ফাইলটি খুলুন এবং প্রধান উপাদান লিখুন RecordVFile = New RecordXML(); WriteToFile.OpenFile("D:\Nomenclatura.xml", "UTF-8"); WriteInFile.3writeStartItem("পণ্য"); // রেকর্ডের জন্য ডেটা নির্বাচন করুন SelectionFromDirectory = Directories.Nomenclature.Select(); //চক্র যেখানে রেকর্ডিং ঘটে যখন SelectingFromDirectory.Next() চক্র //নতুন ডেটা লেখার সময় RecordToFile.RecordBeginningElement("Product"); RecordInFile.RecordAttribute("নাম", SelectionFromDirectory.Name); WriteToFile.WriteAttribute("InitialPrice", Line(SelectionFromDirectory.InitialPrice)); WriteToFile.WriteEndElement(); এন্ডসাইকেল; //হেড এলিমেন্ট এবং WriteVFile ফাইলটি বন্ধ করুন।WriteEndElement(); WriteInFile.Close();

1C-তে XDTO প্রক্রিয়া

1C কোম্পানির ডেভেলপাররা XML - XDTO (XML ডেটা ট্রান্সফার অবজেক্ট) এর মাধ্যমে তথ্য বিনিময়ের জন্য তাদের নিজস্ব প্রক্রিয়া তৈরি করেছে। সংস্করণ 8.1 থেকে শুরু করে, প্ল্যাটফর্মটিতে একটি XML ফাইল তৈরির সমস্যাগুলি না নিয়েই অন্যান্য সিস্টেমের সাথে ডেটা বিনিময় করার ক্ষমতা রয়েছে৷ বেশিরভাগ প্রযুক্তিগত সমস্যা 1C দ্বারা যত্ন নেওয়া হয়, এবং আমাদের যা করতে হবে তা হল XML তৈরি করার জন্য প্রয়োজনীয় ডেটা নির্দেশ করে। সত্য, এর জন্য বিকাশকারীকে আগে থেকেই কিছু ম্যানিপুলেশন করতে হবে।

XDTO ব্যবহার করে একটি XML ফাইল লোড করার জন্য, আমাদের অবশ্যই 1C কে ফাইলটির গঠন বলতে হবে। এটি ডায়াগ্রামের একটি সেটের মাধ্যমে প্রেরণ করা হয় যা একটি পাঠ্য সম্পাদক বা একটি বিশেষ প্রোগ্রাম ব্যবহার করে তৈরি করা যেতে পারে। ফলস্বরূপ ফাইলটি XML ফাইলে ব্যবহৃত সাধারণ কাঠামো এবং ডেটা প্রকারগুলি বর্ণনা করা উচিত। নতুন XML পড়ার বা লেখার আগে, ডেভেলপারকে অবশ্যই XDTO প্যাকেজের অধীনে কনফিগারেশনে তার স্কিমা লোড করতে হবে।

এই ক্ষেত্রে, আমরা হাতে একটি সাধারণ প্যাকেজ তৈরি করব যাতে 1C আমাদের উদাহরণ ফাইলের গঠন বুঝতে পারে। ফাইল জেনারেশন সফলভাবে সম্পন্ন করার জন্য, আমাদের স্কিমাতে প্রতিফলিত করতে হবে যে আমাদের কাছে একটি প্রধান উপাদান এবং গুণাবলী সহ একটি সংযুক্তি রয়েছে। তৈরি স্কিমা অবশ্যই xsd ফরম্যাটে একটি ফাইলে রপ্তানি করতে হবে এবং xml এর সাথে স্থানান্তর করতে হবে, যাতে অন্য পক্ষকে কাঠামোটি মোকাবেলা করতে এবং xdto প্যাকেজটি আবার তৈরি করতে না হয়।


আগেরটির মতো একটি সার্ভার অ্যালগরিদম আপনাকে আপনার হার্ড ড্রাইভে নতুন XML সংরক্ষণ করতে সহায়তা করবে। একমাত্র পার্থক্য হল XDTO কারখানায় 1টি পণ্যের জন্য ডেটা যোগ করার প্রয়োজন - 8.3 1C প্ল্যাটফর্মের একটি বিশেষ প্রক্রিয়া। আরো নেস্টিং স্তর তৈরি করার প্রয়োজন হলে, আপনাকে প্রতিটি প্রধান উপাদান বর্ণনা করতে হবে।

//XML ফাইল খুলুন RecordVFile = নতুন RecordXML; WriteToFile.OpenFile("D:\Nomenclatura.xml", "UTF-8"); //1C-কে নির্দেশ করুন কি ধরনের ডেটা তৈরি করা উচিত - প্রধান উপাদান AllProducts = FactoryXDTO.Create(FactoryXDTO.Type("http://wiseadviceXML.org","Products")); //Select ডাটা আপলোড করার জন্য SelectionFromDirectory = Directories.Nomenclature.Select(); // Directory.Next() চক্র থেকে নির্বাচন করার সময় প্রধান উপাদানে পৃথক পণ্য যোগ করুন পণ্য = FactoryXDTO.Create(FactoryXDTO.Type("http://wiseadviceXML.org","Product")); Product.Name = Directory.Name থেকে নির্বাচন করুন; Product.InitialPrice = String(SelectionFromDirectory.InitialPrice); AllProducts. Add(Product); এন্ডসাইকেল; //ডেটা লিখুন এবং FactoryXDTO.WriteXML(WriteToFile, AllProducts) ফাইলটি বন্ধ করুন; WriteInFile.Close();

বিবেচিত প্রক্রিয়াগুলি বেশ সার্বজনীন এবং যদি সঠিকভাবে কনফিগার করা হয় তবে বেশিরভাগ সমস্যার সমাধান করতে পারে। যাইহোক, 1C এবং XML-এর মধ্যে মিথস্ক্রিয়ায় অনেকগুলি সূক্ষ্মতা রয়েছে। বাস্তব পরিস্থিতিতে সেগুলি অধ্যয়ন করা অনেক বেশি কার্যকর, এবং পরীক্ষার কাজগুলিতে নয় যেখানে একটি XML ফাইল প্রক্রিয়াকরণ বরং সংকীর্ণ সমস্যার সমাধান করে।

এই অধ্যায়টি আপনাকে দেখাবে কিভাবে XML স্কিমা লিখতে হয়। আপনি আরও শিখবেন যে চিত্রটি বিভিন্ন উপায়ে লেখা যেতে পারে।

XML নথি

আসুন "shiporder.xml" নামক এই XML নথিটি দেখি:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="shiporder.xsd">
জন স্মিথ

ওলা নর্ডম্যান

ল্যাংগট 23

4000 Stavanger
নরওয়ে


সাম্রাজ্য বার্লেস্ক
বিশেষ সংস্করণ
1
10.90


আপনার হৃদয় লুকিয়ে রাখুন
1
9.90

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

উপরের লাইন: Xmlns: XSI="http://www.w3.org/2001/XMLSchema-instance" XML পার্সারকে বলে যে এই নথিটি স্কিমা যাচাই করা উচিত৷ লাইন: XSI: noNamespaceSchemaLocation = "shiporder.xsd" স্কিম্যাটিক্স কোথায় অবস্থিত তা নির্দেশ করে (এখানে এটি "shiporder.xml" এর মতো একই ফোল্ডারে রয়েছে) .

একটি XML স্কিমা তৈরি করা হচ্ছে

এখন আমরা উপরের XML নথির জন্য একটি স্কিমা তৈরি করতে চাই।

আমরা একটি নতুন ফাইল খোলার মাধ্যমে শুরু করব, যাকে আমরা "shiporder.xsd" বলব। একটি স্কিমা তৈরি করতে আমরা কেবল XML নথিতে কাঠামো অনুসরণ করতে পারি এবং প্রতিটি উপাদানকে আমরা যেমন খুঁজে পাই তা সংজ্ঞায়িত করতে পারি। আমরা একটি প্রমিত XML ঘোষণা দিয়ে শুরু করব তারপরে একটি xs:স্কিমা উপাদান যা স্কিমাকে সংজ্ঞায়িত করে:



...

উপরের স্কিমাতে আমরা স্ট্যান্ডার্ড নেমস্পেস (xs) ব্যবহার করছি এবং এই নেমস্পেসের সাথে যুক্ত URI হল স্কিমা ল্যাঙ্গুয়েজ ডেফিনিশন, যার স্ট্যান্ডার্ড মান http://www.w3.org/2001/XMLSchema।

পরবর্তী, আমাদের একটি "শিপর্ডার" উপাদান সংজ্ঞায়িত করতে হবে। এই উপাদানটির একটি বৈশিষ্ট্য রয়েছে এবং এতে অন্যান্য উপাদান রয়েছে, তাই আমরা এটিকে একটি জটিল প্রকার হিসাবে বিবেচনা করি। একটি "শিপর্ডার" এলিমেন্টের চাইল্ড এলিমেন্ট একটি xs দ্বারা বেষ্টিত থাকে: সিকোয়েন্স এলিমেন্ট যা সাব এলিমেন্টের একটি অর্ডারকৃত ক্রম সংজ্ঞায়িত করে:




...


তারপরে আমাদের অবশ্যই "অর্ডারপারসন" উপাদানটিকে একটি সাধারণ প্রকার হিসাবে সংজ্ঞায়িত করতে হবে (যেহেতু এটিতে কোনও বৈশিষ্ট্য বা অন্যান্য উপাদান নেই)। প্রকার (xs:স্ট্রিং) XML স্কিমার সাথে যুক্ত একটি নামস্থান উপসর্গের সাথে প্রিফিক্স করা হয়, যা একটি পূর্বনির্ধারিত স্কিমা ডেটা টাইপ নির্দিষ্ট করে:










স্কিমগুলির সাহায্যে আমরা MaxOccurs এবং MinOccurs বৈশিষ্ট্য সহ একটি উপাদানের সম্ভাব্য ঘটনার সংখ্যা নির্ধারণ করতে পারি। MaxOccurs একটি উপাদানের জন্য সর্বাধিক সংঘটনের সংখ্যা নির্দিষ্ট করে এবং MinOccurs একটি উপাদানের জন্য সর্বনিম্ন সংঘটনের সংখ্যা নির্দিষ্ট করে। MaxOccurs এবং MinOccurs উভয়ের ডিফল্ট মান হল 1!

এখন আমরা "আইটেম" উপাদান সংজ্ঞায়িত করতে পারি। এই উপাদানটি একটি "শিপর্ডার" উপাদানের মধ্যে একাধিকবার প্রদর্শিত হতে পারে। এটি "আইটেম" উপাদানটির maxOccurs অ্যাট্রিবিউটটিকে "আনবাউন্ডেড" এ সেট করে নির্ধারিত হয়, যার অর্থ হল লেখক যতটা চান "আইটেম" উপাদানের যতগুলি ঘটনা ঘটতে পারে। মনে রাখবেন যে "নোট" উপাদানটি ঐচ্ছিক। আমরা minOccurs অ্যাট্রিবিউটকে শূন্যে সেট করে এটি সংজ্ঞায়িত করেছি:










এখন আমরা উপাদানটির "শিপর্ডার" বৈশিষ্ট্য ঘোষণা করতে পারি। যেহেতু এটি একটি প্রয়োজনীয় বৈশিষ্ট্য আমরা use="required" নির্দিষ্ট করি।

দ্রষ্টব্য: অ্যাট্রিবিউট বিবৃতি সবসময় শেষ হতে হবে:

এখানে "shiporder.xsd" নামক স্কিমা ফাইলের একটি সম্পূর্ণ তালিকা রয়েছে:





























আলাদা সার্কিট

পূর্ববর্তী নকশা পদ্ধতি খুবই সহজ, কিন্তু নথি জটিল হলে পড়া এবং বজায় রাখা কঠিন হতে পারে।

পরবর্তী ডিজাইন পদ্ধতিটি সমস্ত উপাদান এবং বৈশিষ্ট্যগুলিকে সংজ্ঞায়িত করার উপর ভিত্তি করে এবং তারপরে রেফ অ্যাট্রিবিউট ব্যবহার করে রেফারেন্স করার উপর ভিত্তি করে।

এখানে স্কিম্যাটিক ফাইলের নতুন ডিজাইন ("shiporder.xsd"):








































নামযুক্ত প্রকারগুলি ব্যবহার করে

তৃতীয় নকশা পদ্ধতি ক্লাস বা প্রকারগুলিকে সংজ্ঞায়িত করে, যা উপাদান সংজ্ঞাগুলিকে পুনরায় ব্যবহার করার অনুমতি দেয়। এটি উপাদানগুলির নামকরণের মাধ্যমে করা হয় simpleTypes এবং complexTypes, এবং তারপর উপাদানের প্রকার বৈশিষ্ট্যের মাধ্যমে তাদের উল্লেখ করে।

এখানে স্কিম্যাটিক ফাইলের তৃতীয় নকশা ("shiporder.xsd"):

































সীমাবদ্ধতা উপাদানটি নির্দেশ করে যে ডাটা টাইপটি W3C XML স্কিমা ডেটা টাইপ নেমস্পেস থেকে নেওয়া হয়েছে। সুতরাং নিম্নলিখিত স্নিপেটের অর্থ হল উপাদান বা বৈশিষ্ট্যের মান অবশ্যই একটি স্ট্রিংয়ের মান হতে হবে:

সীমাবদ্ধতা উপাদানটি প্রায়শই উপাদানগুলিতে সীমাবদ্ধতা প্রয়োগ করতে ব্যবহৃত হয়। উপরের চিত্র থেকে নিম্নলিখিত লাইনগুলি দেখুন:





এটি নির্দিষ্ট করে যে উপাদান বা বৈশিষ্ট্যের মান অবশ্যই একটি স্ট্রিং হতে হবে, এটি প্রতি লাইনে ঠিক ছয়টি অক্ষর হতে হবে এবং সেই অক্ষরগুলি অবশ্যই 0 এবং 9 এর মধ্যে একটি সংখ্যা হতে হবে।

XDTO হল একটি 1C প্রক্রিয়া যা 1C-তে ওয়েব পরিষেবা তৈরি এবং ব্যবহার করার সময় প্রয়োজন।

XDTO 1C প্যাকেজগুলি আপনাকে XML-এ এবং থেকে ডেটা রূপান্তর করার জন্য প্রয়োজনীয় XML ফাইলের গঠন বর্ণনা করতে দেয়।

যারা আগ্রহী তাদের জন্য, আসুন আরও বিস্তারিতভাবে প্রশ্নটি দেখি।

XML ফাইল ইন্টারনেটের মাধ্যমে প্রেরণ করা হয় এবং অনেক প্রোগ্রাম দ্বারা পড়া যায়।

তারা অনুভূত হয় - এর মানে এটি তাদের কোডে হার্ডওয়্যার করা হয়েছে - যদি আপনি XML ফাইলে একটি নির্দিষ্ট উপাদানের নাম পান - তাহলে এটি এইভাবে উপলব্ধি করুন এবং এটি করুন।

অতএব, যদি আমরা অ্যাপল নামটি ব্যবহার করি, তাহলে মোটামুটি উচ্চ সম্ভাবনা রয়েছে যে অন্য কোনও প্রোগ্রাম "মনে করতে পারে" যে এটি অ্যাপলটি জানে, তবে আমরা আমাদের নিজস্ব কিছু বোঝাতে চেয়েছিলাম।

এটি যাতে না ঘটে এবং স্পষ্টভাবে নির্দেশ করতে যে আমাদের অ্যাপল অন্য সকলের থেকে আলাদা, ফাইলটিতে নামস্থানের নাম নির্দিষ্ট করা যেতে পারে - একটি উপসর্গ যা উপাদানগুলির নামের আগে ব্যবহৃত হয়।

নামস্থান (ইংরেজি নামস্থানে) এভাবে সংজ্ঞায়িত করা হয়েছে - xmlns:SpaceName = “URL”, উদাহরণস্বরূপ:
xmlns:store = "http://store.ru"

কেন আপনি একটি URL প্রয়োজন?

অতএব, একটি নির্দিষ্ট অনন্য শনাক্তকারী নির্দিষ্ট করা হয়েছে, যা নামস্থানের লেখককেও সনাক্ত করে।

স্বাভাবিকভাবেই, এটা ধরে নেওয়া হয় যে যে ব্যক্তি নামস্থান নির্দেশ করেছেন তিনি একজন অত্যন্ত সৎ ব্যক্তি এবং তার সাইট নির্দেশ করেছেন এবং একটি সাইটের সাথে বিভিন্ন নামস্থান ব্যবহার করেন না।

যাইহোক, তারা সাধারণত শুধুমাত্র সাইটের URLই নয়, সাইটের একটি নির্দিষ্ট ফোল্ডারের URL নির্দেশ করে, যাতে কিছু ঘটলে, আপনি একটি ভিন্ন পরিস্থিতিতে ব্যবহারের জন্য সাইটের অন্য ফোল্ডারে আরেকটি নামস্থান তৈরি করতে পারেন।

একটি বস্তু হল একটি নির্দিষ্ট ডেটা স্ট্রাকচার, স্বয়ংসম্পূর্ণ, যার সমস্ত ডেটা রয়েছে।

যেহেতু স্ট্রাকচার্ড ডেটা XML-এ বর্ণনা করা হয়েছে, অর্থাৎ, একটি কাঠামোর আকারে যার নিজস্ব বৈশিষ্ট্য রয়েছে, ইত্যাদি, সেগুলিকে অবজেক্ট হিসাবে দেখা যেতে পারে।

প্রদত্ত উদাহরণে, এটি একটি সম্পত্তি এবং একটি নেস্টেড উপাদান সহ একটি তালিকা বস্তু হতে পারে।

DOM হল একটি XML ফাইলকে একটি নির্দিষ্ট বিন্যাসে পাঠ্য হিসাবে নয়, কিন্তু বৈশিষ্ট্য, ক্ষেত্র ইত্যাদি সহ বস্তুর সংগ্রহ হিসাবে বিবেচনা করার একটি উপায়।

XML ফাইলের বিবরণ

যদি আমরা দুটি প্রোগ্রামের মধ্যে বিনিময় করার জন্য ক্রমাগত একটি নির্দিষ্ট কাঠামোর একটি ফাইল ব্যবহার করি, আমরা সম্ভবত এটি করতে চাই:

  • নির্দিষ্ট কিছু নাম ব্যবহার করা
  • সেই উপাদানগুলি থাকা যা আমরা আশা করি (যা "আমাদের বিনিময়ে ব্যবহার করতে হবে")
  • যাতে গুণাবলীতে আমরা যে প্রকারগুলি আশা করি তা ধারণ করে (স্ট্রিং, সংখ্যা, ইত্যাদি)।

XML গঠন বর্ণনা করতে নিম্নলিখিত ফাইল বিন্যাস মান বিদ্যমান (যা একটি প্লেইন টেক্সট ফাইলেও সংরক্ষিত থাকে):

  • DTD এক্সটেনশন - ডকুমেন্ট টাইপ সংজ্ঞা
  • এক্সএসডি এক্সটেনশন - এক্সএমএল শেমা।

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

XDTO 1C একটি টুল যা আপনাকে কনফিগারেশনে একটি XML ফাইলের বিবরণ যোগ করতে দেয়। বা বরং, এটি বর্ণনা করা ফাইল নয়, তবে নির্দিষ্ট XML কাঠামো।

যে প্রকারগুলি ব্যবহার করা যেতে পারে তা নির্দেশ করতে, একটি তালিকা বা একটি লাইব্রেরি ব্যবহার করা হয়, যাকে XDTO 1C কারখানা বলা হয়।

এই ফ্যাক্টরিটি উভয় সাধারণ প্রকার (স্ট্রিং, সংখ্যা, তারিখ) নির্দিষ্ট করে, যা সাধারণত অন্যান্য ভাষা, প্রোগ্রাম ইত্যাদিতে ব্যবহৃত হয়, তবে 1C প্রকারগুলিও, যা 1C এবং একটি নির্দিষ্ট কনফিগারেশনে ব্যবহৃত হয়।

XDTO 1C কারখানা নিজেই বেশ কয়েকটি প্যাকেজ নিয়ে গঠিত। প্রাথমিক প্রকারগুলি www.w3.org নামক একটি প্যাকেজে বর্ণনা করা হয়েছে৷

বর্তমান কনফিগারেশন ডেটা প্রকারগুলি প্যাকেজে বর্ণনা করা হয়েছে http://v8.1c.ru/8.1/data/enterprise/current-config

ইংরেজি-ভাষা ফর্ম (CatalogRef, CatalogObject, DocumentRef, DocumentObject) যোগ করে কনফিগারারের নাম অনুসারে প্রকারগুলিকে নামকরণ করা হয়েছে, উদাহরণস্বরূপ:

CatalogObject.Nomenclature

XDTO 1C প্যাকেজ যোগ করা হচ্ছে

এই সব অবশ্যই শান্ত শোনাচ্ছে. এবং আমরা এখনও XSLT-এর বিষয়ে আসিনি - XML ​​ফাইলগুলিকে অন্য কিছুতে রূপান্তর করার একটি উপায়, যেমন HTML। XML এর বিষয় অত্যন্ত বড় এবং একটি পৃথক বইতেও কভার করা কঠিন।

আমাদের কাজ হল বোঝা যে XDTO 1C আমাদের বর্ণনা করতে দেয় যে একটি XML প্যাকেজ তৈরি করা বা পড়ার জন্য কোন উপাদান থাকা উচিত।

XDTO 1C প্যাকেজগুলি সাধারণ/XDTO 1C প্যাকেজ শাখার কনফিগারেশনে অবস্থিত।

আপনি XDTO প্যাকেজটিকে 1C-তে ম্যানুয়ালি যুক্ত করতে পারেন (ঠান্ডা!), তবে স্কিমের রেডিমেড বিবরণ সহ সংশ্লিষ্ট XSD ফাইলটি পেতে ভাল।

যেকোনো কনফিগারেশনের বস্তুর জন্য XSD স্কিমার বিবরণ General/XDTO 1C প্যাকেজ শাখায় ক্লিক করে এবং মেনু আইটেম এক্সপোর্ট XML কনফিগারেশন স্কিমা নির্বাচন করে পাওয়া যেতে পারে।

ফাইলটি পাঠ্য, আপনি উইন্ডোজ নোটপ্যাডে এটি সম্পাদনা করতে পারেন, আপনার প্রয়োজন নেই এমন অপ্রয়োজনীয় বস্তুগুলি সরিয়ে ফেলতে পারেন।

আপনি General/XDTO 1C প্যাকেজ শাখায় ডান-ক্লিক করে এবং আমদানি XML স্কিমা মেনু আইটেমটি নির্বাচন করে 1C-তে একটি রেডিমেড XSD স্কিমা যোগ করতে পারেন।

XDTO 1C প্রক্রিয়া ব্যবহার করে

XDTO 1C এর সাথে কাজ করা মানে XML-এ এবং থেকে মানগুলিকে রূপান্তর করা।

কাজটি 1C ল্যাঙ্গুয়েজ অবজেক্ট রিডিং XML/Writing XML ব্যবহার করে করা হয়।

XDTO 1C প্রক্রিয়ার সাথে কাজ করার সময়, আপনি যে প্যাকেজটির সাথে কাজ করছেন তা অবশ্যই নির্দেশ করতে হবে। এটি একটি আদর্শ প্যাকেজ হতে পারে (উপরে আলোচনা করা হয়েছে, XDTO দেখুন) বা কনফিগারেশনে যোগ করা একটি প্যাকেজ। প্যাকেজে নির্দিষ্ট URL দ্বারা প্যাকেজ সনাক্ত করা হয়।

কাজ করার দুটি প্রধান সহজ উপায় হল:

  • সিরিয়ালাইজেশন - 1C থেকে XML এবং তদ্বিপরীত মানগুলির স্বয়ংক্রিয় রূপান্তর
  • একটি বস্তু তৈরি করা, তার ক্ষেত্রগুলি পূরণ করা, XML-এ লেখা (এবং, সেই অনুযায়ী, XML থেকে পড়া এবং তারপরে তার ক্ষেত্রগুলি পড়া)।

মান ক্রমিককরণের উদাহরণ:
সিরিয়ালাইজার = নতুন সিরিয়ালাইজারএক্সডিটিও(ফ্যাক্টরিএক্সডিটিও);
XML ফাইল = নতুন XML এন্ট্রি();
FileXML.OpenFile("ফাইলের নাম");
Serializer.WriteXML(XMLFile, Value1C);

একটি বস্তু পড়া/লেখার উদাহরণ:

DirectoryObjectXDTO = FactoryXDTO.Create(FactoryXDTO.Type("http://v8.1c.ru/8.1/data/enterprise/current-config", "CatalogObject.Warehouses"));
ফিল প্রপার্টি ভ্যালুস(ডিরেক্টরিঅবজেক্টএক্সডিটিও, ডিরেক্টরিলিঙ্ক 1সি);