JavaRush /جاوا بلاگ /Random-SD /جاوا پروگرامر لاءِ XML بنياديات. حصو 2 جو 3
Ярослав
سطح
Днепр

جاوا پروگرامر لاءِ XML بنياديات. حصو 2 جو 3

گروپ ۾ شايع ٿيل

تعارف

هيلو، منهنجي مضمون جا پيارا پڙهندڙ. هي XML بابت سيريز ۾ ٻيو مضمون آهي، ۽ هي مضمون XML Namespace ۽ XML اسڪيما بابت ڳالهائيندو.
XML بنيادي
تازو، مون پاڻ کي ان بابت ڪجهه به نه ڄاڻايو آهي، پر مون ڪافي مواد ۾ مهارت حاصل ڪئي آهي ۽ ڪوشش ڪندس ته انهن ٻن اهم موضوعن کي آسان لفظن ۾ بيان ڪريان. مان فوري طور تي چوڻ چاهيان ٿو ته اسڪيما XML دستاويزن جي تصديق ڪرڻ لاءِ هڪ تمام ترقي يافته ميکانيزم آهن ۽ DTDs کان تمام گهڻو ڪم ڪندڙ آهن، تنهنڪري هتي انهن جو مڪمل مطالعو نه ڪيو ويندو. اچو ته شروع ڪريون :)

XML Namespace

Namespace جو مطلب آهي "نالو جي جاء"، جڏهن ته هن آرٽيڪل ۾ آئون اڪثر ڪري روسي اظهار کي صرف نالي جي جاء سان تبديل ڪندس، ڇاڪاڻ ته اهو ننڍڙو ۽ سمجهڻ آسان آهي. XML Namespace هڪ ٽيڪنالاجي آهي جنهن جو بنيادي مقصد اهو يقيني بڻائڻ آهي ته سڀئي عناصر هڪ XML فائل ۾ منفرد آهن ۽ ڪو مونجهارو ناهي. ۽ جيئن ته اهي جاوا ڪورس آهن، ساڳي ٽيڪنالاجي جاوا پيڪيجز ۾ پڻ موجود آهي. جيڪڏهن اسان هڪ ٻئي جي اڳيان ساڳئي نالي سان ٻه طبقا رکي سگهون ٿا ۽ انهن کي استعمال ڪري سگهون ٿا، اسان ڪيئن طئي ڪنداسين ته اسان کي ڪهڙي طبقي جي ضرورت آهي؟ اهو مسئلو پيڪيجز ذريعي حل ڪيو ويو آهي - اسان صرف مختلف پيڪيجز ۾ ڪلاس رکي سگهون ٿا ۽ اتان کان درآمد ڪري سگهون ٿا، گهربل پيڪيج جو صحيح نالو ۽ ان جي رستي جي وضاحت ڪندي، يا صرف گهربل طبقي لاء مڪمل رستو بيان ڪري سگهون ٿا. جاوا پروگرامر لاءِ XML بنياديات.  حصو 2 جو 3 - 1هاڻي، اسان اهو ڪري سگهون ٿا:
public class ExampleInvocation {
    public static void main(String[] args) {
        // Creation экземпляра класса из первого пакета.
        example_package_1.Example example1 = new example_package_1.Example();

        // Creation экземпляра класса из второго пакета.
        example_package_2.Example example2 = new example_package_2.Example();

        // Creation экземпляра класса из третьего пакета.
        example_package_3.Example example3 = new example_package_3.Example();
    }
}
XML Namespace ۾، هر شيء تمام گهڻو ساڳيو آهي، صرف ٿورو مختلف. جوهر ساڳيو آهي: جيڪڏهن عناصر ساڳيا آهن (طبقن وانگر)، ته پوءِ اسان کي انهن کي مختلف نالن جي جڳهن ۾ استعمال ڪرڻو پوندو (پيڪيج بيان ڪريو)، پوءِ جيتوڻيڪ عناصر (ڪلاس) جا نالا هڪجهڙائي شروع ڪندا، تڏهن به اسين خلا مان هڪ مخصوص عنصر تائين رسائي (پيڪيج). مثال طور: اسان وٽ XML ۾ ٻه عنصر آهن - اڳڪٿي (oracle) ۽ Oracle ڊيٽابيس.
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <oracle>
        <connection value="jdbc:oracle:thin:@10.220.140.48:1521:test1" />
        <user value="root" />
        <password value="111" />
    </oracle>

    <oracle>
        Сегодня вы будете заняты весь день.
    </oracle>
</root>
۽ جڏهن اسان هن XML فائل کي پروسيس ڪريون ٿا، اسان کي سنجيده پريشان ٿي ويندي جيڪڏهن ڊيٽابيس جي بدران اسان کي اڳڪٿي ملي ٿي، ۽ واپس پڻ. عناصرن جي ٽڪراءَ کي حل ڪرڻ لاءِ، اسان انھن مان ھر ھڪ کي انھن جي وچ ۾ فرق ڪرڻ لاءِ پنھنجي جاءِ مختص ڪري سگھون ٿا. ھن لاء ھڪڙو خاص وصف آھي - xmlns: prefix = "نام جي جڳھ لاء منفرد قدر". اسان ان کان پوءِ عنصرن کي اڳي لڳائي سگھون ٿا ته اھو ظاھر ڪرڻ لاءِ ته اھو انھيءَ نالي جي جڳھ جو حصو آھي (لازمي طور تي، اسان کي ھڪڙو پيڪيج رستو ٺاھيو آھي - namespace، ۽ پوءِ ھر عنصر کي اڳي لڳايو جنھن سان اھو تعلق رکي ٿو).
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <database:oracle xmlns:database="Unique ID #1">
        <connection value="jdbc:oracle:thin:@10.220.140.48:1521:test1" />
        <user value="root" />
        <password value="111" />
    </database:oracle>

    <oracle:oracle xmlns:oracle="Unique ID #2">
        Сегодня вы будете заняты весь день.
    </oracle:oracle>
</root>
ھن مثال ۾، اسان ٻن نالن جي جڳھ جو اعلان ڪيو: ڊيٽابيس ۽ اوريڪل. ھاڻي توھان استعمال ڪري سگھوٿا namespace prefixes کان اڳ عناصر. خوفزده ٿيڻ جي ڪا ضرورت ناهي جيڪڏهن ڪجهه واضح ناهي. حقيقت ۾، اهو تمام سادو آهي. شروعات ۾، مون آرٽيڪل جي هن حصي کي وڌيڪ جلدي لکڻ چاهيو، پر اربع کان پوء مون فيصلو ڪيو ته مون کي هن موضوع تي وڌيڪ ڌيان ڏيڻ جي ضرورت آهي، ڇاڪاڻ ته اهو پريشان ٿيڻ يا ڪجهه سمجهڻ ۾ آسان ناهي. هاڻي تمام گهڻو ڌيان ڏنو ويندو xmlns خاصيت ڏانهن. ۽ ائين، ٻيو مثال:
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="https://www.standart-namespace.com/" xmlns:gun="https://www.gun-shop.com/" xmlns:fish="https://www.fish-shop.com/">
    <gun:shop>
        <gun:guns>
            <gun:gun name="Revolver" price="1250$" max_ammo="7" />
            <gun:gun name="M4A1" price="3250$" max_ammo="30" />
            <gun:gun name="9mm Pistol" price="450$" max_ammo="12" />
        </gun:guns>
    </gun:shop>

    <fish:shop>
        <fish:fishes>
            <fish:fish name="Shark" price="1000$" />
            <fish:fish name="Tuna" price="5$" />
            <fish:fish name="Capelin" price="1$" />
        </fish:fishes>
    </fish:shop>
</root>
توهان ڏسي سگهو ٿا باقاعده XML استعمال ڪندي اسپيس گن لاءِ گن اسٽور منفرد عناصر ۽ مڇي مارڻ لاءِ مڇي اسٽور منفرد عناصر. توھان ڏسي سگھو ٿا ته جڳھ ٺاھڻ سان، اسان ھڪڙي دڪان جو عنصر ھڪڙي وقت ٻن مختلف شين لاءِ استعمال ڪيو - ھڪڙو ھٿيارن جو دڪان ۽ ھڪڙو مڇي اسٽور، ۽ اسان ڄاڻون ٿا ته اھو ڪھڙي قسم جو اسٽور آھي اھو حقيقت جي شڪرگذار آھي ته اسان جڳھن جو اعلان ڪيو. سڀ کان وڌيڪ دلچسپ شيء اسڪيمن ۾ شروع ٿيندي، جڏهن اسان هن طريقي سان ساڳئي عناصر سان مختلف جوڙجڪ کي درست ڪرڻ جي قابل هوندا. xmlns هڪ نالي جي جڳهه کي بيان ڪرڻ لاء هڪ خاصيت آهي؛ اهو ڪنهن به عنصر ۾ بيان ڪري سگهجي ٿو. نالي جي جڳهه جي اعلان جو هڪ مثال:
xmlns:shop= «https://barber-shop.com/»
ڪولن کان پوءِ هڪ اڳوڻو آهي - هي هڪ خلائي حوالو آهي جيڪو پوءِ استعمال ڪري سگهجي ٿو عناصر کان اڳ اهو ظاهر ڪرڻ لاءِ ته اهي ان خلا مان آيا آهن. xmlns قدر هڪ منفرد STRING هجڻ گهرجي. اهو سمجهڻ تمام ضروري آهي: ويب سائيٽ لنڪس يا يو آر آئي استعمال ڪرڻ تمام عام آهي نالي جي جڳهه جو اعلان ڪرڻ لاءِ. هي قاعدو معياري آهي ڇاڪاڻ ته لنڪ جو URI يا URL منفرد آهي، پر اهو آهي جتي اهو تمام گهڻو پريشان ٿئي ٿو. بس ياد رکو: قيمت ڪا به تار ٿي سگهي ٿي جيڪا توهان چاهيو، پر پڪ ڪرڻ لاءِ ته اها منفرد ۽ معياري آهي، توهان کي URL يا URI استعمال ڪرڻ جي ضرورت آهي. حقيقت اها آهي ته توهان ڪنهن به تار استعمال ڪري سگهو ٿا مثال ۾ oracle ۾ ڏيکاريل آهي:
xmlns:oracle="Unique ID #2"
xmlns:database="Unique ID #1"
جڏهن توهان هڪ نالي جي جڳهه جو اعلان ڪريو ٿا، توهان ان کي استعمال ڪري سگهو ٿا عنصر پاڻ تي ۽ ان جي اندر سڀني عنصرن تي، تنهن ڪري نالي جي جڳهه جو بيان ڪيل روٽ عنصر تي سڀني عناصر تي استعمال ڪري سگهجي ٿو. اهو آخري مثال ۾ ڏسي سگهجي ٿو، ۽ هتي هڪ وڌيڪ مخصوص مثال آهي:
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <el1:element1 xmlns:el1="Element#1 Unique String">
        <el1:innerElement>

        </el1:innerElement>
    </el1:element1>


    <el2:element2 xmlns:el2="Element#2 Unique String">
        <el2:innerElement>

        </el2:innerElement>
    </el2:element2>


    <el3:element3 xmlns:el3="Element#3 Unique String">
        <el3:innerElement>
            <el1:innerInnerElement> <!-- Так нельзя, потому что пространство el1 объявлено только в первом элементе, потому может использовать только внутри первого element и его внутренних элементов. -->

            </el1:innerInnerElement>
        </el3:innerElement>
    </el3:element3>
</root>
هتي هڪ اهم تفصيل آهي: روٽ عنصر ۾ هڪ معياري نالو جاء پڻ آهي. جيڪڏهن توهان ٻين نالن جي جڳهن جو اعلان ڪريو ٿا، ته توهان ڊفالٽ هڪ کي مٿي ڪيو ۽ ان کي استعمال نٿا ڪري سگهو. پوء توهان کي روٽ عنصر جي سامهون ڪجهه قسم جو اسپيس پريفڪس رکڻو پوندو، جيڪو توهان اڳ ۾ اعلان ڪيو آهي. بهرحال، اهو پڻ ٺڳي سگهجي ٿو: توهان معياري جڳهه کي واضح طور تي بيان ڪري سگهو ٿا. اهو ڪافي آهي صرف xmlns کان پوءِ ڪو اڳوڻو استعمال نه ڪرڻ، پر فوري طور تي ڪجهه قدر لکڻ لاءِ، ۽ اڳي کان سواءِ توهان جا سڀئي عنصر هن خاص نالي واري جاءِ سان تعلق رکندا. آخري مثال هي استعمال ڪيو ويو آهي:
<root xmlns="https://www.standart-namespace.com/" xmlns:gun="https://www.gun-shop.com/" xmlns:fish="https://www.fish-shop.com/">
اسان بندوق يا مڇي استعمال ڪرڻ جي ضرورت کان بچڻ لاءِ واضع طور تي معياري جاءِ جو اعلان ڪيو، ڇاڪاڻ ته روٽ عنصر يا ته مڇي مارڻ جي دڪان يا هٿيارن جو وجود نه آهي، تنهن ڪري ڪنهن به جڳهه کي استعمال ڪرڻ منطقي طور تي غلط هوندو. اڳيون: جيڪڏھن توھان ٺاھيو آھي xmlns:a ۽ xmlns:b، پر انھن جو قدر ساڳيو آھي، پوءِ اھو ساڳيو خلا آھي ۽ اھي منفرد نه آھن. ان ڪري توھان کي ھميشه منفرد قدر استعمال ڪرڻ گھرجي، ڇو ته ھن قاعدي جي ڀڃڪڙي ڪرڻ سان وڏي تعداد ۾ غلطيون پيدا ٿي سگھن ٿيون. مثال طور، جيڪڏهن اسان وٽ خالن جو اعلان هن طرح ڪيو هو:
xmlns="https://www.standart-namespace.com/" xmlns:gun="https://www.gun-shop.com/" xmlns:fish="https://www.gun-shop.com/"
پوءِ اسان جو مڇي مارڻ جو دڪان هٿيارن جو دڪان بڻجي ويندو، ۽ اڳياڙي اڃا به مڇيءَ جو دڪان هوندو. اهي سڀ اسپيس جا مکيه نقطا آهن. مون انهن سڀني کي گڏ ڪرڻ ۽ انهن کي گهٽائڻ ۾، ۽ پوءِ انهن کي صاف صاف ظاهر ڪرڻ ۾ گهڻو وقت گذاريو، ڇاڪاڻ ته انٽرنيٽ تي خلا جي معلومات تمام وڏي آهي ۽ اڪثر ڪري صرف پاڻي آهي، تنهن ڪري سڀ کان وڌيڪ شيون جيڪي هتي آهن - مون پاڻ کي آزمائشي ذريعي سکيو. ۽ غلطي. جيڪڏھن توھان اڃا تائين سوال آھن، توھان ڪوشش ڪري سگھوٿا مواد کي استعمال ڪندي مضمون جي آخر ۾ لنڪ استعمال ڪندي.

XML اسڪيما

مان فوري طور تي چوڻ چاهيان ٿو ته هي مضمون صرف برفاني ٽڪري جي ٽپ هوندو، ڇاڪاڻ ته موضوع تمام وسيع آهي. جيڪڏهن توهان اسڪيمن سان وڌيڪ تفصيل سان واقف ٿيڻ چاهيو ٿا ۽ سکو ته ڪيئن انهن کي ڪنهن به پيچيدگي جي پاڻ کي لکڻ لاء، پوء آرٽيڪل جي آخر ۾ هڪ لنڪ هوندو جتي هر شيء مختلف قسمن، پابنديون، توسيع، وغيره بابت هوندو. مان نظريي سان شروع ڪرڻ چاهيان ٿو. اسڪيمن ۾ .xsd (xml اسڪيم جي تعريف) فارميٽ آهي ۽ DTDs لاءِ وڌيڪ ترقي يافته ۽ مشهور متبادل آهن: اهي پڻ عنصر ٺاهي سگهن ٿا، انهن کي بيان ڪري سگهن ٿا، وغيره. جڏهن ته، ڪيترائي بونس شامل ڪيا ويا آهن: ٽائپ چيڪنگ، نالي جي جڳهه جي حمايت ۽ وسيع ڪارڪردگي. ياد رکو جڏهن اسان ڊي ٽي ڊي بابت ڳالهايو، اتي هڪ مائنس هو ته اهو اسپيس کي سپورٽ نٿو ڏئي؟ هاڻي ته اسان ان جو اڀياس ڪيو آهي، مان وضاحت ڪندس: جيڪڏهن اهو ممڪن هجي ها ته هڪ DTD مان ٻه يا وڌيڪ اسڪيما درآمد ڪرڻ، جتي هڪجهڙا عنصر هئا، اسان وٽ ٽڪراءُ (اتفاق) هوندو ۽ انهن کي استعمال ڪرڻ جي قابل نه هوندا، ڇاڪاڻ ته. اهو واضح ناهي ته اسان کي ڪهڙي عنصر جي ضرورت آهي. XSD هن مسئلي کي حل ڪري ٿو ڇو ته توهان هڪ مخصوص جاء تي اسڪيما درآمد ڪري سگهو ٿا ۽ ان کي استعمال ڪري سگهو ٿا. لازمي طور تي، هر XSD اسڪيما ۾ هڪ ٽارگيٽ اسپيس آهي، جنهن جو مطلب آهي ته ڪهڙي جاء تي اسڪيما کي XML فائل ۾ لکڻ گهرجي. اهڙيءَ طرح، خود XML فائل ۾، اسان کي صرف اهي اسپيس ٺاهڻ گهرجن جيڪي اڳواٽ بيان ڪيل اسڪيمن ۾ آهن ۽ انهن کي اڳياڙيون تفويض ڪرڻ گهرجن، ۽ پوءِ ضروري اسڪيمن کي انهن مان هر هڪ سان ڳنڍڻ جي ضرورت آهي، جنهن کان پوءِ اسان محفوظ طريقي سان اسڪيما مان عناصر استعمال ڪري سگهون ٿا، اڳياڙين کي متبادل بڻايو. خلا جتي اسان اسڪيمڪس درآمد ڪيو. ۽ ائين، اسان وٽ ھڪڙو مثال آھي:
<?xml version="1.0" encoding="UTF-8"?>
<house>
    <address>ул. Есенина, дом №5</address>
    <owner name="Ivan">
        <telephone>+38-094-521-77-35</telephone>
    </owner>
</house>
اسان ان کي اسڪيما سان درست ڪرڻ چاهيون ٿا. پهرين، اسان کي اسڪيما جي ضرورت آهي:
<?xml version="1.0"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="https://www.nedvigimost.com/">
    <element name="house">
        <complexType>
            <sequence>
                <element name="address" type="string" maxOccurs="unbounded" minOccurs="0" />
                <element name="owner" maxOccurs="unbounded" minOccurs="0" >
                    <complexType>
                        <sequence>
                            <element name="telephone" type="string" />
                        </sequence>
                        <attribute name="name" type="string" use="required"/>
                    </complexType>
                </element>
            </sequence>
        </complexType>
    </element>
</schema>
جئين توهان ڏسي سگهو ٿا، اسڪيما پڻ XML فائلون آهن. توهان لکو جيڪو توهان کي گهرجي سڌو سنئون XML ۾. هي اسڪيما مٿي ڏنل مثال مان XML فائل کي درست ڪرڻ جي قابل آهي. مثال طور: جيڪڏهن مالڪ جو نالو نه آهي، سرڪٽ اهو ڏسندو. انهي سان گڏ، ترتيب جي عنصر جي مهرباني، پتو هميشه پهرين اچڻ گهرجي، ۽ پوء گهر جو مالڪ. عام ۽ پيچيده عنصر آهن. باقاعده عناصر عناصر آھن جيڪي صرف ڪجھ قسم جي ڊيٽا کي ذخيرو ڪن ٿا. مثال:
<element name="telephone" type="string" />
اهڙي طرح اسان هڪ عنصر جو اعلان ڪريون ٿا جيڪو هڪ اسٽرنگ کي محفوظ ڪري ٿو. هن عنصر جي اندر ڪو ٻيو عنصر نه هجڻ گهرجي. اتي پڻ پيچيده عنصر آهن. پيچيده عناصر ٻين عناصر ۽ خاصيتون پاڻ ۾ محفوظ ڪرڻ جي قابل آهن. پوء توهان کي قسم جي وضاحت ڪرڻ جي ضرورت ناهي، پر صرف عنصر اندر هڪ پيچيده قسم لکڻ شروع ڪريو.
<complexType>
    <sequence>
        <element name="address" type="string" maxOccurs="unbounded" minOccurs="0" />
        <element name="owner" maxOccurs="unbounded" minOccurs="0" >
            <complexType>
                <sequence>
                    <element name="telephone" type="string" />
                </sequence>
                <attribute name="name" type="string" use="required"/>
            </complexType>
        </element>
    </sequence>
</complexType>
اهو پڻ ممڪن هو ته اهو مختلف طريقي سان ڪيو وڃي: توهان هڪ پيچيده قسم ٺاهي سگهو ٿا الڳ الڳ، ۽ پوء ان کي قسم ۾ متبادل. صرف هي مثال لکڻ وقت، ڪجهه سببن لاءِ ضروري هو ته خلا کي ڪنهن قسم جي اڳياڙي هيٺ بيان ڪيو وڃي، ۽ معياري استعمال نه ڪيو وڃي. عام طور تي، اهو هن طرح ظاهر ٿيو:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="https://www.nedvigimost.com/">
    <xs:element name="house" type="content" />

    <xs:complexType name="content">
        <xs:sequence>
            <xs:element name="address" type="xs:string" maxOccurs="unbounded" minOccurs="0" />
            <xs:element name="owner" maxOccurs="unbounded" minOccurs="0" >
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="telephone" type="xs:string" />
                    </xs:sequence>
                    <xs:attribute name="name" type="xs:string" use="required"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:schema>
هن طريقي سان، اسان الڳ الڳ پنهنجون قسمون ٺاهي سگهون ٿا ۽ پوء انهن کي ڪنهن به قسم جي خاصيت ۾ متبادل بڻايو وڃي. اهو تمام آسان آهي جيئن اهو توهان کي مختلف هنڌن تي هڪ قسم استعمال ڪرڻ جي اجازت ڏئي ٿو. مان ڳنڍڻ واري سرڪٽ بابت وڌيڪ ڳالهائڻ چاهيندس ۽ هتي ختم ڪريو. سرڪٽ کي ڳنڍڻ جا ٻه طريقا آهن: هڪ مخصوص جاء تي ۽ صرف ڳنڍڻ.

سرڪٽ کي ڳنڍڻ جو پهريون طريقو

پهريون طريقو اهو فرض ڪري ٿو ته سرڪٽ هڪ مخصوص حدف جي جڳهه آهي. اهو اسڪيم عنصر تي targetNamespace خاصيت استعمال ڪندي بيان ڪيو ويو آهي. پوءِ اھو ڪافي آھي XML فائل ۾ ساڳي جاءِ ٺاھيو، ۽ پوءِ اتي اسڪيما کي ”لوڊ“ ڪريو:
<?xml version="1.0" encoding="UTF-8"?>
<nedvig:house xmlns:nedvig="https://www.nedvigimost.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.nedvigimost.com/ example_schema1.xsd">
    <address>ул. Есенина, дом №5</address>
    <owner name="Ivan">
        <telephone>+38-094-521-77-35</telephone>
    </owner>
</nedvig:house>
اهو ضروري آهي ته ٻن لائينن کي سمجهڻ:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemeLocation="https://www.nedvigimost.com/ example_schema1.xsd"
پهرين لائن - بس ان کي ياد. ان کي هڪ اعتراض جي طور تي سوچيو جيڪو اسڪيميٽ کي لوڊ ڪرڻ ۾ مدد ڪري ٿو جتي انهن کي وڃڻ جي ضرورت آهي. ٻيو لائن هڪ مخصوص ڊائون لوڊ آهي. schemaLocation فارم جي قدرن جي هڪ فهرست کي قبول ڪري ٿو "قيمت - قدر"، خلا سان الڳ ٿيل. پهريون دليل نالو اسپيس آهي، جنهن کي لازمي طور تي اسڪيما ۾ ٽارگيٽ نالي جي جڳهه سان ملائڻ گهرجي ( targetNamespace value). ٻيو دليل اسڪيما ڏانهن لاڳاپو يا مطلق رستو آهي. ۽ جيئن ته هي هڪ فهرست قيمت آهي، توهان مثال ۾ اسڪيم کان پوء هڪ جاء رکي سگهو ٿا، ۽ ٻيهر ٽارگيٽ اسپيس ۽ ٻي اسڪيم جو نالو داخل ڪريو، ۽ انهي تي جيترو توهان چاهيو ٿا. اهم:انهي اسڪيما لاءِ بعد ۾ ڪنهن شيءِ جي تصديق ڪرڻ لاءِ، توهان کي هن جاءِ جو اعلان ڪرڻو پوندو ۽ ان کي اڳياڙيءَ سان استعمال ڪرڻو پوندو. آخري مثال تي غور سان ڏسو:
<?xml version="1.0" encoding="UTF-8"?>
<nedvig:house xmlns:nedvig="https://www.nedvigimost.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.nedvigimost.com/ example_schema1.xsd">
    <address>ул. Есенина, дом №5</address>
    <owner name="Ivan">
        <telephone>+38-094-521-77-35</telephone>
    </owner>
</nedvig:house>
اسان ھن ھدف واري جڳھ ٺاھيو nedvig پريفڪس تي ۽ پوءِ ان کي استعمال ڪيو. اهڙيء طرح، اسان جي عناصر جي تصديق ٿيڻ شروع ڪيو، ڇو ته اسان خلا کي استعمال ڪرڻ شروع ڪيو جتي ٽارگيٽ اسڪيما اسپيس جو حوالو ڏنو ويو آهي.

سرڪٽ کي ڳنڍڻ جو ٻيو طريقو

هڪ سرڪٽ کي ڳنڍڻ جو ٻيو طريقو اهو آهي ته سرڪٽ کي مخصوص حدف جي جاء نه آهي. پوء توهان صرف ان کي XML فائل سان ڳنڍي سگهو ٿا ۽ اهو ان کي درست ڪندو. اهو تقريبا ساڳئي طريقي سان ڪيو ويو آهي، صرف توهان XML فائل ۾ سڀني هنڌن جو اعلان نٿا ڪري سگهو، پر صرف اسڪيما سان ڳنڍيو.
<?xml version="1.0" encoding="UTF-8"?>
<house xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="example_schema1.xsd">
    <address>ул. Есенина, дом №5</address>
    <owner name="Ivan">
        <telephone>+38-094-521-77-35</telephone>
    </owner>
</house>
جئين توهان ڏسي سگهو ٿا، اهو استعمال ڪيو ويو آهي noNamespaceSchemaLocation ۽ اسڪيما ڏانهن رستو بيان ڪندي. توڙي جو اسڪيما ۾ ھدف واري جاءِ نه آھي، دستاويز جي تصديق ڪئي ويندي. ۽ آخري ٽچ: اسان ٻين آريگرامن کي ڊاگرام ۾ درآمد ڪري سگھون ٿا، ۽ پوءِ ھڪڙي ڊراگرام مان عناصر کي ٻئي ۾ استعمال ڪري سگھون ٿا. ان ڪري، اسان عناصر استعمال ڪري سگھون ٿا ڪجھ سرڪٽ ۾ جيڪي اڳ ۾ ئي ٻين ۾ آھن. مثال:

اسڪيما جتي مالڪ جي قسم جو اعلان ڪيو ويو آهي:

<?xml version="1.0" encoding="UTF-8" ?>
<schema targetNamespace="bonus" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
        <complexType name="owner">
            <all>
                <element name="telephone" type="string" />
            </all>
            <attribute name="name" type="string" />
        </complexType>
</schema>

ٻيو اسڪيما، جيڪو استعمال ڪري ٿو مالڪ جو قسم پهرين اسڪيما کان:

<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="main" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:bonus="bonus" elementFormDefault="qualified">
    <import namespace="bonus" schemaLocation="xsd2.xsd" />
    <element name="house">
        <complexType>
            <all>
              <element name="address" type="string" />
                <element name="owner" type="bonus:owner" />
            </all>
        </complexType>
    </element>
</schema>
ٻيو منصوبو هيٺ ڏنل تعمير استعمال ڪري ٿو:
<import namespace="bonus" schemaLocation="xsd2.xsd" />
ان کي استعمال ڪندي، اسان هڪ اسڪيما کان ٻيءَ تائين بونس اسپيس ۾ قسمن ۽ عناصر کي درآمد ڪيو. ان ڪري، اسان وٽ بونس تائين رسائي آهي: مالڪ جو قسم. ۽ ايندڙ لائن ۾ اسان ان کي استعمال ڪيو:
<element name="owner" type="bonus:owner" />
هيٺ ڏنل لڪير تي پڻ ٿورو ڌيان ڏيو:
elementFormDefault="qualified"
هي وصف اسڪيما ۾ اعلان ڪيو ويو آهي ۽ مطلب ته XML فائلن ۾، هر عنصر کي ان کان اڳ واضح اڳي سان اعلان ڪيو وڃي. جيڪڏهن اهو موجود ناهي، ته پوءِ اسان کي صرف هڪ خارجي عنصر کي اڳياڙيءَ سان بيان ڪرڻ جي ضرورت آهي، ۽ اسان کي اندر جي سڀني عنصرن ۾ اڳياڙي به مقرر ڪرڻ جي ضرورت آهي، واضح طور تي ظاهر آهي ته اسان هن اسڪيم جا عنصر بلڪل استعمال ڪري رهيا آهيون. ۽ هتي، حقيقت ۾، هڪ XML فائل جو هڪ مثال آهي هڪ اسڪيما طرفان تصديق ٿيل آهي جيڪا ٻي اسڪيما درآمد ڪئي وئي آهي:
<?xml version="1.0" encoding="UTF-8"?>
<nedvig:house xmlns:nedvig="main" xmlns:bonus="bonus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="main xsd.xsd">
    <nedvig:address>ул. Есенина, дом №5</nedvig:address>
    <nedvig:owner name="Ivan">
        <bonus:telephone>+38-094-521-77-35</bonus:telephone>
    </nedvig:owner>
</nedvig:house>
قطار ۾:
<bonus:telephone>+38-094-521-77-35</bonus:telephone>
اسان کي واضع طور تي بونس جي نالي جي جڳھ کي بيان ڪرڻ جي ضرورت آھي، جيڪو پھرين اسڪيما جي ھدف واري جڳھ ڏانھن اشارو ڪري ٿو، ڇو ته elementFormDefault قابل آھي (چڪ ڪريو)، تنھنڪري سڀني عنصرن کي واضح طور تي پنھنجي جڳھ کي ظاھر ڪرڻ گھرجي.

مضمون جي پڄاڻي

ايندڙ آرٽيڪل سيريز ۾ آخري هوندو ۽ اڳ ۾ ئي جاوا استعمال ڪندي XML فائلن جي پروسيسنگ بابت هوندو. اسان مختلف طريقن سان معلومات حاصل ڪرڻ سکنداسون وغيره. مون کي اميد آهي ته هي مضمون ڪارائتو هو ۽، جيتوڻيڪ هتي ڪٿي به غلطيون آهن، اهو توهان کي ڪجهه مفيد ۽ نئون سيکاريندو، يا شايد توهان کي صرف XML فائلن کي بهتر سمجهڻ جو موقعو ڏيندو. انھن لاءِ جيڪي ھن کي وڌيڪ تفصيل سان ڳولھڻ چاھيندا آھن، مون فيصلو ڪيو آھي ھڪڙي ننڍڙي لنڪ کي گڏ ڪرڻ جو:
  • XSD سادي عناصر - هن آرٽيڪل مان پڙهڻ شروع ڪريو ۽ اڳتي وڌو، اسڪيمن تي سموري معلومات گڏ ڪئي وئي آهي ۽ وڌيڪ يا گهٽ واضح طور تي وضاحت ڪئي وئي آهي، صرف انگريزيء ۾. توهان هڪ مترجم استعمال ڪري سگهو ٿا.

  • ويڊيو on namespaces، اهو هميشه ڪارائتو آهي ته ڪنهن شيءِ تي ڪنهن ٻئي نقطه نظر کي ٻڌڻ لاءِ جيڪڏهن پهريون واضح نه هجي.

  • Namespace XML نالو اسپيس جي استعمال جو هڪ سٺو مثال آهي ۽ ڪافي جامع آهي.

  • XML Basics - Namespaces - Namespaces تي ٻيو مختصر مضمون.

  • عناصر جي وضاحت ڪرڻ لاءِ XML اسڪيما کي استعمال ڪرڻ جا بنيادي اصول پڻ اسڪيما تي هڪ انتهائي مفيد حوالو آهي، پر توهان کي ضرورت آهي ته ان کي سستي ۽ احتياط سان پڙهڻ لاءِ، مواد ۾ داخل ٿيڻ.

اهو سڀ ڪجهه يقينن لاءِ آهي، مون کي اميد آهي ته جيڪڏهن توهان چاهيو ٿا ته هن کان وڌيڪ ڪجهه سکڻ، لنڪ توهان جي مدد ڪندا. مون پاڻ انهن سڀني ذريعن مان گذريو آهي، سڀني مواد جو مطالعو ڪيو آهي، ۽ مجموعي طور تي، انهن سڀني ذريعن مان سڀ کان وڌيڪ ڪارائتو هئا جن کي مون ڏٺو، ڇاڪاڻ ته انهن مان هر هڪ جي سمجهه ۾ بهتري آئي آهي جيڪا مون اڳ ۾ ئي ڪٿي پڙهي هئي، يا. مون کي ڪجهه نئون سکڻ ڏيو، پر مشق دوران گهڻو ڪجهه ڪيو ويو. تنهن ڪري، انهن لاءِ جيڪي حقيقت ۾ اهو سڀ ڪجهه چڱيءَ طرح سمجهڻ چاهين ٿا، منهنجو مشورو آهي: مطالعي جي نالي جي جاءِ، پوءِ ڪيئن آساني سان ڳنڍجي اسڪيمن کي XML فائلن سان، ۽ پوءِ ڪيئن لکجي دستاويز جي جوڙجڪ کي اسڪيمن ۾. ۽ سڀ کان اهم، مشق. پروگرامنگ ۾ توهان جي توجه ۽ سٺي قسمت لاءِ توهان سڀني جي مهرباني :) اڳيون مضمون: [مقابلو] جاوا پروگرامر لاءِ XML بنياديات - حصو 1 جو 3 اڳيون مضمون: [مقابلو] XML بنياديات جاوا پروگرامر لاءِ - حصو 3.1 جو 3 - SAX
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION