JavaRush /Java блогу /Random-KY /Java программист үчүн XML негиздери. 2/3-бөлүк
Ярослав
Деңгээл
Днепр

Java программист үчүн XML негиздери. 2/3-бөлүк

Группада жарыяланган

Киришүү

Салам, менин макаламдын урматтуу окурмандары. Бул XML жөнүндө сериядагы экинчи макала жана бул макалада XML Namespace жана XML схемасы жөнүндө сөз болот.
XML негиздери
Жакында эле, мен өзүм бул жөнүндө эч нерсе билген эмесмин, бирок мен көп материалдарды өздөштүрдүм жана бул эки маанилүү теманы жөнөкөй сөздөр менен түшүндүрүүгө аракет кылам. Мен дароо айткым келет, схемалар XML documentтерин текшерүү үчүн абдан өнүккөн механизм жана DTDлерге караганда алда канча функционалдык, ошондуктан бул жерде аларды толук изилдөө болбойт. баштайлы :)

XML ысым мейкиндиги

Аттар мейкиндиги "ат мейкиндиги" дегенди билдирет, бирок бул макалада мен көбүнчө орусча сөз айкашын жөн гана аттар мейкиндиги менен алмаштырам, анткени ал кыскараак жана түшүнүктүү. XML Namespace – бул технология, анын негизги максаты – бардык элементтер XML файлында уникалдуу экенин жана эч кандай башаламандык жок экенине ынануу. Жана бул Java курстары болгондуктан, ошол эле технология Java пакеттеринде да бар. Эгерде биз бирдей аталыштагы эки классты бири-биринин жанына коюп, аларды колдоно алсак, бизге кайсы класс керек экенин кантип аныктамакпыз? Бул көйгөй пакеттер аркылуу чечилет – биз жөн гана класстарды ар кандай пакеттерге жайгаштырып, аларды ошол жерден импорттосок болот, каалаган пакеттин так атын жана ага баруучу жолду көрсөтүү же жөн гана керектүү класска толук жолду көрсөтүү. Java программист үчүн 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= “ат мейкиндиги үчүн уникалдуу маани”. Андан кийин биз элементтердин префикстерин анын ошол аттар мейкиндигинин бир бөлүгү экенин көрсөтүү үчүн колдоно алабыз (негизинен, биз пакеттин жолун - аттар мейкиндигин түзүп, андан кийин ар бир элементке кайсы пакетке таандык экенин префикс кылышыбыз керек).
<?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ди тапанча үчүн боштук мылтыгынын уникалдуу элементтерин жана балык уулоо үчүн балык дүкөнүнүн уникалдуу элементтерин колдоно аласыз. Мейкиндиктерди түзүү менен биз бир эле дүкөндүн элементин бир эле учурда эки башка нерсе үчүн колдонгонубузду көрө аласыз - курал дүкөнү жана балык дүкөнү жана мейкиндиктерди жарыялоонун аркасында анын кандай дүкөн экенин так билебиз. Эң кызыктуусу схемалардан башталат, качан биз ушундай жол менен бир эле элементтер менен ар кандай структураларды текшере алабыз. xmlns аттар мейкиндигин жарыялоо үчүн атрибут; аны каалаган элементте көрсөтүүгө болот. Ат мейкиндигинин декларациясынын мисалы:
xmlns:shop= «https://barber-shop.com/»
Кош чекиттен кийин префикс болот - бул мейкиндик шилтемеси, андан кийин элементтердин ошол боштуктан келгендигин көрсөтүү үчүн колдонулушу мүмкүн. xmlns мааниси UNIQUE STRING болушу керек. Муну түшүнүү өтө маанилүү: аттар мейкиндигин жарыялоо үчүн веб-сайт шилтемелерин же URIларды колдонуу өтө кеңири таралган. Бул эреже стандарттуу, анткени шилтеменин 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/">
Мылтык же балык колдонуунун зарылдыгын болтурбоо үчүн стандарттык мейкиндикти ачык жарыяладык, анткени тамыр элементи балык уулоочу дүкөндүн же куралдын an objectиси эмес, андыктан эки мейкиндикти колдонуу логикалык жактан туура эмес болуп калат. Кийинки: эгерде сиз 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" />
Биз сапты сактаган элементти ушинтип жарыялайбыз. Бул элементтин ичинде башка элементтер болбошу керек. Ошондой эле татаал элементтер бар. Татаал элементтер башка элементтерди жана атрибуттарды өз ичинде сактоого жөндөмдүү. Андан кийин түрүн көрсөтүүнүн кереги жок, бирок жөн гана элементтин ичинде татаал түрүн жаза башташат.
<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"
Биринчи сап - жөн гана эстеп. Аны алар керек болгон жерге схемаларды жүктөөгө жардам берген an object катары ойлоп көрүңүз. Экинчи сап - белгилүү бир жүктөө. 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 аркылуу жана схемага жолду көрсөтүү менен жасалат. Схемада максаттуу мейкиндик жок болсо да, document текшерилет. Жана акыркы тийүү: биз диаграммаларга башка диаграммаларды импорттой алабыз, андан кийин бир диаграмманын элементтерин экинчисинде колдоно алабыз. Ошентип, кээ бир схемалардагы элементтерди башкаларында колдоно алабыз. Мисал:

Ээсинин түрү жарыяланган схема:

<?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 квалификациялуу (текшерүү), андыктан бардык элементтер өз мейкиндигин ачык көрсөтүшү керек.

Макаланын аягы

Кийинки макала сериянын акыркысы болот жана Java аркылуу XML файлдарын иштетүү жөнүндө болмокчу. Биз маалыматты ар кандай жолдор менен алууну үйрөнөбүз жана башкалар. Бул макала пайдалуу болду деп үмүттөнөм жана бул жерде каталар бар болсо дагы, ал сизге пайдалуу жана жаңы нерсени үйрөтөт же XML файлдарын жакшыраак түшүнүүгө мүмкүнчүлүк берет деп үмүттөнөм. Муну майда-чүйдөсүнө чейин изилдегиси келгендер үчүн, мен кичинекей шилтемелерди чогултууну чечтим:
  • XSD Simple Elements - бул макаладан окуп баштаңыз жана алдыга жылыңыз, схемалар боюнча бардык маалымат ошол жерде чогултулуп, англис тorнде гана аздыр-көптүр так түшүндүрүлөт. Сиз котормочуну колдоно аласыз.

  • аттар мейкиндигиндеги видео, эгер биринчиси түшүнүксүз болсо, бир нерсеге башка көз карашты угуу ар дайым пайдалуу.

  • Namespace XML аттар мейкиндигин колдонуунун жакшы үлгүсү болуп саналат жана толук камтылган.

  • XML негиздери - ысым мейкиндиктери - аттар мейкиндиктери боюнча дагы бир кыска макала.

  • Элементтерди аныктоо үчүн XML схемасын колдонуунун негиздери схемалар боюнча өтө пайдалуу маалымдама болуп саналат, бирок сиз аны жай жана кылдаттык менен окуп чыгып, материалды тереңирээк изилдешиңиз керек.

Мунун баары анык, эгер сиз мындан тереңирээк нерсени үйрөнгүңүз келсе, шилтемелер сизге жардам берет деп ишенем. Мен бул булактардын баарын өзүм карап чыктым, бардык материалдарды изилдеп чыктым жана жалпысынан булар мен карап чыккан булактардын ичинен эң пайдалуусу болду, анткени алардын ар бири же башка жерден окуганымды түшүнүүнү жакшыртышты, же мага жаңы нерсени үйрөнүүгө уруксат этиңиз, бирок практика учурунда көп нерсе жасалды. Ошентип, мунун баарын жакшы түшүнүүнү каалагандар үчүн менин кеңешим: аттар мейкиндигин изилдеп, андан кийин схемаларды XML файлдарына кантип оңой туташтыруу керек, анан схемаларда document структурасын кантип жазуу керек. Эң негизгиси, машыгуу. Көңүл бурганыңыз үчүн рахмат жана программалоодо ийгorк :) Мурунку макала: [Конкурс] Java программисти үчүн XML негиздери - 3-бөлүктүн 1-бөлүгү Кийинки макала: [Конкурс] Java программист үчүн XML негиздери - 3-бөлүктүн 3.1 - SAX
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION