JavaRush /جاوا بلاگ /Random-UR /XML بنیادی باتیں جاوا پروگرامر کے لیے۔ حصہ 2 از 3
Ярослав
سطح
Днепр

XML بنیادی باتیں جاوا پروگرامر کے لیے۔ حصہ 2 از 3

گروپ میں شائع ہوا۔

تعارف

ہیلو، میرے مضمون کے پیارے قارئین۔ یہ XML کے بارے میں سیریز کا دوسرا مضمون ہے، اور یہ مضمون XML Namespace اور XML سکیما کے بارے میں بات کرے گا۔
XML بنیادی باتیں
ابھی حال ہی میں، میں خود اس بارے میں کچھ نہیں جانتا تھا، لیکن میں نے بہت سارے مواد پر عبور حاصل کر لیا ہے اور میں ان دو اہم موضوعات کو آسان الفاظ میں بیان کرنے کی کوشش کروں گا۔ میں ابھی یہ کہنا چاہتا ہوں کہ اسکیما XML دستاویزات کی توثیق کرنے کا ایک بہت جدید طریقہ کار ہے اور DTDs کے مقابلے میں بہت زیادہ فعال ہیں، لہذا یہاں ان کا مکمل مطالعہ نہیں کیا جائے گا۔ آو شروع کریں :)

XML نام کی جگہ

نام کی جگہ کا مطلب ہے "نام کی جگہ"، تاہم اس مضمون میں میں اکثر روسی اظہار کو صرف نام کی جگہ سے بدل دوں گا، کیونکہ یہ چھوٹا اور سمجھنے میں آسان ہے۔ 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 نام کی جگہ میں سب کچھ ایک جیسا ہی ہوتا ہے، بس تھوڑا مختلف۔ جوہر ایک ہی ہے: اگر عناصر ایک جیسے ہیں (کلاسز کی طرح)، تو ہمیں انہیں مختلف نام کی جگہوں (پیکیجوں کی وضاحت) میں استعمال کرنا ہوگا، پھر بھی اگر عناصر (کلاسز) کے نام ایک ساتھ ہونے لگیں، تب بھی ہم اسپیس (پیکیج) سے ایک مخصوص عنصر تک رسائی حاصل کریں۔ مثال کے طور پر: ہمارے پاس XML میں دو عناصر ہیں - پیشین گوئی (اوریکل) اور اوریکل ڈیٹا بیس۔
<?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= "نام کی جگہ کے لیے منفرد قدر"۔ اس کے بعد ہم اس بات کی نشاندہی کرنے کے لیے عناصر کا سابقہ ​​لگا سکتے ہیں کہ یہ اس نام کی جگہ کا حصہ ہے (لازمی طور پر، ہمیں ایک پیکج کا راستہ بنانا ہوگا - نام کی جگہ، اور پھر ہر عنصر کا سابقہ ​​لگانا ہوگا جس کے ساتھ اس کا تعلق ہے)۔
<?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>
اس مثال میں، ہم نے دو نام کی جگہوں کا اعلان کیا: ڈیٹا بیس اور اوریکل۔ اب آپ عناصر سے پہلے نام کی جگہ کے سابقے استعمال کر سکتے ہیں۔ اگر ابھی کچھ واضح نہیں ہے تو گھبرانے کی ضرورت نہیں ہے۔ اصل میں، یہ بہت آسان ہے. شروع میں، میں مضمون کے اس حصے کو زیادہ تیزی سے لکھنا چاہتا تھا، لیکن بدھ کے بعد میں نے فیصلہ کیا کہ مجھے اس موضوع پر زیادہ توجہ دینے کی ضرورت ہے، کیونکہ کسی چیز کو الجھن میں ڈالنا یا نہ سمجھنا آسان ہے۔ اب 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 ہونی چاہیے۔ یہ سمجھنا انتہائی ضروری ہے: نام کی جگہ کا اعلان کرنے کے لیے ویب سائٹ کے لنکس یا URIs کا استعمال کرنا بہت عام ہے۔ یہ اصول معیاری ہے کیونکہ لنک کا URI یا URL منفرد ہے، لیکن یہ وہ جگہ ہے جہاں یہ بہت الجھا ہوا ہے۔ بس یاد رکھیں: قدر کوئی بھی سٹرنگ ہو سکتی ہے جو آپ چاہتے ہیں، لیکن یہ یقینی بنانے کے لیے کہ یہ منفرد اور معیاری ہے، آپ کو URL یا URI استعمال کرنے کی ضرورت ہے۔ حقیقت یہ ہے کہ آپ کسی بھی تار کو استعمال کرسکتے ہیں اوریکل میں مثال میں دکھایا گیا ہے:
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 کے بارے میں بات کی تھی، وہاں ایک مائنس تھا کہ یہ خالی جگہوں کو سپورٹ نہیں کرتا؟ اب جب کہ ہم نے اس کا مطالعہ کر لیا ہے، میں وضاحت کروں گا: اگر ایک 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 ویلیو)۔ دوسری دلیل اسکیما کا رشتہ دار یا مطلق راستہ ہے۔ اور چونکہ یہ ایک LIST ویلیو ہے، اس لیے آپ مثال میں اسکیم کے بعد ایک اسپیس ڈال سکتے ہیں، اور دوبارہ ٹارگٹ اسپیس اور دوسری اسکیم کا نام، اور اسی طرح جتنا آپ چاہیں درج کرسکتے ہیں۔ اہم:اسکیما کو بعد میں کسی چیز کی توثیق کرنے کے لیے، آپ کو اس جگہ کا اعلان کرنا ہوگا اور اسے سابقہ ​​کے ساتھ استعمال کرنا ہوگا۔ آخری مثال کو غور سے دیکھیں:
<?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 سادہ عناصر - اس مضمون سے شروع کرتے ہوئے، پڑھنا شروع کریں اور آگے بڑھیں، اسکیموں کی تمام معلومات وہاں جمع کی جاتی ہیں اور کم و بیش واضح طور پر بیان کی جاتی ہیں، صرف انگریزی میں۔ آپ مترجم استعمال کر سکتے ہیں۔

  • نام کی جگہوں پر ویڈیو، کسی چیز پر دوسرا نقطہ نظر سننا ہمیشہ مفید ہوتا ہے اگر پہلا واضح نہ ہو۔

  • نام کی جگہ XML نام کی جگہوں کے استعمال کی ایک اچھی مثال ہے اور کافی جامع ہے۔

  • XML بنیادی باتیں - نام کی جگہیں - نام کی جگہوں پر ایک اور مختصر مضمون۔

  • عناصر کی وضاحت کے لیے XML اسکیما کے استعمال کی بنیادی باتیں بھی اسکیموں پر ایک انتہائی مفید حوالہ ہے، لیکن آپ کو اسے آہستہ آہستہ اور احتیاط سے پڑھنے کی ضرورت ہے، مواد کی تلاش میں۔

یہ سب یقینی ہے، مجھے امید ہے کہ اگر آپ اس سے کچھ گہرائی سے سیکھنا چاہتے ہیں، تو لنکس آپ کی مدد کریں گے۔ میں نے خود ان تمام ذرائع کا مطالعہ کیا، تمام مواد کا مطالعہ کیا، اور مجموعی طور پر، یہ تمام ذرائع میں سے سب سے زیادہ کارآمد تھے جن کو میں نے دیکھا، کیونکہ ان میں سے ہر ایک نے یا تو اس کی سمجھ کو بہتر بنایا جو میں نے پہلے ہی کہیں اور پڑھا تھا، یا مجھے کچھ نیا سیکھنے دو، لیکن مشق کے دوران ہی بہت کچھ کیا گیا۔ لہذا، ان لوگوں کے لیے جو واقعی اس سب کو اچھی طرح سمجھنا چاہتے ہیں، میرا مشورہ یہ ہے کہ: نام کی جگہوں کا مطالعہ کریں، پھر اسکیموں کو XML فائلوں سے آسانی سے کیسے جوڑیں، اور پھر اسکیموں میں دستاویز کی ساخت کیسے لکھیں۔ اور سب سے اہم، مشق. پروگرامنگ میں آپ کی توجہ اور اچھی قسمت کے لیے آپ سب کا شکریہ :) پچھلا مضمون: [مقابلہ] XML Basics for a Java Programmer - Part 1 of 3 اگلا مضمون: [مقابلہ] XML Basics for a Java Programmer - Part 3.1 of 3 - SAX
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION