এক্সএমএল স্কিমা (এক্সএসডি) বৈধতা সরঞ্জাম? [বন্ধ]


266

অফিসে আমরা বর্তমানে একটি অ্যাপ্লিকেশন লিখছি যা আমাদের দেওয়া একটি স্কিমার বিরুদ্ধে এক্সএমএল ফাইল তৈরি করবে। আমাদের .XSD ফাইলে স্কিমা রয়েছে।

উত্পাদিত এক্সএমএল স্কিমার সাথে মেলে কিনা তা যাচাই করার জন্য কি এমন কোন সরঞ্জাম বা লাইব্রেরি রয়েছে যা আমরা স্বয়ংক্রিয় পরীক্ষার জন্য ব্যবহার করতে পারি?

আমরা বাণিজ্যিক সরঞ্জামের জন্য উপযুক্ত এমন ফ্রি সরঞ্জামগুলিকে পছন্দ করব যদিও আমরা স্কিমা পরীক্ষককে বান্ডিল করব না সুতরাং এটি কেবল বিকাশের সময় ডেভস দ্বারা ব্যবহারের যোগ্য হওয়া দরকার।

আমাদের বিকাশের ভাষাটি সি ++ হয় যদি এতে কোনও তফাত আসে, যদিও আমি মনে করি না যে এটি xML ফাইল তৈরি করতে পারে এবং তারপরে পরীক্ষায় একটি পৃথক প্রোগ্রাম কল করে যাচাই করতে পারে।


132
আমি পছন্দ করি যে এই "গঠনমূলক নয়" প্রশ্নগুলির মধ্যে কতগুলি শীর্ষস্থানীয় গুগল অনুসন্ধান ফলাফলগুলির জন্য অনুসন্ধান করছি এবং উত্তরগুলি কার্যকর
ম্যাট ফ্রেকে

1
আমি বুঝতে পারি কোথা থেকে গঠনমূলক নয় tive সত্য, যদিও এটি একটি দুর্দান্ত প্রশ্ন এবং বিতর্ক / তর্কগুলি মাঝে মাঝে দুর্দান্ত উত্তরগুলি পেয়ে যায়
ম্যাট

22
এটি হ'ল অ্যাডমিনরা হ'ল পাল্টা উত্পাদনশীল হচ্ছে
anon58192932

এটা একটা মধ্যে কটাক্ষপাত করা হয়তো মূল্য অনুরূপ প্রশ্ন প্রেক্ষাপটে ম্যাভেন ভবন হাতিয়ার।
আলবার্তো

ব্যবহার করে দেখুন codverter.com/src/xmltoxsd
jonathana

উত্তর:


239

কিছু গবেষণার পরে, আমি মনে করি সেরা উত্তরটি হল জেরেস , কারণ এটি সমস্ত এক্সএসডি প্রয়োগ করে, এটি ক্রস-প্ল্যাটফর্ম এবং ব্যাপকভাবে ব্যবহৃত হয়। ডিফল্ট জেআরই পার্সার ব্যবহার করে কমান্ড লাইন থেকে যাচাই করার জন্য আমি গিথুবে একটি ছোট জাভা প্রকল্প তৈরি করেছি , যা সাধারণত জেরেসেস। এটি উইন্ডোজ / ম্যাক / লিনাক্সে ব্যবহার করা যেতে পারে।

আপনি যদি এটির ব্যবহার না করেন তবে জেরেসের একটি সি ++ সংস্করণও পাওয়া যায়। StdInParse ইউটিলিটি এটা কম্যান্ড লাইন থেকে কল করতে ব্যবহার করা যাবে। এছাড়াও, এই পয়েন্ট নিচে একটি মন্তব্যকারী সম্পূর্ণ মোড়কের ইউটিলিটি

আপনি xmllint ব্যবহার করতে পারেন, যা libxML এর অংশ । আপনি ইতিমধ্যে এটি ইনস্টল করা থাকতে পারে। ব্যবহারের উদাহরণ:

xmllint --noout --schema XSD_FILE XML_FILE

একটি সমস্যা হ'ল libxML সমস্ত নির্দিষ্টকরণের প্রয়োগ করে না, সুতরাং আপনি ইস্যুতে চলে যেতে পারেন :(

বিকল্পভাবে, আপনি যদি উইন্ডোজটিতে থাকেন তবে আপনি এমএসএক্সএমএল ব্যবহার করতে পারেন , তবে আপনাকে এটি কল করতে কোনও ধরণের র‌্যাপারের প্রয়োজন হবে, যেমন এই ডিডিজে নিবন্ধে বর্ণিত জিইউআই । তবে মনে Windows এ অধিকাংশ লোক একটি XML এডিটর, এই ধরনের নোটপ্যাড হিসাবে (বর্ণনা অনুযায়ী ব্যবহার ++, Nate এর উত্তর ) অথবা এক্সএমএল নোটপ্যাড 2007 যেমন SteveC দ্বারা প্রস্তাবিত (এছাড়াও আছে বিভিন্ন বাণিজ্যিক সম্পাদকদের যা আমি এখানে উল্লেখ করব না হয়)।

অবশেষে, আপনি বিভিন্ন প্রোগ্রাম পাবেন, দুর্ভাগ্যক্রমে, বিভিন্ন ফলাফল দেবে। এটি মূলত এক্সএসডি অনুমানের জটিলতার কারণে। আপনি বেশ কয়েকটি সরঞ্জাম দিয়ে আপনার স্কিমা পরীক্ষা করতে চাইতে পারেন।

আপডেট : আমি এটি একটি ব্লগ পোস্টে প্রসারিত করেছি ।


1
আমি নিম্নলিখিতটি সহায়ক বলে খুঁজে পেয়েছি: jmvanel.free.fr/xsd/README.html
ম্যাথু হেগার্টি

উদাহরণস্বরূপ স্টিডিনপার্সের ব্যবহার (লিনাক্সে) মাইগথ দরকারী: StdInParse -n -s -f -v = সর্বদা <এক্সএমএল_ফাইলে। এক্সএমএল_ফাইলে স্কিমা অবস্থান অন্তর্ভুক্ত করা উচিত। আমার জন্য এটি এক্সমিলিন্টের চেয়ে আরও সম্পূর্ণ ফলাফল দেয়।
হেলসিম

3
এক্সসি ব্যবহার করার জন্য কোনও প্রোগ্রামকে জিজ্ঞাসা করার কোনও উপায় আছে: সমস্ত এক্সএসডি ম্যানুয়ালি খাওয়ানোর পরিবর্তে স্কিমা লোকেশন?
গ্যাবর গারামি

@ গাবরগড়ামি এই মুহুর্তে নয়, তবে এটি একটি বৈশিষ্ট্যটির অনুরোধ: github.com/amouat/xsd-uthorator/issues/5
অ্যাড্রিয়ান

1
xmllintদুর্ভাগ্যক্রমে XML রেজেক্স অনুগত নয়, তাই কিছু বৈধ এক্সএমএল রেজেক্সগুলি এর মধ্য দিয়ে যাবে না
সের্গে বুশমানভ

112

এক্সপিএল টুলস নামে নোটপ্যাড ++ এর জন্য একটি প্লাগইন রয়েছে যা একটি এক্সএসডি এর বিপরীতে এক্সএমএল যাচাইকরণ এবং বৈধতা দেয়।

আপনি এটি এখানে কীভাবে ব্যবহার করবেন তা দেখতে পারেন ।


5
-1, এই প্লাগইনটি ইনস্টল করতে একটি ব্যথা
jcollum

2
আমি এনপিপি 5.8.6, এক্সএমএলটুলস 2.3.1 ইউনিকোড বিটা 2 আর 805 দিয়ে পরীক্ষা করেছি, এটি দুর্দান্ত কাজ করে।
পালানী

5
দুর্দান্ত প্লাগইন। ইনস্টলেশন সংক্রান্ত সহায়তার জন্য নোটপ্যাড ++ এক্সএমটিটিউল ইনস্টল করা হচ্ছে না তা দেখুন ।
লাডেজ

16
এবং সংস্করণ 5.8.7 সহ, নোটপ্যাড ++ এর নিজস্ব প্লাগইন পরিচালক ("প্লাগিনগুলি / প্লাগইন পরিচালক") ইনস্টলেশন প্রক্রিয়াটিকে স্বয়ংক্রিয় করে তোলে।
জ্বালানী

1
@ ফ্রেঞ্জএবনার আমারও একই সমস্যা ছিল। যদি XMLনিজেই কোনও XSDফাইলের উল্লেখ হয় , উদাহরণস্বরূপ xsi:noNamespaceSchemaLocation="file.xsd", তবে এক্সএমএল সরঞ্জামগুলি আপনাকে একটি "সেট" সংলাপ দেওয়ার পরিবর্তে এটি ব্যবহারের চেষ্টা করবে।
theblang

22

xMLstarlet একটি কমান্ড-লাইন সরঞ্জাম যা এটি এবং আরও অনেক কিছু করবে:

। xMLstarlet ভাল - সাহায্য he
এক্সএমএল স্টারলেট টুলকিট: এক্সএমএল নথি (গুলি) যাচাই করুন
ব্যবহার: xMLstarlet ভাল <options> [<xML- ফাইল- অথবা-uri> ...]
যেখানে <options>
  -w বা - ভাল-গঠন - কেবল সু-গঠনের বৈধতা দিন (ডিফল্ট)
  -d বা --dtd <dtd-file> - ডিটিডির বিপরীতে বৈধতা দিন
  -s বা --xsd <xsd-file> - এক্সএসডি স্কিমার বিরুদ্ধে বৈধতা দিন
  -ই বা - এম্বেড - এম্বেডেড ডিটিডি ব্যবহার করে যাচাই করুন
  -r বা --relaxng <rng-file> - রিল্যাক্স-এনজি স্কিমার বিরুদ্ধে বৈধতা দিন
  -e বা --err - stderr এ ভার্বোজ ত্রুটির বার্তা মুদ্রণ করুন
  -b বা --list-Bad - কেবলমাত্র বৈধ নয় এমন ফাইলগুলির তালিকা দিন
  -g বা --list-good - কেবলমাত্র যাচাই করে এমন ফাইলগুলির তালিকা দিন
  -কিউ বা - কিউয়েট - ফাইলগুলি তালিকাভুক্ত করবেন না (কেবলমাত্র ফলাফলের ফলাফলের কোড)

দ্রষ্টব্য: এক্সএমএল স্কিমাস এর অসম্পূর্ণতার কারণে এখনও পুরোপুরি সমর্থিত নয়
      libxML2 এ সমর্থন করুন (দেখুন http://xmlsoft.org)

এক্সএমএল স্টারলেট কোয়েরি / সম্পাদনা / চেক / রূপান্তর করার জন্য একটি কমান্ড লাইন টুলকিট
এক্সএমএল নথি (আরও তথ্যের জন্য দেখুন http://xMLstar.sourceforge.net/)

আপনার ক্ষেত্রে ব্যবহারের লাইন বরাবর হবে:

xmlstarlet val --xsd your_schema.xsd your_file.xml

3
আপনি কি জানেন যে এক্সএমএল স্কিমাকে সম্পূর্ণ সমর্থন না করার বিষয়ে সতর্কতাটি কতটা গুরুতর?
জেসন ডাগিত

2
অন্যান্য উত্তর দ্বারা বিচার করা xMLstarlet এর এক্সএসডি বাস্তবায়নে কিছুটা দুর্বল।
জেসন ডাগিত

3
প্রদত্ত এক্সএমএল স্টারলেট কেবল হুডের নীচে libxML2 ব্যবহার করে, সম্ভবত xmllint ব্যবহার করা সহজ যা লিবক্সএমএমএল 2 দ্বারা বান্ডিল এবং স্বীকৃত উত্তরে ব্যাখ্যা করা হয়েছে।
অ্যাড্রিয়ান মৌআত

@ জেসনড্যাগিট, ... এটি এক্সএমলিন্টের মতো ঠিক দুর্বল - তারা একই লাইব্রেরি বাস্তবায়ন ব্যবহার করে।
চার্লস ডাফি

বিষয়বস্তু মডেল নির্বিচারবাদী নয়। :-(
গ্রেগ

16

উইন্ডোজের জন্য বিনামূল্যে এক্সএমএল নোটপ্যাড 2007 রয়েছে । এর বিপরীতে বৈধতা পাওয়ার জন্য আপনি এক্সএসডি নির্বাচন করতে পারেন

আপডেট: আরও ভাল, এক্সএমএল সরঞ্জাম প্লাগইন সহ নোটপ্যাড ++ ব্যবহার করুন


5

ডিসিশনসোফ্টের অনলাইন এক্সএমএল স্কিমা ভ্যালিডেটর আপনাকে প্রদত্ত স্কিমার বিপরীতে একটি এক্সএমএল ফাইল চেক করতে দেয়।


1
লিঙ্কটি আর পৌঁছানো যায় না ...
ওবুনডুড্রয়েড


3

আমি জেরেস ব্যবহার করি:

http://xerces.apache.org/xerces-c/


1
XSLT 2.0 এর XSD এর বিপরীতে কোনও XSLT ফাইলের বৈধতা যাচাই করার জন্য তাদের কাছে একটি কমান্ড লাইন রয়েছে যা কনসোল থেকে ব্যবহার করা যেতে পারে?
অ্যালেক্সিস উইল্ক

হ্যাঁ, আপনি এর সাথে একটি সি এল এল সরঞ্জাম ইনস্টল করতে পারেন sudo apt install libxerces-c-samplesএবং তারপরে দস্তাবেজটি পরীক্ষা করতে পারেন StdInParse -v=always -n -s < document.xml
jgrocha


2

আমি শুধু স্কিমা শিখছি। আমি RELAX NG ব্যবহার করছি এবং বৈধতা পাওয়ার জন্য xmllint ব্যবহার করছি। Xmlllint থেকে বেরিয়ে আসা ত্রুটিগুলি দেখে আমি হতাশ হয়ে যাচ্ছি। আমার ইচ্ছা যদি তারা আরও কিছু তথ্যপূর্ণ হয়।

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

আমি খুব জটিল নিয়মের সাথে কিছু খুব জটিল এক্সএমএল নিয়ে কাজ করছি এবং আমি এই বিষয়টিতে নতুন তাই কোন বৈশিষ্ট্যটি অনুপস্থিত তা ট্র্যাকিংয়ের জন্য অনেক বেশি সময় নিচ্ছে।

আপডেট: আমি সবেমাত্র একটি জাভা সরঞ্জাম পেয়েছি যা আমি খুব পছন্দ করি। এটি xmllint এর মতো কমান্ড লাইন থেকে চালানো যেতে পারে এবং এটি RELAX NG সমর্থন করে: https://msv.dev.java.net/


2

আমি 'কোরফিলিং' থেকে এই অনলাইন বৈধদাতাটি বেশ দরকারী -
http://www.corefiling.com/opensource/schemaValidate.html

আমার এক্সএসডি যাচাই করার জন্য কয়েকটি সরঞ্জাম চেষ্টা করার পরে, এটিই আমাকে বিশদ ত্রুটির তথ্য দিয়েছে - তাই আমি স্কিমায় ত্রুটিটি ঠিক করতে সক্ষম হয়েছি।


2

দ্রুত এবং সহজ এক্সএমএল বৈধতার জন্য একটি এক্সএমএল সম্পাদক http://www.xML-buddy.com এ উপলব্ধ

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

আপডেট 1/13/2012: কমান্ড লাইন সরঞ্জামটি বিনামূল্যে ব্যবহারযোগ্য এবং এক্সএমএল পার্সার হিসাবে জেরেস ব্যবহার করে।


1

এক্সএমএল থেকে এক্সএসডি যাচাইকরণ এবং উত্পন্ন করার জন্য একটি দুর্দান্ত ভিজ্যুয়াল সরঞ্জাম হ'ল ইনটেলিজ আইডিইএ, স্বজ্ঞাত এবং সহজ।


1

আপনি আপনার এক্সএমএল স্কিমাটি মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিওর ইন্টেলিসেন্সের সাথে সংযুক্ত করতে পারেন। এই বিকল্পটি আপনাকে রিয়েল-টাইম বৈধতা এবং স্বতঃপূরণ উভয়ই দেয় যা কেবল দুর্দান্ত।

আমার ঠিক এই দৃশ্যটি আমার মাইক্রোসফ্ট ভিজ্যুয়াল সি ++ 2010 এক্সপ্রেসের ফ্রি অনুলিপিটিতে চলছে।



0

.NET ফাইল থেকে এক্সএসডি উত্পন্ন করতে আমি মাইক্রোসফ্ট থেকে এক্সএসডি ব্যবহার করি tend আমি এক্সএমএল স্টারলেট ব্যবহার করে এক্সএমএলের অংশগুলিও পার্স করে। আপনার জন্য চূড়ান্ত বিনামূল্যে সরঞ্জামটি হ'ল আলটোভ্যাক্সিমিল, যা এই ইউআরএলে পাওয়া যায়: http://www.altova.com/download_compferences.html

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

# Function:
#    verifyschemas - Will validate all xml files in a configuration directory against the schemas in the passed in directory
# Parameters:
#    The directory where the schema *.xsd files are located.  Must be using dos pathing like: VerifySchemas "c:\\XMLSchemas\\"
# Requirements:
#    Must be in the directory where the configuration files are located
#
verifyschemas()
{
    for FILENAME in $(find . -name '*.xml' -print0 | xargs -0)
    do
        local SchemaFile=$1$(getconfignamefromxml $FILENAME).xsd
        altovaxml /validate $FILENAME /schema $SchemaFile > ~/temp.txt 2> /dev/null
        if [ $? -ne 0 ]; then
            printf "Failed to verify: "
            cat ~/temp.txt | tail -1 | tr -d '\r'
            printf "    - $FILENAME with $SchemaFile\n"
        fi
    done
}

এক্সএমএল তৈরি করতে আমি ব্যবহার করি: xsd DOTNET.dll / টাইপ করুন: CFGCLASS এবং স্কিমা0.xsd নাম পরিবর্তন করুন CFGCLASS.xsd

এক্সএসডি নামটি পেতে আমি ব্যবহার করি: xMLstarlet বিক্রয় -t -m / XXX / * -v স্থানীয়-নাম () $ 1 | সেড 's / $ //'

এটি আমাকে এক্সএমএল ফাইলের মধ্যে একটি এলিমেন্ট ট্যাগ ব্যবহার করে সঠিক এক্সএসডি তুলতে অনুমতি দেয়।

নেট ফলাফলটি হ'ল আমি সমস্ত এক্সএমএল ফাইলগুলি স্ক্যান করতে এবং সেগুলি যাচাই করতে বাশ ফাংশনটিতে কল করতে পারি। এমনকি যদি তারা একাধিক উপ-ডিরেক্টরিতে থাকে।

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