2008-09-23 5 views
9

एक संक्षिप्त खोज से पता चलता है कि सभी उपलब्ध (uUnix कमांड लाइन) उपकरण जो xsd (XML Schema) से rng (RelaxNG) या आरएनसी (कॉम्पैक्ट RelaxNG) में कनवर्ट करते हैं, में समस्याएं हैं किसी प्रकार का।Xsd से rnc (या rng) रूपांतरण (यूनिक्स कमांड लाइन)

सबसे पहले, अगर मैं rngconv का उपयोग करें:

$ wget https://msv.dev.java.net/files/documents/61/31333/rngconv.20060319.zip 
$ unzip rngconv.20060319.zip 
$ cd rngconv-20060319/ 
$ java -jar rngconv.jar my.xsd > my.rng 

यह एक तरह से की जरूरत नहीं है डी-सामान्य तत्वों इतना सब किया जा रहा है विकल्प शुरू तत्वों (यह भी एक सा गाड़ी हो रहा है) अंत।

ट्रांग एक विकल्प है, लेकिन यह केवल आउटपुट (क्यों?) पर इनपुट पर xsd फ़ाइलों का समर्थन नहीं करता है। हालांकि, यह डीटीडी का समर्थन करता है। पहले डीटीडी में कनवर्ट करना दिमाग में आता है, लेकिन एक ठोस xsd2dtd भी ढूंढना मुश्किल है। नीचे दिया गया:

$ xsltproc http://crism.maden.org/consulting/pub/xsl/xsd2dtd.xsl in.xsd > out.dtd 

छोटी गाड़ी लगती है।

यह सब बहुत ही आश्चर्यजनक है। इन सभी वर्षों के एक्सएमएल (एबी) उपयोग के लिए, इन छोटे बुनियादी कार्यों के लिए कोई सभ्य कमांड लाइन उपकरण नहीं है? क्या लोग केवल संपादकों का उपयोग कर रहे हैं? क्या वे काम करते हैं? मैं कमांड लाइन पसंद करता हूं, खासकर क्योंकि मैं इन कार्यों को स्वचालित करना चाहता हूं।

इस पर कोई प्रबुद्ध टिप्पणियां?

उत्तर

4

एक्सएसडी कनवर्ट करना एक बहुत कठिन कार्य है; एक्सएसडी विनिर्देश एक दुःस्वप्न और बेहद जटिल है। कुछ त्वरित research, से ऐसा लगता है कि RelaxNG से XSD तक जाना आसान है, लेकिन यह रिवर्स सत्य या संभव भी नहीं हो सकता है (जो ट्रांग के बारे में आपका प्रश्न बताता है)।

मैं संपादकों के बारे में आपके प्रश्न को समझ नहीं पा रहा हूं - अगर आप पूछ रहे हैं कि अधिकांश लोग एक्सएसडी और आरएनजी के बीच हाथ से परिवर्तित हो जाते हैं, तो हाँ, मुझे उम्मीद है।

यदि संभव हो तो एक्सएसडी से बचने के लिए सबसे अच्छी सलाह हो सकती है, या कम से कम आरएनजी को निश्चित दस्तावेज़ के रूप में उपयोग करें और उस से एक्सएसडी उत्पन्न करें। आप schematron पर भी एक नज़र डालना चाहते हैं।

+1

हां, विपरीत दिशा (आरएनजी/आरएनसी 2 एक्सएसडी) ठीक है। trang उसके लिए अच्छी तरह से काम करता है। – kmt

+0

डब्लूआरटी संपादक, हाँ, यही मेरा मतलब था। मैं मानता हूं कि एक्सएमएल दुनिया में लोग ज्यादातर संपादकों का उपयोग करते हैं, अन्यथा मैं कमांड लाइन उपकरणों की कमी की व्याख्या नहीं कर सकता। मुझे यह दिलचस्प लगता है कि एक्सएमएल दुनिया सरल उपकरणों के यूनिक्स दर्शन से बहुत दूर है जो एक चीज अच्छी तरह से करती है। – kmt

+0

डब्लूआरटी एक्सएसडी से परहेज, मुझे पसंद है। यही कारण है कि मुझे बहुत आसानी से पढ़ने के लिए आरएनसी प्रारूप में दिलचस्पी है। हालांकि, मेरे पास कोई विकल्प नहीं है। – kmt

0

फिर से, संपादकों के बारे में: मुझे लगता है कि ऑक्सीजन के साथ ऐसा करने का कोई तरीका नहीं है जो एक लोकप्रिय उपकरण प्रतीत होता है।

2

सच है, ट्रांग इनपुट पक्ष पर xsd स्वीकार नहीं करता है। ट्रांग हालांकि xml फ़ाइलों का एक सेट ले सकता है जो spec को पूरा करना चाहिए और एक आरएनसी या आरएनजी स्कीमा उत्पन्न करना चाहिए जो वे सभी के खिलाफ मान्य होंगे।

Downsides:

  • यह कई शिकायत एक्सएमएल फ़ाइलें की आवश्यकता है
  • परिणामस्वरूप स्कीमा (मैं और अधिक बेहतर कल्पना) शायद अभी भी कुछ फेरबदल इस्तेमाल कर सकते हैं।

नमूना मामला:

मेरी शिकायत एक्सएमएल फ़ाइलें 1.xml 2.xml 3.xml 4.xml 5.xml

में रखे रहे हैं, तो निम्न आदेश उत्पादन के लिए एक RNC स्कीमा है कि उनमें से सभी के लिए मान्य होगा कहते थे ट्रांग:

java -jar trang.jar -I xml -O rnc 1.xml 2.xml 3.xml 4.xml 5.xml foo.rnc 

निष्कर्ष

यदि आपके पास xml फ़ाइलों का एक अच्छा परीक्षण सेट है जो आपकी स्कीमा को पूरा करता है (या आप आसानी से उन्हें बना सकते हैं) यह सबसे अच्छा विकल्प उपलब्ध हो सकता है।

मैं आपको शुभकामनाएं देता हूं।

2

एक ऑनलाइन कनवर्टर (XSD -> RNG) http://relaxng.org/#conversion पर सूची में जोड़ा गया है। मैंने mac-v4_0_0.xsd को emacs में pom.xml फ़ाइलों के सत्यापन के लिए कनवर्ट करने का प्रयास किया है, हालांकि बिना किसी किस्मत के। साइट में एक्सएसएल स्टाइलशीट भी शामिल है जिसका उपयोग आप xsltproc के साथ कर सकते हैं, परिणाम की गुणवत्ता के लिए प्रतिबद्ध नहीं हो सकता ...

+2

आपके उपयोग के मामले का जिक्र करने के लिए धन्यवाद, मैं एमाक्स में pom.xml सत्यापन के साथ एक ही खरगोश छेद नीचे जाने वाला था। –