मैं कुछ एक्सएमएल तत्वों को पुनर्प्राप्त करना चाहता हूं, लेकिन केवल तभी जब उनमें स्टारलेट के साथ कोई विशिष्ट विशेषता न हो।
फ़ाइल myFile.xml में XML उदाहरण यहां दिया गया है:
<?xml version="1.0"?>
<document>
<classInfo>
<subjects>
<subject id="1" type="someType">
<subjectname>Foo1</subjectname>
</subject>
<subject id="2" subtype="someSubtype" type="someType">
<subjectname>Foo2</subjectname>
</subject>
</subjects>
</classInfo>
</document>
अब, उपप्रकार के बिना सभी तत्वों पर आगे विचार किया जाएगा जबकि उपप्रकार (किसी भी उपप्रकार) वाले सभी तत्वों को अनदेखा किया जाएगा।
अब तक, सभी तत्वों पर विचार करते हुए केवल xmlstarlet चयन है:
xmlstarlet sel -T -t -m "//subject[@type='someType']" -v '@id' -o $'\t' -v 'subjectname[text()]' -nl myFile.xml
इसका परिणाम यह होगा
१ फू१
२ फू२
लेकिन वांछित परिणाम है
१ फू१
प्रत्येक विषय को उपप्रकार के साथ छोड़ने के लिए इस चयन को किस प्रकार बढ़ाया जाना चाहिए?
1 उत्तर
अपने मिलान में विधेय [not(@subtype)]
जोड़ने का प्रयास करें...
-m "//subject[@type='someType'][not(@subtype)]"
संबंधित सवाल
नए सवाल
xml
XML (एक्स्टेंसिबल मार्कअप लैंग्वेज) एक संरचित दस्तावेज़ प्रारूप है जो टेक्स्ट एन्कोडिंग नियमों को परिभाषित करता है। इस टैग का उपयोग करते समय अतिरिक्त टैग जैसे प्रोग्रामिंग भाषा, टूल सेट, XML तकनीकों का उपयोग किया जा रहा है, और अन्य टैग पोस्ट की गई समस्या के वातावरण का वर्णन करते हैं। XML लचीलापन मानव और मशीन डेटा हस्तांतरण के लिए उपयोग की एक विस्तृत विविधता के लिए उधार देता है इसलिए उपकरण और पुस्तकालयों के रूप में विशिष्ट हो।