JavaRush /Блоги Java /Random-TG /Асосҳои XML барои барномасози Java. Қисми 2 аз 3
Ярослав
Сатҳи
Днепр

Асосҳои XML барои барномасози Java. Қисми 2 аз 3

Дар гурӯҳ нашр шудааст

Муқаддима

Салом, хонандагони азизи мақолаи ман. Ин мақолаи дуюм дар силсилаи XML аст ва ин мақола дар бораи XML Namespace ва XML Schema сӯҳбат хоҳад кард.
Асосҳои XML
Ба наздикӣ ман худам дар ин бора чизе намедонистам, аммо маводи зиёдеро аз худ кардаам ва кӯшиш мекунам, ки ин ду мавзӯи муҳимро бо суханони оддӣ шарҳ диҳам. Ман дарҳол гуфтан мехоҳам, ки схемаҳо як механизми хеле пешрафтаи тасдиқи ҳуҷҷатҳои XML мебошанд ва нисбат ба DTDҳо хеле функсионалӣ мебошанд, бинобар ин дар ин ҷо омӯзиши пурраи онҳо гузаронида намешавад. Биёед оғоз кунем :)

Фазои номҳои XML

Фазои ном маънои "фазои ном"-ро дорад, аммо дар ин мақола ман аксар вақт ифодаи русиро бо фазои номҳо иваз мекунам, зеро он кӯтоҳтар ва осонтар фаҳмида мешавад. XML Namespace технологияест, ки ҳадафи асосии он боварӣ ҳосил кардан аст, ки ҳамаи унсурҳо дар файли XML нодиранд ва ҳеҷ иштибоҳ вуҷуд надорад. Ва азбаски инҳо курсҳои Java мебошанд, ҳамон технология дар бастаҳои Java низ мавҷуд аст. Агар мо тавонистем ду синфро бо як ном дар паҳлӯи ҳамдигар ҷойгир кунем ва онҳоро истифода барем, чӣ гуна муайян мекардем, ки кадом синф ба мо лозим аст? Ин масъаларо бастаҳо ҳал мекунанд - мо метавонем танҳо синфҳоро дар бастаҳои гуногун ҷойгир кунем ва онҳоро аз он ҷо ворид кунем, номи дақиқи бастаи дилхоҳ ва роҳи онро муайян кунем ё танҳо роҳи пурраи синфи дилхоҳро муайян кунем. Асосҳои XML барои барномасози Java.  Қисми 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= "арзиши беназир барои фазои ном". Пас мо метавонем ба унсурҳо префикс гузорем, то нишон диҳем, ки он як қисми ин фазои ном аст (аслан, мо бояд роҳи баста - фазои номро созем ва баъд ҳар як элементро бо кадом бастаи он префикс гузоштан лозим аст).
<?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>
Дар ин мисол, мо ду фазои номро эълон кардем: пойгоҳи додаҳо ва oracle. Акнун шумо метавонед пешояндҳои фазои номро пеш аз элементҳо истифода баред. Агар чизе ҳоло норавшан бошад, набояд тарсид. Дар асл, ин хеле содда аст. Дар аввал мехостам ин қисми мақоларо зудтар нависам, аммо баъд аз рӯзи чоршанбе тасмим гирифтам, ки ба ин мавзӯъ бештар таваҷҷуҳ кунам, зеро чизеро парешон кардан ё нафаҳмидан осон аст. Акнун ба атрибути 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-и муқаррариро бо истифода аз таппончаи фосилавӣ барои мағозаи силоҳ унсурҳои беназир ва моҳӣ барои мағозаи моҳидорӣ унсурҳои беназирро бинед. Шумо мебинед, ки бо ташкor ҷойҳо, мо як унсури мағозаро якбора барои ду чизи гуногун истифода бурдем - мағозаи аслиҳа ва мағозаи моҳӣ ва мо дақиқ медонем, ки он чӣ гуна мағоза аст, ба шарофати он, ки ҷойҳоро эълон кардем. Чизи ҷолибтарин дар схемаҳо оғоз мешавад, вақте ки мо метавонем бо ин роҳ сохторҳои гуногунро бо як элементҳо тасдиқ кунем. xmlns атрибут барои эълони фазои ном аст; онро дар ҳама гуна элемент муайян кардан мумкин аст. Намунаи эъломияи фазои ном:
xmlns:shop= «https://barber-shop.com/»
Пас аз ду нуқта префикс аст - ин истинод ба фосила аст, ки пас аз он метавонад пеш аз унсурҳо истифода шавад, то нишон диҳад, ки онҳо аз ин фазо омадаанд. Қимати xmlns бояд як САТРИ НЕКОР бошад. Барои фаҳмидани ин хеле муҳим аст: истифодаи истинодҳои вебсайт ё URI барои эълон кардани фазои ном хеле маъмул аст. Ин қоида стандартӣ аст, зеро URI ё URL-и истинод беназир аст, АММО дар ин ҷо он хеле печида мешавад. Фақат дар хотир доред: арзиш метавонад ЯГОН сатри шумо бошад, аммо барои боварӣ ҳосил кардани он, ки он беназир ва стандартӣ аст, шумо бояд URL ё URI-ро истифода баред. Далели он, ки шумо метавонед ҳама гуна сатрҳоро истифода баред, дар мисоли oracle нишон дода шудааст:
xmlns:oracle="Unique ID #2"
xmlns:database="Unique ID #1"
Вақте ки шумо фазои номро эълон мекунед, шумо метавонед онро дар худи элемент ва дар ҳама унсурҳои дохor он истифода баред, аз ин рӯ, фазоҳои номҳои дар элементи реша эълоншуда метавонанд дар ҳама элементҳо истифода шаванд. Инро дар мисоли охирин дидан мумкин аст ва дар ин ҷо як мисоли мушаххастар аст:
<?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) доранд ва алтернативаи пешрафта ва маъмули DTD мебошанд: онҳо инчунин метавонанд унсурҳоро эҷод кунанд, онҳоро тавсиф кунанд ва ғайра. Бо вуҷуди ин, бонусҳои зиёде илова карда шуданд: тафтиши намуд, дастгирии фазои номҳо ва функсияҳои васеътар. Дар хотир доред, ки вақте ки мо дар бораи 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" />
Ҳамин тавр мо элементеро эълон мекунем, ки сатрро нигоҳ медорад. Дар дохor ин элемент набояд унсурҳои дигар вуҷуд дошта бошанд. Инчунин унсурҳои мураккаб мавҷуданд. Унсурҳои мураккаб қодиранд, ки унсурҳо ва атрибутҳои дигарро дар дохor худ нигоҳ доранд. Он гоҳ ба шумо лозим нест, ки навъи онро муайян кунед, аммо танҳо ба навиштани навъи мураккаб дар дохor элемент шурӯъ кунед.
<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>
Бо ин роҳ, мо метавонем намудҳои худро алоҳида эҷод кунем ва сипас онҳоро дар ҷое дар атрибутии type иваз кунем. Ин хеле қулай аст, зеро он ба шумо имкон медиҳад, ки як навъро дар ҷойҳои гуногун истифода баред. Ман мехостам бештар дар бораи пайваст кардани схемаҳо сӯҳбат кунам ва дар ин ҷо ба итмом расам. Ду роҳи пайваст кардани схема вуҷуд дорад: ба фазои мушаххас ва танҳо пайваст шудан.

Роҳи якуми пайваст кардани схема

Усули аввал тахмин мекунад, ки схема фазои мушаххаси мақсаднок дорад. Он бо истифода аз атрибути 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"
Сатри аввал - танҳо онро дар хотир доред. Онро ҳамчун an objectе тасаввур кунед, ки барои бор кардани схемаҳо ба ҷое, ки онҳо бояд бираванд, кӯмак мекунад. Сатри дуюм зеркашии мушаххас аст. schemaLocation рӯйхати арзишҳои шакли "арзиш - арзиш", ки бо фосила ҷудо карда шудаанд, қабул мекунад. Далели аввал фазои ном аст, ки бояд ба фазои номҳои ҳадаф дар схема (қимати targetNamespace) мувофиқат кунад. Далели дуюм роҳи нисбӣ ё мутлақ ба схема мебошад. Ва азбаски ин арзиши РӮЙХАТ аст, шумо метавонед пас аз схема дар мисол фосила гузоред ва бори дигар фосилаи ҳадаф ва номи схемаи дигарро ворид кунед ва ғайра. Муҳим:Барои он ки схема дертар чизеро тасдиқ кунад, шумо бояд ин фосиларо эълон кунед ва онро бо префикс истифода баред. Ба мисоли охирин бодиққат нигаред:
<?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 бо истифода аз Java хоҳад буд. Мо бо роҳҳои гуногун гирифтани маълумотро меомӯзем ва ғайра. Ман умедворам, ки ин мақола муфид буд ва ҳатто агар дар ин ҷо хатогиҳо вуҷуд дошта бошанд ҳам, он ба шумо чизи муфид ва навро таълим медиҳад ё шояд танҳо ба шумо имкон диҳад, ки файлҳои XML-ро беҳтар фаҳмед. Барои онҳое, ки мехоҳанд инро муфассалтар омӯзанд, ман қарор додам, ки маҷмӯи хурди истинодҳоро ҷамъ кунам:
  • XSD Simple Elements - аз ин мақола сар карда, хонданро оғоз кунед ва ба пеш ҳаракат кунед, ҳама маълумот дар бораи схемаҳо дар он ҷо ҷамъоварӣ карда мешаванд ва камтар ё камтар равшантар, танҳо ба забони англисӣ шарҳ дода мешаванд. Шумо метавонед тарҷумонро истифода баред.

  • видео дар фазои номҳо, гӯш кардани нуқтаи назари дигар дар бораи чизе ҳамеша муфид аст, агар нуқтаи аввал равшан набошад.

  • Namespace XML намунаи хуби истифодаи фазои номҳост ва хеле фарогир аст.

  • Асосҳои XML - Фазои номҳо - Боз як мақолаи кӯтоҳ дар бораи фазоҳои ном.

  • Асосҳои истифодаи схемаи XML барои муайян кардани унсурҳо инчунин як истинод ба схемаҳо хеле муфид аст, аммо шумо бояд онро оҳиста ва бодиққат хонед ва ба мавод омӯзед.

Ин ҳама бешубҳа аст, ман умедворам, ки агар шумо хоҳед, ки аз ин чизе амиқтар омӯзед, истинодҳо ба шумо кӯмак мекунанд. Ман худам ҳамаи ин манбаъҳоро аз назар гузаронида, тамоми маводро омӯхтам ва дар маҷмӯъ, инҳо аз ҳама сарчашмаҳое, ки ман аз назар гузаронидам, муфидтарин буданд, зеро ҳар кадоми онҳо ё фаҳмиши он чизеро, ки дар ҷои дигар хонда будам, беҳтар карданд ё ба ман иҷозат диҳед, ки чизи навро омӯзам, аммо танҳо дар давоми амалия бисёр корҳо анҷом дода шуданд. Ҳамин тавр, барои онҳое, ки воқеан мехоҳанд ҳамаи инро хуб дарк кунанд, маслиҳати ман ин аст: фазоҳои номҳоро омӯзед, пас чӣ гуна схемаҳоро ба файлҳои XML ба осонӣ пайваст кардан мумкин аст ва сипас сохтори ҳуҷҷатро дар схемаҳо чӣ гуна бояд нависед. Ва муҳимтар аз ҳама, амалия. Ташаккур ба ҳама барои таваҷҷуҳ ва барори кор дар барномасозӣ :) Мақолаи қаблӣ: [Мусобиқа] Асосҳои XML барои барномасози Java - Қисми 1 аз 3 Мақолаи навбатӣ: [Мусобиқа] Асосҳои XML барои барномасози Java - Қисми 3.1 аз 3 - SAX
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION