JavaRush /Java Blogu /Random-AZ /Java Proqramçısı üçün XML Əsasları - 3-cü hissənin 1-ci h...
Ярослав
Səviyyə
Днепр

Java Proqramçısı üçün XML Əsasları - 3-cü hissənin 1-ci hissəsi

Qrupda dərc edilmişdir
XML bu gün çox populyar və çevik bir formatdır. Hər bir proqramçı bunu başa düşməlidir, sadəcə olaraq olmalıdır. Bu gün bir çox texnologiyalar ondan fəal şəkildə istifadə edir və müasirləri də onların arasındadır.
Java Proqramçısı üçün XML Əsasları - 3-1-dən 1-ci Hissə

Giriş

Salam, məqaləmin əziz oxucuları. Dərhal demək istəyirəm ki, bu, mənim üç məqalə silsiləsindəki yalnız birinci məqalədir. Bütün seriyanın əsas məqsədi hər bir oxucunu XML-ə daxil etmək və tam izahat və anlayış deyilsə, ən azı əsas məqamları və şeyləri izah edərək ona yaxşı bir təkan verməkdir. Bütün sikl bir nominasiya üçün olacaq - "Təfərrüata diqqət" və 3 məqaləyə bölmə yazılardakı xarakter məhdudiyyətinə uyğunlaşmaq və daha yaxşı başa düşmək üçün böyük miqdarda materialı daha kiçik hissələrə bölmək üçün edilir. Birinci məqalə XML-in özünə və onun nə olduğuna, həmçinin XML faylları üçün sxem yaratmaq yollarından biri - DTD-yə həsr olunacaq. Başlamaq üçün XML ilə hələ tanış olmayanlar üçün kiçik bir ön söz demək istərdim: qorxmağa ehtiyac yoxdur. XML çox mürəkkəb deyil və hər hansı bir proqramçı tərəfindən başa düşülməlidir, çünki bu, istədiyiniz müxtəlif məlumatları saxlamaq üçün bu gün çox çevik, səmərəli və populyar bir fayl formatıdır. XML Ant, Maven, Spring-də istifadə olunur. İstənilən proqramçının XML biliyinə ehtiyacı var. İndi siz güc və motivasiya topladınız, gəlin öyrənməyə başlayaq. Bütün materialları mümkün qədər sadə şəkildə tərtib etməyə çalışacağam, yalnız ən vaciblərini toplayacağam və alaq otlarına girməyəcəyəm.

XML

Daha aydın izahat üçün XML-i bir nümunə ilə vizuallaşdırmaq daha yaxşı olardı.
<?xml version="1.0" encoding="UTF-8"?>
<company>
    <name>IT-Heaven</name>
    <offices>
        <office floor="1" room="1">
            <employees>
                <employee>
                    <name>Maksim</name>
                    <job>Middle Software Developer</job>
                </employee>
                <employee>
                    <name>Ivan</name>
                    <job>Junior Software Developer</job>
                </employee>
                <employee>
                    <name>Franklin</name>
                    <job>Junior Software Developer</job>
                </employee>
            </employees>
        </office>
        <office floor="1" room="2">
            <employees>
                <employee>
                    <name>Herald</name>
                    <job>Middle Software Developer</job>
                </employee>
                <employee>
                    <name>Adam</name>
                    <job>Middle Software Developer</job>
                </employee>
                <employee>
                    <name>Leroy</name>
                    <job>Junior Software Developer</job>
                </employee>
            </employees>
        </office>
    </offices>
</company>
HTML və XML sintaksis baxımından oxşardır, çünki onların ümumi bir ana - SGML var. Bununla belə, HTML-də yalnız müəyyən bir standartın sabit teqləri var, XML-də isə siz öz teqlərinizi, atributlarınızı yarada və ümumiyyətlə məlumatları sizə uyğun şəkildə saxlamaq istədiyinizi edə bilərsiniz. Əslində, XML faylları ingilis dilini bilən hər kəs tərəfindən oxuna bilər. Bu nümunə bir ağacdan istifadə etməklə təsvir edilə bilər. Java Proqramçısı üçün XML Əsasları - 3-2 hissədən 1-ci hissəAğacın kökü Şirkətdir. O, həm də bütün digər elementlərin gəldiyi kök (kök) elementdir. Hər bir XML faylında yalnız bir kök element ola bilər. O , xml faylının elanından sonra elan edilməlidir (nümunədəki birinci sətir) və bütün digər elementləri ehtiva edir. Bəyannamə haqqında bir az: bu məcburidir və sənədi XML kimi müəyyən etmək üçün lazımdır. Onun üç psevdo-atributu (əvvəlcədən təyin edilmiş xüsusi atributlar) var: versiya (1.0 standartına uyğun), kodlaşdırma (kodlaşdırma) və müstəqil (muxtariyyət: bəli və xarici sxemlər sənədə qoşulubsa, onda bir səhv olacaq, standart yox). Elementlər digər elementlər və atributlardan istifadə edərək məlumatları saxlayan obyektlərdir. Atributlar element əlavə edilərkən müəyyən edilən element haqqında əlavə məlumatdır. İzahı OOP sahəsinə çevirsək, aşağıdakı nümunəni verə bilərik: avtomobilimiz var, hər bir avtomobilin xüsusiyyətləri (rəng, tutum, marka və s.) - bunlar atributlardır və avtomobilin içərisində olan obyektlər var. : qapılar, pəncərələr, mühərrik, sükan digər elementlərdir. İstəyinizdən asılı olaraq xassələri fərdi elementlər və ya atributlar kimi saxlaya bilərsiniz. Axı, XML hər hansı bir şey haqqında məlumat saxlamaq üçün son dərəcə çevik bir formatdır. İzahlardan sonra hər şeyin öz yerinə düşməsi üçün yuxarıdakı misala baxmaq kifayətdir. Nümunədə sadə bir şirkət quruluşunu təsvir etdik: adı və ofisləri olan bir şirkət var və ofislərdə işçilər var. İşçilər və Ofislər elementləri sarğı elementləridir - onlar eyni tipli elementləri toplamaq üçün xidmət edir, onları emal asanlığı üçün mahiyyətcə bir dəstdə birləşdirirlər. Döşəmə və otaq xüsusi diqqətə layiqdir. Bunlar ofisin atributlarıdır (mərtəbə və nömrə), başqa sözlə, onun xassələridir. Əgər “şəkil” elementimiz olsaydı, onun ölçülərini köçürə bilərdik. Siz görə bilərsiniz ki, şirkətin ad atributu yoxdur, lakin ad elementi var. Siz sadəcə olaraq strukturları istədiyiniz şəkildə təsvir edə bilərsiniz. Heç kim sizi elementlərin bütün xassələrini yalnız atributlarda yazmağa məcbur etmir, siz sadəcə elementlərdən istifadə edə və onların içərisinə bəzi məlumatlar yaza bilərsiniz. Məsələn, işçilərimizin adını və vəzifəsini atribut kimi qeyd edə bilərik:
<?xml version="1.0" encoding="UTF-8"?>
<company>
    <name>IT-Heaven</name>
    <offices>
        <office floor="1" room="1">
            <employees>
                <employee name="Maksim" job="Middle Software Developer">

                </employee>
                <employee name="Ivan" job="Junior Software Developer">

                </employee>
                <employee name="Franklin" job="Junior Software Developer">

                </employee>
            </employees>
        </office>
        <office floor="1" room="2">
            <employees>
                <employee name="Herald" job="Middle Software Developer">

                </employee>
                <employee name="Adam" job="Middle Software Developer">

                </employee>
                <employee name="Leroy" job="Junior Software Developer">

                </employee>
            </employees>
        </office>
    </offices>
</company>
Göründüyü kimi, indi hər bir işçinin adı və vəzifəsi onun atributlarıdır. Və işçi varlığının (etiketinin) içərisində heç bir şey olmadığını görə bilərsiniz, bütün işçi elementləri boşdur. Sonra işçini boş bir element edə bilərsiniz - atributları elan etdikdən dərhal sonra onu bağlayın. Bu olduqca sadədir, sadəcə bir slash əlavə edin:
<?xml version="1.0" encoding="UTF-8"?>
<company>
    <name>IT-Heaven</name>
    <offices>
        <office floor="1" room="1">
            <employees>
                <employee name="Maksim" job="Middle Software Developer" />
                <employee name="Ivan" job="Junior Software Developer" />
                <employee name="Franklin" job="Junior Software Developer" />
            </employees>
        </office>
        <office floor="1" room="2">
            <employees>
                <employee name="Herald" job="Middle Software Developer" />
                <employee name="Adam" job="Middle Software Developer" />
                <employee name="Leroy" job="Junior Software Developer" />
            </employees>
        </office>
    </offices>
</company>
Gördüyünüz kimi, boş elementləri bağlamaqla biz məlumatın bütün bütövlüyünü qoruduq və qeydi xeyli qısaltdıq, məlumatı daha yığcam və oxunaqlı etdik. XML-də şərh (faylın təhlili zamanı atlanacaq mətn) əlavə etmək üçün aşağıdakı sintaksis var:
<!-- Ivan недавно уволился, только неделю отработать должен. Не забудьте потом удалить его из списка.-->
Son konstruksiya isə “xarakter məlumatları” mənasını verən CDATA -dır. Bu dizayn sayəsində XML işarələməsi kimi şərh edilməyəcək mətn yazmaq mümkündür. Bu, məlumatda XML işarələməsini saxlayan XML faylı daxilində bir qurumunuz varsa faydalıdır. Misal:
<?xml version="1.0" encoding="UTF-8" ?>
<bean>
    <information>
        <![CDATA[<name>Ivan</name><age>26</age>]]>
    </information>
</bean>
XML ilə bağlı məsələ ondan ibarətdir ki, siz onu istədiyiniz kimi genişləndirə bilərsiniz: öz elementlərinizdən, öz atributlarınızdan istifadə edin və onu istədiyiniz kimi strukturlaşdırın. Məlumatları saxlamaq üçün həm atributlardan, həm də elementlərdən istifadə edə bilərsiniz (əvvəlki nümunədə göstərildiyi kimi). Bununla belə, başa düşməlisiniz ki, siz öz elementlərinizi və atributlarınızı tez və istədiyiniz kimi tapa bilərsiniz, amma başqa bir proqramçının ad elementini atributlara köçürmək istədiyi bir layihə üzərində işləsəniz və bütün proqram məntiqiniz necə olur? elə yazılıb ki, o ad element idi? XML fayllarını təsdiqləmək və qaydaların layihənizdə standart olacağına və heç kimin onları pozmayacağına əmin olmaq üçün hansı elementlərin olması, onların hansı atributlara malik olması və digər şeylər haqqında öz qaydalarınızı necə yarada bilərsiniz? Öz XML işarələmənizin bütün qaydalarını yazmaq üçün xüsusi vasitələr var. Ən məşhurları: DTD və XML Şeması. Bu məqalə yalnız birincisi haqqında danışacaq.

DTD

DTD sənədlərin növlərini təsvir etmək üçün yaradılmışdır. DTD artıq köhnəlir və indi XML-də fəal şəkildə tərk edilir, lakin hələ də DTD-dən istifadə edən bir çox XML faylı var və ümumiyyətlə, onu başa düşmək faydalıdır. DTD XML sənədlərini yoxlamaq üçün texnologiyadır . DTD sənəd növü üçün xüsusi qaydaları elan edir: onun elementləri, elementin içərisində hansı elementlər ola bilər, atributlar, onların tələb olunub-olunmaması, onların təkrarlarının sayı, habelə Müəssisələr. XML kimi, DTD daha aydın izahat üçün nümunə ilə vizuallaşdırıla bilər.
<!-- Объявление возможных элементов -->
<!ELEMENT employee EMPTY>
<!ELEMENT employees (employee+)>
<!ELEMENT office (employees)>
<!ELEMENT offices (office+)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (name, offices)>

<!-- Добавление атрибутов для элементов employee и office -->
<!ATTLIST employee
        name CDATA #REQUIRED
        job  CDATA #REQUIRED
>

<!ATTLIST office
        floor CDATA #REQUIRED
        room  CDATA #REQUIRED
>

<!-- Добавление сущностей -->
<!ENTITY M "Maksim">
<!ENTITY I "Ivan">
<!ENTITY F "Franklin">
Burada belə sadə bir nümunə var. Bu nümunədə biz XML nümunəsindən bütün iyerarxiyamızı elan etdik: işçi, işçilər, ofis, ofislər, ad, şirkət. DTD faylları yaratmaq üçün hər hansı XML faylını təsvir etmək üçün 3 əsas konstruksiyadan istifadə olunur: ELEMENT (elementləri təsvir etmək üçün), ATTLIST (elementlər üçün atributları təsvir etmək üçün) və ENTITY (mətni qısaldılmış formalarla əvəz etmək üçün). ELEMENT Elementi təsvir etmək üçün istifadə olunur. Təsvir edilmiş element daxilində istifadə edilə bilən elementlər siyahı şəklində mötərizədə verilmişdir. Kəmiyyəti göstərmək üçün kəmiyyət vericilərdən istifadə edə bilərsiniz (onlar müntəzəm ifadələrdən olan kəmiyyət ifadələrinə bənzəyirlər): +vasitə 1+ *deməkdir 0+ ?vasitələr 0VEYA 1 Əgər kəmiyyət göstəriciləri əlavə olunmayıbsa, onda yalnız 1 elementin olması nəzərdə tutulur. Bir qrup elementdən birinə ehtiyacımız varsa, onu belə yaza bilərik:
<!ELEMENT company ((name | offices))>
Sonra elementlərdən biri seçiləcəkdi: ad və ya ofislər, lakin şirkət daxilində onlardan ikisi varsa, yoxlama keçməyəcək. Siz həmçinin qeyd edə bilərsiniz ki, işçidə EMPTY sözü var - bu o deməkdir ki, element boş olmalıdır. Hər hansı bir element də var. #PCDATA – mətn məlumatları. ATTLIST Elementlərə atributlar əlavə etmək üçün istifadə olunur. ATTLIST-dən sonra istədiyiniz elementin adını, ondan sonra isə “atribut adı - atribut növü” formasının lüğətini izləyir və sonunda siz #İMPLIED (optional) və ya #REQUIRED (tələb olunur) əlavə edə bilərsiniz. CDATA - mətn məlumatları. Başqa növlər də var, lakin hamısı kiçik hərflərlə yazılıb. ENTITY ENTITY abreviaturaları və onların üzərində yerləşdiriləcək mətni elan etmək üçün istifadə olunur. Əslində, biz sadəcə olaraq XML-də tam mətnin əvəzinə obyektin adının qarşısında & işarəsi ilə istifadə edə biləcəyik və ; sonra. Məsələn: HTML işarələməsini və sadəcə simvolları fərqləndirmək üçün sol bucaq mötərizəsi çox vaxt lt ilə qaçırılır; , yalnız əvvəl & lt qoymaq lazımdır. Onda biz işarələmə deyil, sadəcə < simvolundan istifadə edəcəyik. Gördüyünüz kimi, hər şey olduqca sadədir: siz elementləri elan edirsiniz, elan edilmiş elementlərin hansı elementləri ehtiva edə biləcəyini izah edirsiniz, bu elementlərə atributlar əlavə edirsiniz və istəsəniz, bəzi girişləri qısaltmaq üçün obyektlər əlavə edə bilərsiniz. Və burada sual etməli olacaqsınız: qaydalarımızı XML faylımızda necə istifadə etmək olar? Axı biz qaydaları sadəcə elan etdik, lakin XML-də onlardan istifadə etmədik. Onları XML-də istifadə etməyin iki yolu var: 1. Yerləşdirmə – DTD qaydalarının XML faylının öz daxilində yazılması, sadəcə DOCTYPE açar sözündən sonra kök elementi yazın və DTD faylımızı kvadrat mötərizənin içərisinə daxil edin.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE company [
        <!-- Объявление возможных элементов -->
        <!ELEMENT employee EMPTY>
        <!ELEMENT employees (employee+)>
        <!ELEMENT office (employees)>
        <!ELEMENT offices (office+)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT company (name, offices)>

        <!-- Добавление атрибутов для элементов employee и office -->
        <!ATTLIST employee
        name CDATA #REQUIRED
        job  CDATA #REQUIRED
        >

        <!ATTLIST office
        floor CDATA #REQUIRED
        room  CDATA #REQUIRED
        >

        <!-- Добавление сущностей -->
        <!ENTITY M "Maksim">
        <!ENTITY I "Ivan">
        <!ENTITY F "Franklin">
]>

<company>
    <name>IT-Heaven</name>
    <!-- Ivan недавно уволился, только неделю отработать должен. Не забудьте потом удалить его из списка.-->
    <offices>
        <office floor="1" room="1">
            <employees>
                <employee name="&M;" job="Middle Software Developer" />
                <employee name="&I;" job="Junior Software Developer" />
                <employee name="&F;" job="Junior Software Developer" />
            </employees>
        </office>
        <office floor="1" room="2">
            <employees>
                <employee name="Herald" job="Middle Software Developer" />
                <employee name="Adam" job="Middle Software Developer" />
                <employee name="Leroy" job="Junior Software Developer" />
            </employees>
        </office>
    </offices>
</company>
2. İdxal - bütün qaydalarımızı ayrıca DTD faylına yazırıq, bundan sonra XML faylında biz birinci üsuldan DOCTYPE konstruksiyasından istifadə edirik, yalnız kvadrat mötərizələr əvəzinə SYSTEM yazmaq və mütləq və ya nisbi yol göstərmək lazımdır. faylın cari yeri.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE company SYSTEM "dtd_example1.dtd">

<company>
    <name>IT-Heaven</name>
    <!-- Ivan недавно уволился, только неделю отработать должен. Не забудьте потом удалить его из списка.-->
    <offices>
        <office floor="1" room="1">
            <employees>
                <employee name="&M;" job="Middle Software Developer" />
                <employee name="&I;" job="Junior Software Developer" />
                <employee name="&F;" job="Junior Software Developer" />
            </employees>
        </office>
        <office floor="1" room="2">
            <employees>
                <employee name="Herald" job="Middle Software Developer" />
                <employee name="Adam" job="Middle Software Developer" />
                <employee name="Leroy" job="Junior Software Developer" />
            </employees>
        </office>
    </offices>
</company>
Siz həmçinin SİSTEM əvəzinə PUBLIC açar sözündən istifadə edə bilərsiniz, lakin onun sizin üçün faydalı olacağı ehtimalı azdır. Əgər maraqlanırsınızsa, bu barədə (və SİSTEM haqqında da) burada ətraflı oxuya bilərsiniz: link . İndi biz digər elementləri DTD-də elan etmədən istifadə edə bilmərik və bütün XML qaydalarımıza tabedir. Siz bu kodu IntelliJ IDEA-da .xml uzadılması ilə ayrıca faylda yazmağa cəhd edə və bəzi yeni elementlər əlavə etməyə və ya DTD-dən elementi silməyə cəhd edə bilərsiniz və IDE-nin sizə xətanı necə göstərəcəyinə diqqət yetirə bilərsiniz. Bununla belə, DTD-nin çatışmazlıqları var:
  • Onun xml sintaksisindən fərqli öz sintaksisi var.
  • DTD-də məlumat növü yoxlanılmır və yalnız sətirlər ola bilər.
  • DTD-də ad sahəsi yoxdur.
Öz sintaksisinizin problemi haqqında: bir anda iki sintaksisi başa düşməlisiniz: XML və DTD sintaksisi. Onlar fərqlidir və bu sizi çaşdıra bilər. Həmçinin, buna görə, eyni DTD sxemləri ilə birlikdə nəhəng XML fayllarında səhvləri izləmək daha çətindir. Əgər bir şey sizin üçün işləmirsə, müxtəlif sintaksislərlə çoxlu mətni yoxlamalı olacaqsınız. Bu eyni anda iki kitab oxumaq kimidir: rus və ingilis dillərində. Bir dildə bilikləriniz daha pisdirsə, mətni başa düşmək də bir o qədər çətin olacaq. Məlumat növünün yoxlanılması problemi haqqında: DTD-lərdəki atributların müxtəlif növləri var, lakin onların hamısı, əsas etibarilə, bir şeyin, siyahıların və ya keçidlərin simli təsvirləridir. Bununla belə, yalnız rəqəmləri tələb edə bilməzsiniz, xüsusən də müsbət və ya mənfi olanları deyil. Və obyekt növlərini tamamilə unuda bilərsiniz. Son problem ad boşluqlarına və XML sxemlərinə həsr olunacaq növbəti məqalədə müzakirə ediləcək, çünki burada onu müzakirə etmək mənasızdır. Diqqətiniz üçün hamınıza təşəkkür edirəm, məqalələrin bütün seriyasını vaxtında bitirmək üçün çox iş görmüşəm və etməyə davam edirəm. Əsasən, 2-ci məqaləni bitirmək üçün sadəcə XML sxemlərini müəyyənləşdirməli və onların daha aydın sözlərlə izahını tapmalıyam. Bunun yarısı artıq hazırdır, ona görə də tezliklə bunu gözləmək olar. Son məqalə tamamilə Java istifadə edərək XML faylları ilə işləməyə həsr olunacaq. Hər kəsə uğurlar və proqramlaşdırmada uğurlar :) Növbəti məqalə: [Müsabiqə] Java Proqramçısı üçün XML Əsasları - Part 2/3
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION