JavaRush /Blog Java /Random-MS /Asas XML untuk Pengaturcara Java. Bahagian 2 daripada 3
Ярослав
Tahap
Днепр

Asas XML untuk Pengaturcara Java. Bahagian 2 daripada 3

Diterbitkan dalam kumpulan

pengenalan

Halo, pembaca artikel saya yang dihormati. Ini ialah artikel kedua dalam siri tentang XML, dan artikel ini akan membincangkan tentang Ruang Nama XML dan Skema XML.
Asas XML
Baru-baru ini, saya sendiri tidak tahu apa-apa tentang perkara ini, tetapi saya telah menguasai banyak bahan dan akan cuba menerangkan dua topik penting ini dengan perkataan yang mudah. Saya ingin segera mengatakan bahawa skema ialah mekanisme yang sangat maju untuk mengesahkan dokumen XML dan lebih berfungsi daripada DTD, jadi tidak akan ada kajian lengkap mengenainya di sini. Mari kita mulakan :)

Ruang Nama XML

Ruang nama bermaksud "ruang nama", namun dalam artikel ini saya sering menggantikan ungkapan Rusia dengan ruang nama semata-mata, kerana ia lebih pendek dan lebih mudah untuk difahami. Ruang Nama XML ialah teknologi yang tujuan utamanya adalah untuk memastikan semua elemen adalah unik dalam fail XML dan tiada kekeliruan. Dan kerana ini adalah kursus Java, teknologi yang sama juga tersedia dalam pakej Java. Jika kita boleh meletakkan dua kelas dengan nama yang sama di sebelah satu sama lain dan menggunakannya, bagaimanakah kita akan menentukan kelas yang kita perlukan? Masalah ini diselesaikan dengan pakej - kita hanya boleh meletakkan kelas dalam pakej yang berbeza dan mengimportnya dari sana, menyatakan nama sebenar pakej yang diingini dan laluan kepadanya, atau hanya menentukan laluan penuh ke kelas yang dikehendaki. Asas XML untuk Pengaturcara Java.  Bahagian 2 daripada 3 - 1Sekarang, kita boleh melakukan ini:
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();
    }
}
Dalam Ruang Nama XML semuanya hampir sama, cuma berbeza sedikit. Intipatinya adalah sama: jika elemen adalah sama (seperti kelas), maka kita hanya perlu menggunakannya dalam ruang nama yang berbeza (nyatakan pakej), maka walaupun nama elemen (kelas) mula bertepatan, kita akan tetap akses elemen tertentu dari ruang ( pakej). Sebagai contoh: kami mempunyai dua elemen dalam XML - ramalan (oracle) dan pangkalan data 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>
Dan apabila kami memproses fail XML ini, kami akan keliru jika bukannya pangkalan data kami menerima ramalan, dan kembali juga. Untuk menyelesaikan perlanggaran elemen, kita boleh memperuntukkan setiap daripada mereka ruang sendiri untuk membezakan antara mereka. Terdapat atribut khas untuk ini - xmlns:prefix= "nilai unik untuk ruang nama". Kemudian kita boleh awalan elemen untuk menunjukkan bahawa ia adalah sebahagian daripada ruang nama itu (pada asasnya, kita perlu mencipta laluan pakej - ruang nama, dan kemudian awalan setiap elemen dengan pakej mana ia tergolong).
<?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>
Dalam contoh ini, kami telah mengisytiharkan dua ruang nama: pangkalan data dan oracle. Kini anda boleh menggunakan awalan ruang nama sebelum elemen. Tidak perlu takut jika ada yang tidak jelas sekarang. Malah, ia sangat mudah. Pada mulanya, saya ingin menulis bahagian artikel ini dengan lebih cepat, tetapi selepas hari Rabu saya memutuskan bahawa saya perlu memberi lebih perhatian kepada topik ini, kerana ia mudah untuk keliru atau tidak memahami sesuatu. Kini banyak perhatian akan diberikan kepada atribut xmlns. Jadi, contoh lain:
<?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>
Anda boleh melihat XML biasa menggunakan senapang ruang untuk elemen unik kedai senjata dan elemen unik kedai ikan untuk memancing. Anda boleh melihat bahawa dengan mencipta ruang, kami menggunakan satu elemen kedai untuk dua perkara berbeza serentak - kedai senjata dan kedai ikan, dan kami tahu dengan tepat jenis kedai itu kerana kami mengisytiharkan ruang itu. Perkara yang paling menarik akan bermula dalam skema, apabila kita akan dapat mengesahkan struktur yang berbeza dengan elemen yang sama dengan cara ini. xmlns ialah atribut untuk mengisytiharkan ruang nama; ia boleh ditentukan dalam mana-mana elemen. Contoh pengisytiharan ruang nama:
xmlns:shop= «https://barber-shop.com/»
Selepas titik bertindih ialah awalan - ini ialah rujukan ruang yang kemudiannya boleh digunakan sebelum elemen untuk menunjukkan bahawa ia berasal dari ruang tersebut. Nilai xmlns mestilah STRING UNIK. Ini amat penting untuk difahami: adalah perkara biasa untuk menggunakan pautan tapak web atau URI untuk mengisytiharkan ruang nama. Peraturan ini adalah standard kerana URI atau URL pautan adalah unik, TETAPI di sinilah ia menjadi sangat mengelirukan. Ingatlah: nilai boleh jadi SEBARANG rentetan yang anda mahukan, tetapi untuk memastikan ia unik dan standard, anda perlu menggunakan URL atau URI. Fakta bahawa anda boleh menggunakan sebarang rentetan ditunjukkan dalam contoh dalam oracle:
xmlns:oracle="Unique ID #2"
xmlns:database="Unique ID #1"
Apabila anda mengisytiharkan ruang nama, anda boleh menggunakannya pada elemen itu sendiri dan pada semua elemen di dalamnya, jadi ruang nama yang diisytiharkan pada elemen akar boleh digunakan pada semua elemen. Ini boleh dilihat dalam contoh terakhir, dan berikut ialah contoh yang lebih khusus:
<?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>
Berikut ialah butiran penting: terdapat juga ruang nama standard dalam elemen akar. Jika anda mengisytiharkan ruang nama lain, anda mengatasi ruang nama lalai dan tidak boleh menggunakannya. Kemudian anda perlu meletakkan beberapa jenis awalan ruang di hadapan elemen akar, mana-mana yang anda nyatakan sebelum ini. Walau bagaimanapun, ini juga boleh ditipu: anda boleh mengisytiharkan ruang standard secara eksplisit. Cukuplah untuk tidak menggunakan awalan selepas xmlns, tetapi dengan segera menulis beberapa nilai, dan semua elemen anda tanpa awalan akan tergolong dalam ruang nama khusus ini. Contoh terakhir menggunakan ini:
<root xmlns="https://www.standart-namespace.com/" xmlns:gun="https://www.gun-shop.com/" xmlns:fish="https://www.fish-shop.com/">
Kami mengisytiharkan ruang standard secara eksplisit untuk mengelakkan keperluan menggunakan senjata api atau ikan, kerana elemen akar bukanlah entiti sama ada kedai memancing atau senjata, jadi menggunakan mana-mana ruang adalah secara logiknya tidak betul. Seterusnya: jika anda mencipta xmlns:a dan xmlns:b, tetapi ia mempunyai nilai yang sama, maka ini adalah ruang yang sama dan ia tidak unik. Itulah sebabnya anda harus sentiasa menggunakan nilai unik, kerana melanggar peraturan ini boleh menghasilkan sejumlah besar ralat. Sebagai contoh, jika kita mempunyai ruang yang diisytiharkan seperti ini:
xmlns="https://www.standart-namespace.com/" xmlns:gun="https://www.gun-shop.com/" xmlns:fish="https://www.gun-shop.com/"
Kemudian kedai pancing kami akan menjadi kedai senjata, dan awalan masih akan menjadi kedai ikan. Ini semua adalah perkara utama ruang. Saya menghabiskan banyak masa untuk mengumpul semuanya dan mengurangkannya, dan kemudian menyatakannya dengan jelas, kerana maklumat tentang ruang di Internet adalah sangat besar dan selalunya hanya air, jadi kebanyakan semua yang ada di sini - saya mempelajarinya sendiri melalui percubaan dan kesilapan. Jika anda masih mempunyai soalan, anda boleh cuba membaca bahan menggunakan pautan di akhir artikel.

Skema XML

Saya ingin segera mengatakan bahawa artikel ini hanya akan menjadi puncak gunung es, kerana topiknya sangat luas. Sekiranya anda ingin membiasakan diri dengan skim dengan lebih terperinci dan belajar cara menulisnya sendiri dari sebarang kerumitan, maka pada akhir artikel akan ada pautan di mana segala-galanya akan mengenai jenis, sekatan, sambungan, dan sebagainya yang berbeza. Saya mahu mulakan dengan teori. Skim mempunyai format .xsd (takrif skema xml) dan merupakan alternatif yang lebih maju dan popular kepada DTD: ia juga boleh mencipta elemen, menerangkannya dan sebagainya. Walau bagaimanapun, banyak bonus telah ditambah: pemeriksaan jenis, sokongan ruang nama dan fungsi yang lebih luas. Ingat apabila kita bercakap tentang DTD, terdapat tolak bahawa ia tidak menyokong ruang? Sekarang kita telah mengkaji ini, saya akan menerangkan: jika mungkin untuk mengimport dua atau lebih skema daripada DTD, di mana terdapat unsur-unsur yang sama, kita akan mengalami perlanggaran (kebetulan) dan tidak akan dapat menggunakannya sama sekali, kerana tidak jelas elemen mana yang kita perlukan. XSD menyelesaikan masalah ini kerana anda boleh mengimport skema ke dalam satu ruang tertentu dan menggunakannya. Pada asasnya, setiap skema XSD mempunyai ruang sasaran, yang bermaksud di ruang mana skema harus ditulis dalam fail XML. Oleh itu, dalam fail XML itu sendiri, kita hanya perlu mencipta ruang ini yang dipratentukan dalam skema dan memberikan awalan kepada mereka, dan kemudian menyambungkan skema yang diperlukan kepada setiap satu daripadanya, selepas itu kita boleh menggunakan elemen daripada skema dengan selamat, menggantikan awalan daripada ruang di mana kami mengimport skema. Jadi, kami mempunyai contoh:
<?xml version="1.0" encoding="UTF-8"?>
<house>
    <address>ул. Есенина, дом №5</address>
    <owner name="Ivan">
        <telephone>+38-094-521-77-35</telephone>
    </owner>
</house>
Kami mahu mengesahkannya dengan skema. Pertama, kita memerlukan skema:
<?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>
Seperti yang anda lihat, skema juga merupakan fail XML. Anda menulis apa yang anda perlukan secara langsung dalam XML. Skema ini mampu mengesahkan fail XML daripada contoh di atas. Sebagai contoh: jika pemilik tidak mempunyai nama, litar akan melihat ini. Juga, terima kasih kepada elemen urutan, alamat harus sentiasa didahulukan, dan kemudian pemilik rumah. Terdapat unsur biasa dan kompleks. Elemen biasa ialah elemen yang menyimpan hanya beberapa jenis data. Contoh:
<element name="telephone" type="string" />
Beginilah cara kami mengisytiharkan elemen yang menyimpan rentetan. Seharusnya tiada unsur lain di dalam elemen ini. Terdapat juga unsur kompleks. Elemen kompleks mampu menyimpan elemen dan atribut lain dalam diri mereka. Kemudian anda tidak perlu menentukan jenis, tetapi hanya mula menulis jenis kompleks di dalam elemen.
<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>
Ia juga mungkin untuk melakukannya secara berbeza: anda boleh mencipta jenis kompleks secara berasingan, dan kemudian menggantikannya kepada jenis. Hanya semasa menulis contoh ini, atas sebab tertentu adalah perlu untuk mengisytiharkan ruang di bawah beberapa jenis awalan, dan tidak menggunakan yang standard. Secara umum, ternyata seperti ini:
<?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>
Dengan cara ini, kita boleh mencipta jenis kita sendiri secara berasingan dan kemudian menggantikannya di suatu tempat dalam atribut jenis. Ini sangat mudah kerana ia membolehkan anda menggunakan satu jenis di tempat yang berbeza. Saya ingin bercakap lebih lanjut mengenai penyambungan litar dan selesaikan di sini. Terdapat dua cara untuk menyambungkan litar: ke ruang tertentu dan hanya menyambung.

Cara pertama untuk menyambungkan litar

Kaedah pertama mengandaikan bahawa litar mempunyai ruang sasaran tertentu. Ia ditentukan menggunakan atribut targetNamespace pada elemen skema. Kemudian sudah cukup untuk mencipta ruang yang SAMA INI dalam fail XML, dan kemudian "memuatkan" skema di sana:
<?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>
Adalah penting untuk memahami dua baris:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemeLocation="https://www.nedvigimost.com/ example_schema1.xsd"
Baris pertama - ingat sahaja. Fikirkan ia sebagai objek yang membantu memuatkan skema ke mana mereka perlu pergi. Baris kedua ialah muat turun khusus. schemaLocation menerima senarai nilai dalam bentuk "nilai - nilai", dipisahkan oleh ruang. Argumen pertama ialah ruang nama, yang mesti sepadan dengan ruang nama sasaran dalam skema (nilai targetNamespace). Argumen kedua ialah laluan relatif atau mutlak kepada skema. Dan kerana ini adalah nilai LIST, anda boleh meletakkan ruang selepas skema dalam contoh, dan sekali lagi masukkan ruang sasaran dan nama skema lain, dan seterusnya seberapa banyak yang anda mahu. Penting:Untuk membolehkan skema mengesahkan sesuatu kemudian, anda perlu mengisytiharkan ruang ini dan menggunakannya dengan awalan. Lihat dengan teliti pada contoh terakhir:
<?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>
Kami mencipta ruang sasaran ini pada awalan nedvig dan kemudian menggunakannya. Oleh itu, elemen kami mula disahkan, kerana kami mula menggunakan ruang di mana ruang skema sasaran dirujuk.

Cara kedua untuk menyambungkan litar

Cara kedua untuk menyambung litar membayangkan bahawa litar tidak mempunyai ruang sasaran tertentu. Kemudian anda hanya boleh menyambungkannya ke fail XML dan ia akan mengesahkannya. Ini dilakukan dengan cara yang hampir sama, hanya anda tidak boleh mengisytiharkan ruang sama sekali dalam fail XML, tetapi hanya menyambungkan skema.
<?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>
Seperti yang anda lihat, ini dilakukan menggunakan noNamespaceSchemaLocation dan menentukan laluan ke skema. Walaupun skema tidak mempunyai ruang sasaran, dokumen akan disahkan. Dan sentuhan terakhir: kita boleh mengimport gambar rajah lain ke dalam rajah, dan kemudian menggunakan elemen dari satu rajah dalam rajah yang lain. Oleh itu, kita boleh menggunakan elemen dalam beberapa litar yang sudah ada dalam litar lain. Contoh:

Skema di mana jenis pemilik diisytiharkan:

<?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>

Skema kedua, yang menggunakan jenis pemilik daripada skema pertama:

<?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>
Skim kedua menggunakan pembinaan berikut:
<import namespace="bonus" schemaLocation="xsd2.xsd" />
Menggunakannya, kami mengimport jenis dan elemen dari satu skema ke skema yang lain ke dalam ruang bonus. Oleh itu, kami mempunyai akses kepada bonus:jenis pemilik. Dan dalam baris seterusnya kami menggunakannya:
<element name="owner" type="bonus:owner" />
Juga sedikit perhatian kepada baris berikut:
elementFormDefault="qualified"
Atribut ini diisytiharkan dalam skema dan bermakna dalam fail XML, setiap elemen mesti diisytiharkan dengan awalan eksplisit di hadapannya. Jika ia tidak ada, maka kita hanya perlu mengisytiharkan elemen luaran dengan awalan, dan kita juga perlu menetapkan awalan dalam semua elemen di dalam, dengan jelas menunjukkan bahawa kita menggunakan elemen skema ini dengan tepat. Dan di sini, sebenarnya, ialah contoh fail XML yang disahkan oleh skema yang mengimport skema lain:
<?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>
Dalam baris:
<bonus:telephone>+38-094-521-77-35</bonus:telephone>
Kami perlu mengisytiharkan ruang nama bonus secara eksplisit, yang menunjuk ke ruang sasaran skema pertama, memandangkan elementFormDefault layak (semak), jadi semua elemen mesti menunjukkan ruang mereka secara eksplisit.

Akhir artikel

Artikel seterusnya akan menjadi yang terakhir dalam siri ini dan sudah pun mengenai pemprosesan fail XML menggunakan Java. Kita akan belajar untuk mendapatkan maklumat dengan cara yang berbeza dan sebagainya. Saya berharap artikel ini berguna dan, walaupun terdapat ralat di suatu tempat, ia akan mengajar anda sesuatu yang berguna dan baharu, atau mungkin hanya memberi anda peluang untuk memahami fail XML dengan lebih baik. Bagi mereka yang ingin meneroka ini dengan lebih terperinci, saya memutuskan untuk mengumpulkan satu set kecil pautan:
  • Elemen Mudah XSD - bermula dari artikel ini, mula membaca dan maju ke hadapan, semua maklumat mengenai skema dikumpulkan di sana dan dijelaskan lebih kurang jelas, hanya dalam bahasa Inggeris. Anda boleh menggunakan penterjemah.

  • video pada ruang nama, sentiasa berguna untuk mendengar sudut pandangan lain tentang sesuatu jika yang pertama tidak jelas.

  • XML ruang nama ialah contoh yang baik bagi penggunaan ruang nama dan agak menyeluruh.

  • Asas XML - Ruang nama - Satu lagi artikel pendek tentang ruang nama.

  • Asas Penggunaan Skema XML untuk Mentakrifkan Elemen juga merupakan rujukan yang sangat berguna pada skema, tetapi anda perlu membacanya dengan perlahan dan berhati-hati, mendalami bahan tersebut.

Itu sahaja yang pasti, saya harap jika anda ingin mempelajari sesuatu yang lebih mendalam daripada ini, pautan akan membantu anda. Saya melalui semua sumber ini sendiri, mengkaji semua bahan, dan, secara keseluruhan, ini adalah yang paling berguna daripada semua sumber yang saya lihat, kerana setiap daripada mereka sama ada meningkatkan pemahaman tentang apa yang telah saya baca di tempat lain, atau izinkan saya belajar sesuatu yang baru, tetapi banyak yang dilakukan hanya semasa latihan. Jadi, bagi mereka yang benar-benar ingin memahami semua ini dengan baik, nasihat saya ialah: kaji ruang nama, kemudian cara menyambungkan skema ke fail XML dengan mudah, dan kemudian cara menulis struktur dokumen dalam skema. Dan yang paling penting, amalkan. Terima kasih semua atas perhatian anda dan semoga berjaya dalam pengaturcaraan :) Artikel sebelumnya: [Pertandingan] Asas XML untuk Pengaturcara Java - Bahagian 1 daripada 3 Artikel seterusnya: [Pertandingan] Asas XML untuk Pengaturcara Java - Bahagian 3.1 daripada 3 - SAX
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION