Menggunakan model objek dokumen XML. Panduan Internet - Semua yang paling menarik Cara Membuat File Delphi XML

Bahasa XML semakin banyak digunakan untuk menyimpan informasi, membagikannya antara aplikasi dan node web. Dalam banyak aplikasi, bahasa ini digunakan sebagai penyimpanan data dasar pada yang lain - untuk mengekspor dan mengimpor data XML. Ini mengikuti dari ini bahwa sekarang saatnya pengembang untuk berpikir tentang cara menggunakan data XML dalam aplikasi Anda sendiri.

Dalam artikel ini kita akan melihat Dokumen XML Object Model (DOM) dan implementasinya oleh Microsoft - Microsoft XML DOM.

XML DOM adalah model objek yang menyediakan objek pengembang untuk mengunduh dan memproses file XML. Model objek terdiri dari objek utama berikut: xmldomdocument, xmldomnodelist, xmldomnode, xmldomnamednodemap dan xmldomparseerror. Masing-masing objek ini (kecuali xmldomparseerror) berisi properti dan metode untuk mendapatkan informasi tentang objek, memanipulasi nilai dan struktur objek, serta bergerak di sepanjang struktur dokumen XML.

Pertimbangkan objek utama XML DOM dan berikan beberapa contoh penggunaannya di Borland Delphi.

Menggunakan XML DOM di Borland Delphi

Untuk menggunakan Microsoft XML DOM dalam aplikasi Delphi, Anda harus menghubungkan tipe pustaka yang sesuai dengan proyek. Untuk Melakukan Ini, Kami Melaksanakan Proyek | Perpustakaan Jenis Impor dan di panel dialog Library Type Import, pilih Perpustakaan Microsoft XML versi 2.0 (versi 2.0), yang biasanya terletak di file Windows \\ System \\ MSXML.dll

Setelah menekan tombol Buat Unit, modul antarmuka MSXML_TLB akan dibuat, yang akan memungkinkan kami untuk menggunakan objek XML DOM: domdocument, xmldocument, xmlhttprequest dan sejumlah lainnya diimplementasikan di perpustakaan MSXML.dll. Tautan ke modul MSXML_TLB harus tercantum dalam daftar penggunaan.

Perangkat XML DOM.

Model objek dokumen mewakili dokumen XML dalam bentuk struktur pohon yang terdiri dari cabang. Antarmuka perangkat lunak XML DOM memungkinkan aplikasi untuk menavigasi pohon dokumen dan memanipulasi cabang-cabangnya. Setiap cabang dapat memiliki tipe tertentu (Domnodetype), menurut induk dan anak perusahaan yang ditentukan. Dalam sebagian besar dokumen XML, Anda dapat menemukan cabang elemen, atribut, dan cabang teks. Atribut (atribut) adalah jenis cabang khusus dan bukan cabang anak perusahaan. Penggunaan manajemen atribut metode Khususdisediakan oleh objek XML DOM.

Selain menerapkan antarmuka Consortium Web Wide Wide Wide yang direkomendasikan, Microsoft XML DOM berisi metode yang mendukung XSL, pola XSL, namespace, dan tipe data. Misalnya, metode SelectNodes memungkinkan Anda untuk menggunakan Sintaks Templat XSL (Sintaks Pola XSL) untuk mencari cabang pada konteks tertentu, dan metode transformnode mendukung penggunaan XSL untuk melakukan transformasi.

Tes Dokumen XML.

Sebagai contoh dokumen XML, ambil katalog CD-ROM musik, yang memiliki struktur berikut:

Empire Burlesque. Bob Dylan. AMERIKA SERIKAT. Kolumbia. 10.90 1985 Sembunyikan hatimu. Bonnie Tylor. UK. CBS Records. 9.90 1988 ... Lepaskan hati saya. Joe Cocker. AMERIKA SERIKAT. Emi 8.20 1987

Sekarang kami siap untuk mulai mempertimbangkan model objek XML DOM, keakraban yang akan dimulai dengan objek XMLDOMDocument.

Dokumen XML - Objek XmldomDocument

Bekerja dengan dokumen XML dimulai dengan unduhannya. Untuk melakukan ini, kami menggunakan metode muat yang hanya memiliki satu parameter yang menunjukkan URL dokumen yang diunduh. Saat mengunduh file dari disk lokal, hanya nama file lengkap yang ditentukan (file: /// protokol dalam hal ini dapat dihilangkan). Jika dokumen XML disimpan sebagai string, metode LoadXML harus digunakan untuk mengunduh dokumen seperti itu.

Untuk mengontrol metode mengunduh dokumen (sinkron atau asinkron), properti Async digunakan. Secara default, properti ini benar, menunjukkan bahwa dokumen tersebut dimuat secara asinkron dan kontrol dikembalikan ke aplikasi bahkan sampai dokumen dimuat sepenuhnya. Jika tidak, dokumen dimuat secara sinkron, dan kemudian Anda harus memeriksa nilai properti readystate untuk mengetahui, dokumen dimuat atau tidak. Anda juga dapat membuat handler event onreadystatechange yang akan menerima kontrol saat mengubah nilai properti ReadyState.

Di bawah ini ditampilkan cara mengunduh dokumen XML menggunakan metode beban:

Pengguna ... msxml_tlb ... prosedur tform1.button1click (pengirim: mengalihkan); Var xmldoc: ixmldomdocument; Mulai xmldoc: \u003d codomdocument.create; Xmldoc.async: \u003d false; Xmldoc.load ('c: \\ data \\ data.xml'); // // di sini adalah kode yang memanipulasi // xml dokumen dan cabangnya // xmldoc: \u003d nihil; akhir;

Setelah dokumen dimuat, kami dapat merujuk ke propertinya. Dengan demikian, properti Nodename akan berisi nilai #document, properti nodetypestring adalah nilai dokumen, properti URL adalah file: /// c: /data/data.xml nilai.

Pemrosesan adalah kesalahan

Yang menarik adalah sifat-sifat yang terkait dengan pemrosesan dokumen saat dimuat. Dengan demikian, properti ParseError mengembalikan objek XMLDOMPARSEEmror yang berisi informasi kesalahan yang terjadi selama proses pemrosesan.

Untuk menulis handler kesalahan, Anda dapat menambahkan kode berikut:

Var xmlerror: ixmldomparseerror; ... xmldoc.load ('c: \\ data \\ data.xml'); Xmlerror: \u003d xmldoc.parseerror; Jika Xmlerror.Errorcode.<> 0 lalu // // Di sini kami memproses kesalahan // lain memo1.lines.add (xmldoc.xml); ... Xmldoc: \u003d nihil;

Untuk mengetahui informasi mana yang dikembalikan jika terjadi kesalahan, ubah item direktori berikut:

Empire Burlesque. Bob Dylan. AMERIKA SERIKAT. Kolumbia. 10.90 1985

melepaskan elemen penutupan Di baris kedua:</p><p> <CD> <TITLE>Empire Burlesque. <ARTIST>Bob Dylan.</ARTIST> <COUNTRY>AMERIKA SERIKAT.</COUNTRY> <COMPANY>Kolumbia.</COMPANY> <PRICE>10.90</PRICE> <YEAR>1985</YEAR> </CD> </p><p>Sekarang tulis kode yang mengembalikan properti dari objek xmldomparseerror:</p><p>Xmlerror: \u003d xmldoc.parseerror; Jika Xmlerror.Errorcode.<> 0 kemudian dengan xmlerror, memo1.lines mulai menambahkan ('file:' + url); Tambahkan ('kode:' + inttostr (ERRORCODE)); Tambahkan ('kesalahan:' + Alasan); Tambahkan ('teks:' + srctext); Tambahkan ('baris:' + inttostr (baris)); Tambahkan ('Posisi:' + inttostr (lineepos)); Akhir memo1.lines.add (xmldoc.xml); Akhir;</p><p>dan memenuhi aplikasi kami. Akibatnya, kami memperoleh informasi kesalahan berikut.</p> <p>Seperti yang dapat dilihat dari contoh di atas, informasi yang dikembalikan oleh objek xmldomparseerror sudah cukup untuk melokalisasi kesalahan dan memahami alasan terjadinya.</p> <p>Sekarang kembalikan elemen penutupan <TITLE> Dalam dokumen kami dan lanjutkan diskusi XML DOM.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Akses ke pohon dokumen</h2> <p>Untuk mengakses pohon dokumen, Anda dapat memperoleh elemen root dan kemudian pergi melalui anak perusahaannya, atau menemukan cabang tertentu. Dalam kasus pertama, kami mendapatkan elemen root melalui properti dokumen, yang mengembalikan objek tipe xmldomnode. Di bawah ini ditampilkan cara menggunakan properti dokumen untuk mendapatkan konten setiap elemen anak:</p><p>Var node: ixmldomnode; Root: ixmldomelement; I: Integer; ... root: \u003d xmldoc.documentelement; Untuk I: \u003d 0 ke root.Childnodes.length-1 do Begin node: \u003d root.childnodes.Item [i]; Memo1.lines.add (node.text); Akhir;</p><p>Untuk dokumen XML kami, kami mendapatkan teks berikut.</p> <p>Jika kami tertarik pada beberapa jenis cabang spesifik atau tingkat cabang di bawah anak perusahaan pertama, kita dapat menggunakan metode nodefromida atau metode getelementbytagname dari objek XMLDOMDocument.</p> <p>Metode nodefromida memerlukan spesifikasikan pengidentifikasi unik yang ditentukan dalam skema XML atau definisi tipe dokumen (DTD) dan mengembalikan cabang dengan pengidentifikasi ini.</p> <p>Metode GetelementByTagne membutuhkan indikasi string dengan elemen tertentu (tag) dan mengembalikan semua cabang dengan item ini. Di bawah ini ditampilkan cara menggunakan metode ini untuk menemukan semua pemain di direktori CD-ROM kami:</p><p>Node: ixmldomnodelist; Node: ixmldomnode; ... node: \u003d xmldoc.getElementsBytagname ('artis'); Untuk I: \u003d 0 ke node. Mulai-1 lakukan node mulai: \u003d node.Item [i]; Memo1.lines.add (node.text); Akhir;</p><p>Untuk dokumen XML kami, kami akan mendapatkan teks berikut.</p> <p>Perhatikan bahwa metode Xmldomnode SelectNodes memberikan cara yang lebih fleksibel untuk mengakses cabang dokumen. Tetapi tentang itu sedikit lebih rendah.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Cabang Dokumen - Objek Xmldomnode</h2> <p>Objek xmldomnode adalah cabang dokumen. Kami telah menemukan objek ini ketika elemen akar dari dokumen diperoleh:</p><p>Root: \u003d xmldoc.documentelement;</p><p>Untuk mendapatkan informasi tentang cabang dokumen XML, Anda dapat menggunakan properti objek Xmldomnode (Tabel 1).</p> <p>Untuk mengakses data yang disimpan di cabang, biasanya menggunakan properti nodeValue (tersedia untuk atribut, cabang teks, komentar, instruksi untuk pemrosesan dan bagian CDATA), atau properti teks yang mengembalikan konten teks cabang, atau properti nodetypedvalue. Namun yang terakhir, hanya dapat digunakan untuk cabang dengan elemen yang diketik.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h3> Bergerak di pohon dokumen</h3> <p>Objek Xmldomnode menyediakan berbagai cara untuk bergerak melalui pohon dokumen. Misalnya, untuk mengakses cabang induk, properti parentnode digunakan, akses ke cabang-cabang anak dilakukan melalui properti Childnodes (Xmldchild Type), Firstchild dan LastChild (Type Xmldomnode), dll. Properti OwnerDocument mengembalikan objek XmlDocument yang mengidentifikasi dokumen XML itu sendiri. Properti di atas membuatnya mudah untuk bergerak melalui pohon dokumen.</p> <p>Sekarang saya akan mengatasi semua cabang dokumen XML:</p><p>Root: \u003d xmldoc.documentelement; Untuk I: \u003d 0 ke root.Childnodes.length-1 do Begin node: \u003d root.childnodes.Item [i]; Jika node.haschildnodes kemudian getchilds (node, 0); Akhir;</p><p>Seperti disebutkan di atas, objek SelectNodes Xmldomnode memberikan cara yang lebih fleksibel untuk mengakses cabang dokumen. Selain itu, ada metode SelectSingLende yang hanya mengembalikan cabang dokumen pertama. Kedua metode ini memungkinkan Anda untuk menentukan templat XSL untuk mencari cabang.</p> <p>Pertimbangkan proses menggunakan metode SelectNodes untuk mengekstrak semua cabang yang memiliki cabang CD dan inflasi.</p><p>Root: \u003d xmldoc.documentelement; Node: \u003d root.selectnodes ('cd / harga');</p><p>Koleksi node akan ditempatkan semua Cabang CD Harga Switter. Pembahasan templat XSL akan kembali sedikit kemudian.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h3> Manipulasi oleh cabang anak</h3> <p>Untuk manipulasi anak perusahaan, kita dapat menggunakan metode objek Xmldomnode (Tabel 2).</p> <p>Untuk sepenuhnya menghapus catatan disk pertama, Anda perlu melakukan kode berikut:</p><p>Var xmldoc: ixmldomdocument; Root: ixmldomnode; Node: ixmldomnode; Xmldoc: \u003d codomdocument.create; Xmldoc.async: \u003d false; Xmldoc.load ('c: \\ data \\ data.xml'); // dapatkan root elemen root: \u003d xmldoc.documentelement; Node: \u003d root; // Hapus anak perusahaan pertama node.removeChild (node.firstchild);</p><p>Harap dicatat bahwa dalam contoh ini kami menghapus anak perusahaan pertama. Cara menghapus elemen pertama dari anak perusahaan pertama, ditunjukkan di bawah ini:</p><p>Var xmldoc: ixmldomdocument; Root: ixmldomnode; Node: ixmldomnode; Xmldoc: \u003d codomdocument.create; Xmldoc.async: \u003d false; Xmldoc.load ('c: \\ data \\ data.xml'); // dapatkan root elemen root: \u003d xmldoc.documentelement; // dan node anak perusahaan pertama: \u003d root.firstchild; // Hapus anak perusahaan pertama node.removeChild (node.firstchild);</p><p>Dalam contoh di atas, kami tidak menghapus cabang pertama. <CD>…</CD>, dan elemen pertama cabang - <TITLE>….

Sekarang tambahkan cabang baru. Di bawah ini adalah kode yang menunjukkan cara menambahkan catatan baru CD-ROM musik:

Var newnode: ixmldomnode; Anak: ixmldomnode; ... // Buat cabang baru - Newnode: \u003d xmldoc.createenode (1, 'cd', ''); // tambahkan elemen. Anak: \u003d xmldoc.createenode (1, 'judul', ''); // tambahkan elemen newnode.appendchild (anak); // dan atur nilainya anak.Text: \u003d 'Pink Floyd'; // tambahkan elemen. <ARTIST> Anak: \u003d xmldoc.createenode (1, 'artis', ''); // tambahkan elemen newnode.appendchild (anak); // dan menetapkan nilainya anak.Text: \u003d 'Bell Division'; // tambahkan elemen. <COUNTRY> Anak: \u003d xmldoc.createenode (1, 'negara', ''); // tambahkan elemen newnode.appendchild (anak); // dan atur nilainya anak.text: \u003d 'UK'; // tambahkan elemen. <COMPANY> Anak: \u003d xmldoc.createenode (1, 'perusahaan', ''); // tambahkan elemen newnode.appendchild (anak); // dan atur nilainya child.text: \u003d 'EMI Records Ltd.'; // tambahkan elemen. <PRICE>Anak: \u003d xmldoc.createenode (1, 'harga', ''); // tambahkan elemen newnode.appendchild (anak); // dan buat nilainya anak.text: \u003d '11 .99 "; // tambahkan elemen <YEAR> Anak: \u003d xmldoc.createenode (1, 'tahun', ''); // tambahkan elemen newnode.appendchild (anak); // dan menetapkan nilainya anak.text: \u003d '1994'; // dan tambahkan root.appendchild cabang (newnode); ...</p><p>Kode di atas menunjukkan urutan tindakan berikut untuk menambahkan cabang baru:</p> <ul><li>Membuat cabang baru menggunakan Createnode: <ul><li>membuat item menggunakan metode createnode;</li> <li>menambahkan elemen ke cabang dengan metode appendchild;</li> <li>menetapkan nilai elemen melalui properti teks;</li> <li>... ulangi untuk semua item.</li> </ul></li> <li>Menambahkan cabang baru ke dokumen oleh Appendchild.</li> </ul><p>Ingatlah bahwa metode Appendchild menambahkan cabang di ujung pohon. Untuk menambahkan cabang ke tempat spesifik pohon, Anda perlu menggunakan metode insertbefore.</p> <h2> Set cabang - objek xmldomnodelist</h2> <p>Objek Xmlnodelist berisi daftar cabang yang dapat dibangun menggunakan metode SelectNodes atau GetLementsBytagname, dan juga diperoleh dari properti Childnodes.</p> <p>Kami telah mempertimbangkan penggunaan objek ini dalam contoh yang diberikan pada bagian "bergerak di atas pohon dokumen". Di sini kami juga memberikan beberapa komentar teoritis.</p> <p>Jumlah cabang dalam daftar dapat diperoleh sebagai nilai panjang properti. Cabang-cabang memiliki indeks dari 0 hingga panjang-1, dan setiap cabang individu tersedia melalui elemen array item dengan indeks yang sesuai.</p> <p>Bergerak pada daftar cabang juga dapat dilakukan dengan menggunakan metode NextNode yang mengembalikan cabang berikutnya dalam daftar, atau nihil, jika cabang saat ini adalah yang terakhir. Untuk kembali ke bagian atas daftar, Anda harus memanggil metode reset.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Membuat dan Menyimpan Dokumen</h2> <p>Jadi, kami melihat bagaimana Anda dapat menambahkan cabang dan elemen ke dokumen XML yang ada. Sekarang buat dokumen XML "on the fly". Pertama-tama, kami akan mengingatkan Anda bahwa dokumen tersebut dapat dimuat tidak hanya dari URL, tetapi juga dari string yang biasa. Di bawah ini ditampilkan cara membuat elemen root, yang kemudian dapat digunakan untuk membangun elemen yang tersisa secara dinamis (yang telah kami pertimbangkan dalam bagian "Manipulasi Anak Perusahaan"):</p><p>Var xmldoc: ixmldomdocument; Root: ixmldomnode; Node: ixmldomnode; S: widestring; ... s: \u003d ' <CATALOG></CATALOG>'; Xmldoc: \u003d codomdocument.create; Xmldoc.async: \u003d false; Xmldoc.loadxml (s); Root: \u003d xmldoc.documentelement; Node: \u003d xmldoc.createenode (1, 'cd', ''); Root.appendchild (node); Memo1.lines.add (xmldoc.xml); ... Xmldoc: \u003d nihil;</p><p>Setelah membangun dokumen XML, simpan di file menggunakan metode Save. Sebagai contoh:</p> <p>Xmldoc.save ('c: \\ data \\ newcd.xml');</p> <p>Selain menyimpan dalam file, metode Save memungkinkan Anda untuk menyimpan dokumen XML di objek XMLDOMDocument baru. Dalam hal ini, dokumen ini diproses penuh dan, sebagai hasilnya, memeriksa struktur dan sintaksnya. Di bawah ini ditampilkan cara menyimpan dokumen di objek lain:</p><p>Prosedur tform1.button2click (pengirim: mengalihkan); Var xmldoc2: ixmldomdocument; Mulai xmldoc2: \u003d codomdocument.create; Xmldoc.save (Xmldoc2); Memo2.lines.add (xmldoc2.xml); ... Xmldoc2: \u003d nihil; akhir;</p><p>Sebagai kesimpulan, kami perhatikan bahwa metode Save juga memungkinkan Anda untuk menyimpan dokumen XML ke objek COM lain yang mendukung antarmuka ISTREAM, ISETSTREAM atau IPESSCREAMINIT.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Menggunakan templat XSL</h2> <p>Membahas metode Xmldomnode ObjectNodes Pilihan, kami menyebutkan bahwa ia memberikan cara yang lebih fleksibel untuk mengakses cabang dokumen. Fleksibilitas terletak pada kenyataan bahwa sebagai kriteria untuk memilih cabang, Anda dapat menentukan templat XSL. Template tersebut menyediakan mekanisme yang kuat untuk mencari informasi dalam dokumen XML. Misalnya, untuk mendapatkan daftar semua nama CD-ROM musik di direktori kami, Anda dapat mengikuti kueri berikut:</p><p>Untuk mengetahui apakah disk yang dilakukan oleh pemain mana yang dirilis di Amerika Serikat, permintaan ini terbentuk sebagai berikut:</p><p>Node: \u003d root.selectnodes ('cd / artis');</p><p>Di bawah ini ditampilkan cara menemukan disk pertama dalam direktori:</p><p>Node: \u003d root.selectnodes ('cd / judul');</p><p>dan terakhir:</p><p>Node: \u003d root.selectnodes ('cd / judul');</p><p>Untuk menemukan cakram Bob Dilan, Anda dapat melakukan kueri berikut:</p><p>Node: \u003d root.selectnodes ('cd [$ apapun $ arst \u003d "bob dylan"] / judul');</p><p>dan untuk mendapatkan daftar disk yang dirilis setelah 1985, kami melakukan permintaan berikut:</p><p>Node: \u003d root.selectnodes ('cd / judul');</p><p>Diskusi yang lebih rinci tentang Sintaks XSL memerlukan publikasi terpisah. Untuk pembaca intrik dan dorong penelitian lebih lanjut, saya hanya akan memberikan satu contoh kecil dari kemungkinan penggunaan XSL. Misalkan kita perlu mengkonversi direktori kita ke tabel HTML yang biasa. Mengambil keuntungan dari cara-cara tradisional, kita harus memilah semua cabang pohon dan untuk setiap item yang diperoleh untuk membentuk tag yang sesuai <TD>…</TD>.</p> <p>Menggunakan XSL, kami cukup membuat template (atau tabel gaya), di mana kami menunjukkan apa dan bagaimana mengkonversi. Kemudian kami memaksakan template ini ke katalog kami - dan siap: sebelum kami teks templat XSL, yang mengubah direktori di tabel (daftar 2).</p> <p>Kode untuk overlay templat XSL ke katalog kami terlihat seperti ini:</p><p>Prosedur tform1.button2click (pengirim: mengalihkan); Var xsldoc: ixmldomdocument; Mulai xsldoc: \u003d codomdocument.create; Xsldoc.load ('c: \\ data \\ data.xsl'); Memo2.text: \u003d xmldoc.transformnode (xsldoc); XSLDOC: \u003d nihil; akhir;</p><p>Dengan menyelesaikan diskusi kami tentang XSL, harus dikatakan bahwa saat ini bahasa ini secara aktif digunakan untuk transformasi antara dokumen XML yang berbeda, serta untuk memformat dokumen.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Kesimpulan</h2> <p>Untuk alasan yang cukup dimengerti, dalam satu artikel tidak mungkin untuk mempertimbangkan semua objek Microsoft XML DOM dan membawa contoh penggunaannya. Di sini kami hanya menyentuh masalah utama menggunakan XML DOM dalam aplikasi. Di tab. 3 menunjukkan semua objek yang diterapkan di Microsoft XML DOM.</p> <p>ComputerpressPress 12 "2000</p> <p>Memecahkan tugas tugas di Delphi <br> Delphi adalah bahasa pemrograman kedua yang dengannya siswa paling sering berkenalan dalam proses pembelajaran. Ini adalah awal dari pembelajaran pemrograman berorientasi objek. Saya, sebagai seorang siswa, dibuat untuk diri saya sendiri kesimpulan bahwa tidak ada metode yang lebih mudah untuk menguasai bahasa daripada menulis kalkulator di atasnya. Bahkan jika Anda menyadari fungsi dasar penambahan dua angka, ini sudah pada banyak cahaya.</p> <p>Codegaear, Delphi 7, Lazarus adalah kompiler yang berbeda, program yang akan ditransfer ke kode mesin yang ditulis oleh Anda, mengubahnya menjadi Zoliki dan satu. Ini semua adalah program untuk membuat program, dan bukan bahasa pemrograman terpisah. Kompiler ini menggunakan objek bahasa pemrograman pascal yang mendasari bahasa Delphi, yang mirip dengan sintaks yang mirip dengan Pascal yang biasa, tetapi fungsional berbeda secara signifikan. <br></p> <h2>Apa itu Sintaks Bahasa Pemrograman?</h2> <p>Ini adalah format untuk menulis berbagai operator. Misalnya, siklus "untuk" pada Pascal memiliki format berikut: "Untuk n: \u003d 1 hingga k lakukan", dll.</p><p>Dalam bahasa pemrograman C ++, siklus yang sama ditulis agak berbeda: untuk (n \u003d 1; n kami menulis kalkulator</p><p>Ini akan memberi Anda memahami bagaimana objek dengan kode program berinteraksi, apa itu "variabel", bagaimana fungsi matematika berfungsi. Semua pemrograman dalam hal apa pun akan menjadi perhitungan. Gim ini juga merupakan program yang terus-menerus mempertimbangkan sesuatu, bekerja dengan angka dan fungsi numerik. Pemrograman tidak dapat dipisahkan dari matematika.</p> <p>Kami gunakan untuk menulis lingkungan pengembangan Lazarus. Fungsionalitasnya tidak sebesar, katakanlah, bocah kode, tetapi akses gratis dan dirancang untuk dipelajari.</p><p>Membuka lingkungan pengembangan, kita melihat bentuk dan panel elemen. Ini formulir.</p> <p><img src='https://i2.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-24.jpg' width="100%" loading=lazy loading=lazy></p><p>Ini adalah panel elemen.</p><p>Hal pertama yang akan kami lakukan adalah menambahkan tiga item yang Anda butuhkan untuk mengimplementasikan fungsi penambahan dua angka. Kita perlu: "tedit" dalam jumlah tiga potong dan "tbutton". Pada gambar di bawah ini, mereka ditampilkan di panel panah. Klik pada mereka sekali, dan kemudian bentuknya, dan mereka muncul di atasnya.</p><p>Ini adalah bidang teks untuk input dan tombol reguler. Anda menemui elemen-elemen ini menggunakan hampir semua program Windows. Lihatlah.</p><p><img src='https://i1.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-27.jpg' width="100%" loading=lazy loading=lazy><br></p> <p>Sekarang bersihkan prasasti ini. Klik tab Lihat. Dan klik pada "Inspektur Objek. Jendela ini akan muncul.</p><p><img src='https://i0.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-28.jpg' width="100%" loading=lazy loading=lazy></p><p>Klik sekali pada elemen kami "tombol" pada formulir dan ubah nilai "Keterangan" di jendela Inspektur ke yang lain. Misalnya, pada kata "OK". Klik Enter. Kami melihat pada formulir, karena elemen telah mengubah nama.</p><p>Lakukan saja dengan Edit, jangan ganti nama, tetapi kami akan membuatnya tanpa konten. Kami menyoroti mereka pada gilirannya dan membersihkan nilai teks di inspektur. Jangan lupa untuk menekan Enter.</p><p><img src='https://i2.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-29.jpg' width="100%" loading=lazy loading=lazy></p><p>Menurut hasilnya, formulir kami terlihat seperti ini.</p><p><img src='https://i2.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-30.jpg' width="100%" loading=lazy loading=lazy><br></p> <p>Sekarang kalkulator kami diperoleh, Anda perlu mendaftarkan kode perangkat lunak yang diperlukan untuk prosedur tombol kami. Klik pada elemen tombol dua kali dan buka editor sumber.</p><p><img src='https://i2.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-31.jpg' width="100%" loading=lazy loading=lazy></p><p>Lihat? Prosedur Tombol1Klik. Ini adalah prosedur yang bertanggung jawab atas apa yang terjadi ketika kami mengklik tombol satu kali. Dan berikut ini harus terjadi: Program ini diperlukan dalam edit ketiga untuk membawa kami jumlah angka yang diperkenalkan di dua bidang pertama. Kami menulis kode.</p><p><img src='https://i1.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-32.jpg' width="100%" loading=lazy loading=lazy></p><p>5 baris kode sederhana yang perlu kita tulis. Komentar dan penjelasan terlihat pada gambar di atas. Setelah itu, klik tombol ini.</p> <p>Kompilasi proyek kami akan dikompilasi. Ini akan dirakit dalam program. Kami memasukkan angka-angka di dua bidang pertama, klik tombol dan dapatkan nilai jumlahnya.</p><p><img src='https://i2.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-34-2.jpg' width="100%" loading=lazy loading=lazy></p> <h2>Kesimpulan</h2> <p>Anda dapat mengklik tombol "File", lalu "Simpan semuanya", pilih folder untuk menyimpan dan Anda akan memiliki program lengkap, yang mulai dari desktop. Sekarang cobalah untuk mencari tahu sendiri bahwa Anda perlu menulis ulang dalam kode ini sehingga program akan dibagi dengan dua angka, dan tidak dilipat. Tip: Anda perlu mengubah tipe data. Video di bawah ini menunjukkan contoh yang sama, tetapi di Delphi 7, bukan Lazarus.</p><p><span class="6qR5tjJKK3g"></span></p> <p>Banyak programmer Delphi, pengaturan penghematan dikaitkan dengan menggunakan <i>INI.</i> File dalam program mereka. Penggunaan metode ini, dalam proyek yang kurang serius, perlu untuk menghindari, karena membatasi fleksibilitas, yang mencegah perluasan program lebih lanjut. Perlu mengatakan bahwa pendekatan seperti itu cukup populer, karena kemudahan penggunaannya dan keberadaan dana bawaan pada lingkungan pembangunan. <br><br> Namun, opsi ideal untuk menyimpan pengaturan program disusun <i>Xml.</i> File. Keuntungan mereka adalah bahwa jumlah parameter mungkin tidak diperbaiki. Untuk lebih memahami ini, pertimbangkan contoh tertentu.</p><p>Dalam program USEVER, ketika Anda mengklik Recording, menu konteks muncul, yang menampilkan daftar poin. Barang-barang ini adalah perintah yang pada gilirannya diunduh dari file pengaturan. Dalam hal pengaturan disimpan di <i>INI.</i> File, program ini dapat menyimpan dan memuat sejumlah perintah tertentu, misalnya 10 atau 50. Segera setelah Anda membutuhkan yang lebih penting, Anda perlu menulis ulang kode dan, sesuai, kompilasi ulang.</p><p><img src='https://i1.wp.com/zoo-mania.ru/wp-content/uploads/2011/08/settings.ini_.jpg' height="145" width="247" loading=lazy loading=lazy><br> Menerapkan pendekatan menggunakan <i>Xml.</i> File, kami akan memiliki kemampuan untuk mengunduh semua parameter bagian secara dinamis. Untuk semua ini, file konfigurasi akan menjadi lebih elegan, tanpa penomoran parameter yang berlebihan. Namun, alat standar untuk bekerja dengan <i>Xml.</i> Delphi memiliki banyak kelemahan, jadi saya sarankan menggunakan pustaka standar <b>MSXML.</b>. Biasanya ini adalah bagian default dari sistem keluarga Windows.</p><p><img src='https://i2.wp.com/zoo-mania.ru/wp-content/uploads/2011/08/settings.xml_.jpg' align="center" width="100%" loading=lazy loading=lazy><br> Untuk menghubungkan <b>MSXML.</b>Kita perlu membentuk file antarmuka dengan daftar semua fungsi dengan mengimpornya dari server COM. Cara mengimpor antarmuka ditulis tidak cukup artikel terperinci, saya sarankan Anda mengunduh file <b>Msxml2_tlb.pas.</b> Sudah siap digunakan. Setelah file diunduh, letakkan di sebelah proyek Anda, atau lempar ke folder Delphi Lib Lib. Dengan demikian, semua program yang dibuat akan dapat menggunakan modul. <b>MSXML.</b>, Itu cukup untuk menambahkan msxml2_tlb ke penggunaan.</p><p>Untuk kejelasan, pertimbangkan contoh aplikasi berikut ini:</p><p>Prosedur loaddata; Var xmldoc: domdocument; Root: ixmldomelement; Mulai xmldoc: \u003d codomdocument.create; Xmldoc.load ("setins.xml"); Root: \u003d xmldoc.documentelement; Showmessage ("ukuran / lebar"). Teks); Root: \u003d nihil; Xmldoc: \u003d nihil; akhir;</p><p>Pertama, instance dari kelas domdocument dibuat, setelah itu isi file pengaturan.xml dimuat ke dalam memori. Sesuai dengan standar apa pun <i>Xml.</i> File harus berisi tag root (dalam hal ini <i>cONFIG.</i>), maka kita perlu mendapatkannya menggunakan fungsi <i>Dokumentasi.</i>. Kemudian isi konten antar tag <width></width> yang pada gilirannya ada di antara tag <size></size> . Dengan demikian, dari file pengaturan.xml, metode kami akan menyebarkan teks di MessageBox <i>"100px"</i>.</p><p> <?xml version="1.0" encoding="utf-8"?> <config> <size> <height>500px.</height> <width>100px.</width> </size> </config> </p><p>Di sini metode SelectSinglende diterapkan, yang mengambil string sebagai parameter.</p> <p>Selamat datang! Blog ini dikhususkan untuk internet dan komputer, dan, lebih tepatnya, mereka didedikasikan untuk mereka.</p> <p>Mungkin itu segera terlihat bahwa bertahun-tahun belum muncul di situs selama bertahun-tahun. Ya, ini adalah nasib paling banyak blog. Setelah proyek ini melakukan ambisius, dan penulis, seperti pada banyak orang lain yang menulis pada saat itu, adalah rencana skala besar untuk menjadi salah satu blogger Rusia terbaik. Nah, jika Anda melihat sekarang, kemudian dari blog yang dibuat secara bersamaan dengan saya, sebagian besar sudah larut dalam keabadian. Dan saya benar-benar menjadi blog waktu yang hilang. Jadi ya, tidak lagi diperbarui. Meskipun saya pernah menang di situs ini dalam kompetisi blog 2011.</p> <p>Aku bahkan punya ide untuk menghapus semua ini, tapi kemudian aku merevisi materi lama, dan menyadari bahwa mereka masih bisa berguna bagi pembaca. Ya, beberapa artikel sudah ketinggalan zaman (jika saya memiliki kekuatan yang cukup, mereka akan menerima tanda yang sesuai), tetapi situs, misalnya, dapat bermanfaat bagi pemula - di sini Anda dapat membaca tentang konsep dasar Internet, belajar untuk menyesuaikan Internet, Windows atau bahkan memutuskan untuk pergi ke Linux. Jadi lihat judulnya dan pilih yang cocok untuk Anda.</p> <p>Dan, bagaimanapun, saya harap ini lebih dari sekadar blog, tetapi panduan internet nyata. Situs ini dapat ditemukan dalam mode direktori, di mana semua artikel yang tersedia disusun berdasarkan kategori. Dan siapa yang tahu mungkin, artikel berkualitas baru akan mulai muncul di sini.</p> <p><i>Sander.</i></p> <p>Picodi.ru adalah portal diskon dari kupon internasional, seorang pakar Polandia dalam menabung dan membeli murah. Polandia dianggap sebagai salah satu negara paling ekonomis di dunia, oleh karena itu tidak mengherankan bahwa jenis proyek ini telah berkembang dari Startup Polandia Kodyrabatowe.pl. Apa yang bisa bermanfaat bagi portal ini ke pengguna internet biasa di Rusia?</p> <p>Telepon Android modern lebih dari sekadar ponsel. Anda terbiasa dengan set program yang diinstal, dengan riwayat panggilan dan pesan teks, koleksi foto dan banyak. Tetapi waktu berjalan, dan perangkat yang sepenuhnya diatur mulai memperlambat, bug, atau hanya kehilangan tampilan yang rapi karena chipping pada tubuh atau goresan di layar. Ada pertanyaan untuk memilih telepon baru dan mengubah ponsel Android. Dan jika pertanyaan pilihan, kita sekarang akan melewati pesta sekarang, lalu "bergerak" ke telepon baru tetap menjadi masalah serius - saya benar-benar tidak ingin memulai semua data dari awal. Di sini kita akan membicarakan ini hari ini.</p> <p>Sebagian besar pembaca blog ini, kemungkinan besar, tidak pernah menghadapi versi kontrol versi dan tidak akan muncul dalam waktu dekat. Dan maaf. Penemuan yang sangat user-friendly ini banyak digunakan oleh programmer, tetapi, menurut saya, itu bisa sangat berguna dan bagi mereka yang aktif bekerja dengan teks. Tetapi, mungkin, tidak ada sistem kontrol versi sekarang, yang akan mudah untuk mulai menggunakan untuk "kantor" (Microsoft Office) pekerjaan. Namun demikian, saya berpikir bahwa materi yang ditetapkan dalam artikel mungkin menarik bagi semua pembaca.</p> <p>Jika Anda berpikir tentang bagaimana film menonton TV Anda melalui jaringan dan mengakses Internet, artikel ini untuk Anda. Tidak, saya tahu bahwa beberapa TV memiliki fungsionalitas Smart TV, tetapi saya belum pernah melihatnya bekerja dengan baik. Rupanya, oleh karena itu, Google baru-baru ini menunjukkan perangkat yang benar-benar menakjubkan, segera berakhir dengan sensasi. Kita berbicara tentang Chromecast Streamer Media (Chrombas), versi yang lebih sempurna dan terjangkau dari pemain yang disukai Nexus Q.</p> <p>Dongle Chrombas, dimensi yang tidak melebihi 2 inci, terhubung ke port HDMI TV dan memungkinkan Anda menikmati menonton konten web streaming. Untuk mengontrol streamer, Anda dapat menggunakan perangkat apa pun (tablet, pc, smartphone) berdasarkan platform operasi iOS, Windows, Android atau Mac OS.</p> <p>Artikel ini dikhususkan untuk perangkat memori sistem Android, masalah yang mungkin timbul karena kekurangan dan bagaimana menyelesaikannya. Saya sendiri tidak memiliki waktu lama yang lalu bahwa ponsel Android saya mulai menerbitkan pesan secara teratur tentang kekurangan memori ketika mencoba membuat aplikasi tertentu. Apa yang sangat aneh bagi saya meskipun fakta bahwa pada deskripsi di pasar seharusnya sekitar 16GB, dan saya juga meningkatkan volume ini menggunakan kartu memori tambahan. Namun, masalahnya adalah, dan saya harus benar-benar bermain-main sebelum saya menemukan solusi yang tepat yang tidak memerlukan penerimaan akses root atau pemulihan penuh telepon ke negara pabrik.</p> <p>Baru-baru ini, banyak perhatian dibayarkan untuk membangun sistem e-bisnis, atau karena mereka juga disebut - B2B (bisnis ke bisnis). Mengingat rekomendasi tentang pembangunan sistem streaming pertukaran teknologi Internet Mengkoordinasi Tubuh - Konsorsium WWW: Penekanan dibuat terhadap teknologi XML dan membangun sistem pertukaran dokumen XML.</p> <p>Keuntungan menggunakan XML dalam e-Business adalah efisiensi tinggi dari sistem B2B dengan biaya rendah untuk penciptaannya karena representasi yang jelas dan visual dari informasi terstruktur, kemampuan untuk menggunakan protokol jaringan modern dan menciptakan sistem bisnis real-time.</p> <p>Independensi penyajian informasi dalam bentuk dokumen XML memungkinkan berbeda, berpartisipasi dalam bisnis elektronik, untuk menghasilkan independen satu sama lain oleh.</p> <p>Di semua sistem, pertukaran biasanya dibangun oleh skema yang sama menggunakan permintaan HTTP. Protokol SSL diterapkan sebagai protokol SSL (tetapi ini adalah topik yang terpisah).</p> <p>Salah satu opsi yang mungkin untuk memproses pesan XML adalah untuk membangun komponen BIN / CGI (ISAPI) -News atau COM (server) membentuk atau memproses dokumen XML.</p> <p>Di satu sisi, aplikasi bertindak sebagai klien, yang dalam mode posting mengeluarkan permintaan HTTP, di sisi lain, adalah server web di sisi mana pemrosesan kueri dan jawaban diproses. Pertukaran informasi menggunakan dokumen XML.</p> <p>Salah satu opsi implementasi yang paling efektif adalah penggunaan parser XML yang ada yang mendukung model DOM. Parser semacam itu adalah pasokan distributif Win`98 atau bagian integral dari IE 4.7 ke atas (untuk Win`95) dan mewakili server COM yang terletak di pustaka MSXML.dll.</p> <p>Model Objek Komponen (COM) dienkapsulasi data dan metode ke dalam satu esensi dan cara untuk mengaksesnya melalui sistem antarmuka. Delphi hanya dapat diakses untuk mengakses kelas objek COM (beberapa kelas dapat dimasukkan dalam satu server COM). Akses ke objek dilakukan dengan menginisialisasi contoh kelas melalui sistem antarmuka. Deskripsi antarmuka dilakukan oleh bahasa definisi antarmuka (IDL), yang mungkin untuk melaksanakan alat media secara otomatis.</p> <p>Delphi berarti impor dari server COM <i>msxml.dll.</i>File deskripsi antarmuka IDL dibangun dan file deskripsi biner dari tipe perpustakaan adalah TLB. Operasi ini dilakukan melalui menu sistem: <b>Proyek | Jenis pustaka impor:</b>(gambar 1). Kotak dialog berikut muncul (Gambar 2), di mana Anda ingin memilih objek COM (dalam kasus kami, objek terdaftar sebagai "Microsoft.xmldom (versi 2.0)") dan membuat file TLB (tombol <b>Buat unit.</b>). Menggunakan file TLB, lingkungan menghasilkan "paskalevsky" Deskripsi file server com - msxml_tlb.pas</p> <p>File MSXML_TLB.PAS menjelaskan semua antarmuka, konstanta dan server COM.</p> <p>Untuk akses ke objek elemen COM, perlu dalam arahan <b>Menggunakan.</b>tambahkan nama file deskripsi perpustakaan (msxml_tlb.pas). Di bawah ini adalah program paling sederhana yang menggunakan DOM Standard MSXML.dll Analyzer, yang mengunduh dokumen XML dan menampilkannya di Elemen Kotak Teks Memo1.</p> <b>menggunakan.</b> Windows, Pesan, Sysutil, Kelas, Grafik, Kontrol, Formulir, Dialog, Oleserver, MSXML_TLB, STDCTRL; <b>tipe</b> Tform1 \u003d. <b>kelas</b>(TForm) tombol1: tbutton; Memo1: tmemo; <b>prosedur.</b> Tombol1Klik (pengirim: mengalihkan); <b> akhir;</b> <b>var.</b> Form1: Tform1; <b>penerapan</b> ($ R *.dfm) <b>Prosedur.</b>Tform1.button1click (pengirim: mengalihkan); <span> // Deklarasi domdocument objek Soklass;</span> <b>var.</b>codoc: codomdocument; <span> // kelas, konsisten dengan antarmuka IDOMDocument;</span> <b>var.</b>DOC: ixmldocument; <b>mulai.</b> <span> // membuat instance objek domdocument;</span> Doc: \u003d codoc.create; <span> // Panggil metode mode instance dari objek domdocument;</span> Doc.load ("data.xml"); <span> // akses ke instance properti XML dari objek domdocument;</span> Memo1.text: \u003d doc.xml; <b>akhir;</b> <b>akhir.</b> <h2>Konsep DOM - Model dokumen objek</h2> <p>Setiap dokumen XML diwakili sebagai seperangkat pluralitas objek (kelas), dengan mana akses ke elemen individu (bidang objek) dimungkinkan. DOM - Antarmuka menjelaskan akses ke domapring sederhana atau objek dan bagian karakter atau elemen XML terpisah dari dokumen: DomFragmentElement, Domnode, Domelement.</p> <p>Berikut ini adalah sifat yang paling penting dan metode xmldomdocument, xmldomnode, xmldomnodelist. Perlu dicatat bahwa model MSXML.DLL XML Analyzer, MSXML.DLL XML Analyzer, disajikan di bawah ini, digunakan oleh MSXML.DLL XML Analyzer daripada konsorsium DOM yang disetujui oleh model W3C.</p> <p>Deskripsi yang lebih lengkap dari objek DOM antarmuka dapat ditemukan pada</p> <table cellspacing="0" cellpadding="4" width="500" border="1"><tbody><tr><td valign="top" colspan="2"> Obyek XmldomDocument.</td> </tr><tr><td valign="top" colspan="2">Mewakili tingkat atas hierarki objek dan berisi metode untuk bekerja dengan dokumen: unduhannya, analisis, membuat elemen, atribut, komentar di dalamnya, dll. .</td> </tr><tr><td valign="top" colspan="2"><b>Properti</b> </td> </tr><tr><td valign="top" width="39%"><b>Async.</b> </td> <td valign="top" width="61%">Properti Mengidentifikasi Mode Pemrosesan Saat Ini</td> </tr><tr><td valign="top" width="39%" height="19"><b>Parseerror</b> </td> <td valign="top" width="61%" height="19">Mengembalikan referensi ke objek pemrosesan kesalahan xmldomparseerror</td> </tr><tr><td valign="top" width="39%"><b>Aktifkan - Nonaktifkan verifikasi dokumen.</b> </td> <td> </td> </tr><tr><td valign="top" width="39%"><b>uRL</b> </td> <td valign="top" width="61%">Mengembalikan URL dokumen</td> </tr><tr><td valign="top" width="39%"><b>dokumentasi.</b> </td> <td valign="top" width="61%">Berisi referensi ke elemen akar dokumen sebagai objek xmldomemement.</td> </tr><tr><td valign="top" colspan="2"><b>Metode.</b> </td> </tr><tr><td valign="top" width="39%"><b>lOAD (URL) <br>loadXML (xmlstring)</b> </td> <td valign="top" width="61%">Memuat dokumen XML</td> </tr><tr><td valign="top" width="39%"><b>simpan (objtarget)</b> </td> <td valign="top" width="61%">Menyimpan dokumen XML dalam file</td> </tr><tr><td valign="top" width="39%"><b>mENGGUGURKAN.</b> </td> <td valign="top" width="61%">Menginterupsi proses mengunduh dan memproses dokumen.</td> </tr><tr><td valign="top" width="39%"><b>createattribute (Nama)</b> </td> <td valign="top" width="61%">Membuat atribut baru dengan nama yang ditentukan untuk item saat ini.</td> </tr><tr><td valign="top" width="39%"><b>createnode (tipe, nama, namespaceuri)</b> </td> <td valign="top" width="61%">Membuat simpul dari jenis dan judul yang ditentukan</td> </tr><tr><td valign="top" width="39%"><b>creepeelement (tagname)</b> </td> <td valign="top" width="61%">Membuat elemen dokumen dengan nama yang ditentukan.</td> </tr><tr><td valign="top" width="39%"><b>createTextNode (data)</b> </td> <td valign="top" width="61%">Membuat teks di dalam dokumen</td> </tr><tr><td valign="top" width="39%"><b>getElementsBytagname (TagName)</b> </td> <td valign="top" width="61%">Mengembalikan tautan ke koleksi item dokumen dengan nama yang ditentukan</td> </tr><tr><td valign="top" width="39%"><b>nodefromid (IDString)</b> </td> <td valign="top" width="61%">Elemen pencarian dengan pengidentifikasi</td> </tr></tbody></table><br><table cellspacing="0" cellpadding="4" width="500" border="1"><tbody><tr><td valign="top" colspan="2"> <b>Obyek Xmldomnode.</b> </td> </tr><tr><td valign="top" colspan="2">Objek xmldomnode yang mengimplementasikan antarmuka DOM dasar <b>.</b>, Dirancang untuk memanipulasi dengan simpul terpisah dari pohon dokumen. Properti dan metodenya memungkinkan Anda untuk menerima dan mengubah informasi lengkap tentang node saat ini - jenisnya, nama, nama lengkap, isinya, daftar elemen anak, dll.</td> </tr><tr><td valign="top" colspan="2"><b>Properti</b> </td> </tr><tr><td valign="top" width=" "><b>nodename, Basename.</b> </td> <td valign="top" width="65%">Mengembalikan nama node saat ini.</td> </tr><tr><td valign="top" width="35%"><b>awalan.</b> </td> <td valign="top" width="65%">Mengembalikan awalan namespace.</td> </tr><tr><td valign="top" width="35%"><b>tipe data</b> </td> <td valign="top" width="65%">Mendefinisikan jenis konten dari node saat ini</td> </tr><tr><td valign="top" width="35%"><b>nodetype, Nodetypestring.</b> </td> <td valign="top" width="65%">Mengembalikan jenis node saat ini:</td> </tr><tr><td valign="top" width="35%"><b>atribut.</b> </td> <td valign="top" width="65%">Mengembalikan daftar atribut dari node saat ini sebagai koleksi xmldomnamendemap.</td> </tr><tr><td valign="top" width="35%"><b>tEKS.</b> </td> <td valign="top" width="65%">Mengembalikan isi dukungan saat ini dalam bentuk teks.</td> </tr><tr><td valign="top" width="35%"><b>xml.</b> </td> <td valign="top" width="65%">Mengembalikan representasi XML dari dukungan saat ini.</td> </tr><tr><td valign="top" width="35%"><b>nodeValue.</b> </td> <td valign="top" width="65%">Mengembalikan isi node saat ini.</td> </tr><tr><td valign="top" width="35%"><b>anak-anak.</b> </td> <td valign="top" width="65%">Mengembalikan daftar elemen anak sebagai xmldomnodelist.</td> </tr><tr><td valign="top" width="35%"><b>firstilt, LastChild.</b> </td> <td valign="top" width="65%">Mengembalikan elemen anak pertama / terakhir</td> </tr><tr><td valign="top" width="35%"><b>sebelumnya, Nextsibling.</b> </td> <td valign="top" width="65%">Mengembalikan elemen keperawatan sebelumnya / berikutnya.</td> </tr><tr><td valign="top" width="35%"><b>parentnode.</b> </td> <td valign="top" width="65%">Berisi referensi ke elemen induk.</td> </tr><tr><td valign="top" width="35%"><b>ownerDocument.</b> </td> <td valign="top" width="65%">Mengembalikan pointer ke dokumen di mana node saat ini berada.</td> </tr><tr><td valign="top" colspan="2"><b>Metode.</b> </td> </tr><tr><td valign="top" width="35%"><b>appendchild (Newchild)</b> </td> <td valign="top" width="65%">Menambahkan elemen anak baru ke node saat ini.</td> </tr><tr><td valign="top" width="35%"><b>insertbefore (newchild, rentang)</b> </td> <td valign="top" width="65%">Menyisipkan simpul anak, memilikinya di subtree saat ini "kiri" dari node yang ditentukan oleh parameter REFCHILD.</td> </tr><tr><td valign="top" width="35%"><b>clonenode (dalam)</b> </td> <td valign="top" width="65%">Buat salinan elemen saat ini.</td> </tr><tr><td valign="top" width="35%"><b>retatur ulang.</b><b>(Nama) <br> </b><b>getAttributenode.</b><b><span> (Nama) <br>setattribute (Nama, Nilai) <br>setattributenode (XmldoStribute)</span> </b> </td> <td valign="top" width="65%">Akses ke atribut (membuat, membaca, menulis). Nama - Nama atribut, nilai - nilainya. Mengembalikan nilai objek XmldoStribute.</td> </tr><tr><td valign="top" width="35%"><b>replacechild (newchild, oldchild) removeChild (oldchild)</b> </td> <td valign="top" width="65%">Mengganti objek Oldchild dari daftar anak perusahaan saat ini di Newchild. Melepaskan objek Oldchild</td> </tr><tr><td valign="top" width="35%"><b>selectNodes SelectSinglende (PatmingString)</b> </td> <td valign="top" width="65%">Mengembalikan objek xmldomnodelist yang dipilih oleh pola pencarian atau simpul pertama</td> </tr><tr><td valign="top" width="35%"><b>transformnode (styesheet) <br>transformnodetobject (stylesheet, outputObject)</b> </td> <td valign="top" width="65%">Menetapkan tabel gaya untuk mendukung node saat ini dan mengembalikan string - hasil pemrosesan. Referensi ke objek domdocument ditransmisikan sebagai parameter, di mana instruksi XSL berada.</td> </tr></tbody></table><br><h2>Menggunakan XML dalam bisnis.</h2> <p>Untuk gambar yang lebih jelas, penjelasan diperlukan, dan mengapa semua ini diperlukan dengan apa yang harus dipahami cara kerjanya:</p> <p>Saat membangun sistem ERP B2B atau perusahaan, ketika mengorganisir pertukaran informasi dokumen XML antara perusahaan atau cabang Prom-I, sistem informasi yang terbukti secara efektif digunakan berdasarkan server web yang tersedia pada protokol HTTP.</p> <p>Di satu sisi, aplikasi bertindak sebagai klien, yang dalam mode posting mengeluarkan permintaan HTTP, di sisi lain, server web ada di sisi mana permintaan diproses dan respons. Dokumen XML digunakan sebagai pertukaran.</p> <p>Misalnya, dalam sistem ERP korporasi sederhana dari program akuntansi (ACS Accounting), perlu untuk membentuk permintaan tertentu untuk faktur dan mentransfernya ke cabang yang memiliki gudang (ACS Warehouse). Seni adalah pengaturan yang sama dari masalah ketika membuat B2B sistem, ketika perusahaan meminta ketersediaan produk (membuat pesanan untuk pembelian) dari pemasok V.</p> <p>Enterprise A dan programnya bertindak sebagai klien. Gudang melayani pemasok di WHO memiliki kompleks Gudang BD di SQL Server. Pertukaran dilakukan melalui Pemasok Server Web Korporat V.</p> <p>Di bawah ini adalah algoritma pertukaran khas berikut:</p> <br>Gambar 3. <ol><li><b>Perusahaan A.</b>inisiat. <b>proses A.</b>(Pesanan produk), yang bertindak sebagai klien web.</li><li><b>Proses A.</b>menghasilkan dokumen XML (misalnya, faktur) dan mentransmisikannya sebagai permintaan post http ke server web Supplier V. Sebagai URI - pengidentifikasi aplikasi pemrosesan digunakan. URI mungkin sama dengan semua jenis dokumen atau individu untuk setiap jenis. Itu semua tergantung pada struktur server B2B (web).</li><li>Server Web menganalisis permintaan dan menghasilkan server <b>Proses B.</b>Dengan melewati dokumen XML sebagai parameter. <br>Proses di server web dimulai dan diproses sebagai asp halaman, CGI (ISAPI) - aplikasi atau Java Sevrlet (aplikasi server)</li><li><b>Proses B.</b>- Menghasilkan permintaan ke server database SQL.</li><li>Server SQL membuat operasi yang diperlukan dalam database, membentuk jawaban dan mengembalikannya. <b>Proses B.</b>.</li><li>Pada jawaban dari server SQL <b>Proses B.</b> Menghasilkan dokumen XML (jawaban) dan membiarkannya sebagai jawaban untuk permintaan HTTP ke aplikasi klien.</li><li>Selanjutnya, tergantung pada situasi di sisi klien, baik kueri HTTP baru terbentuk, atau sesi berakhir.</li> </ol><h2>Beberapa kata tentang organisasi manajemen dokumen.</h2> <p>Aturan umum pengembangan sistem pertukaran XML adalah:</p><ul><li><b>pertama</b>- Pengembangan sirkuit aliran dokumen elektronik dan strukturnya;</li><li><b>kedua</b>- Pengembangan tabel fungsi proses (Subprocesses) I.E. Apa fungsi dalam kaitannya dengan dokumen XML mana yang akan mengimplementasikan setiap proses.</li> </ul><p>Setiap dokumen XML, seperti dokumen HTML, harus terdiri dari header pesan (Tahanan Informasi) dan badan pesan (untuk permintaan informasi ini dibingkai dengan penandaan untuk menanggapi permintaan). Agar dokumen XML terbentuk dengan benar, perlu untuk dua komponennya dari "header" dan "permintaan" ke tag berbingkai, misalnya. Pandangan dokumen standar disajikan di bawah ini:</p> <p>Judul (Gambar 4), berbeda dengan HTML dokumen, harus berisi berbagai jenis informasi layanan, termasuk informasi tentang jenis dokumen yang ditransmisikan dan memproses proses. Pemrosesan dokumen informasional diterima, I.E. Bagian yang bermakna dibingkai oleh tag. Perlu dicatat bahwa struktur header harus disatukan untuk semua jenis dokumen.</p> <p>Untuk proses yang berjalan oleh server, algoritma pemrosesan lebih disukai (tetapi tidak perlu) untuk membangun sebagai berikut:</p> <img src='https://i1.wp.com/codenet.ru/np-includes/upload/2005/01/05/128666.jpg' height="500" width="408" loading=lazy loading=lazy><br>Gambar 6. <h2>Beberapa momen utama saat membuat bagian klien</h2> <p>Seperti yang sudah dijelaskan, ketika membuat dokumen XML menggunakan presentasinya dalam bentuk model DOM. Di bawah ini adalah contoh teks teks Delphi dari program Header Pesan XML.</p> <b>prosedur.</b>Tthread1.headercreate (pengirim: mengalihkan); <b>var.</b> <span> // Pengumuman kelas diperlukan untuk membuat</span> Codoc: codomdocument; <span> // xmldomDocument Obyek.</span> Doc: domdocument; R: IxmldomElement; Node: ixmldomelement; // domText txt: ixmldomtext; // Domattribute Atr: IxmldoTtribute; <b>mulai.</b> <span> // Menciptakan Dokumen DOM</span> Doc: \u003d codoc.create; Doc.set_async (false); <span> // dokumen inisiasi awal DOM</span> Doc.loadxml (" <Header/>"); <span> // Menciptakan Domelement (Tag<<b>Pengirim.</b>>) </span> Node: \u003d doc.createtement ("pengirim"); <span> // membuat node teks " <b>LLC "typhoon"</b>" </span> Txt: \u003d doc.creationetextnode (LLC "typhoon"); <span> // menugaskan simpul<<b>Pengirim.</b>\u003e Nilai</span> <span> // node teks " <b>LLC "typhoon"</b>" </span> Node.appendchild (txt); <span> // menambahkan item<<b>Pengirim.</b>\u003e Di akar dokumen sebagai anak perusahaan</span> R.AppendChild (node); <span> <<b>Dari.</b>> </span> Node: \u003d doc.createleelement ("dari"); Txt: \u003d doc.creationetextnode ("http://tayfun.ru/xml/default.asp"); Node.appendchild (txt); R.AppendChild (node); <span> // operasi serupa untuk tag<<b>Untuk.</b>> </span> Node: \u003d doc.createleelement ("to"); Txt: \u003d doc.creationetextnode ("http://irbis.ru"); Node.appendchild (txt); R.AppendChild (node); <span> // buat domelement ()</span> Node: \u003d doc.createleelement ("typedocument"); <span> // membuat node xmldomaturtribute</span> ATT: \u003d doc.createeattribute ("id", "order"); <span> // <TypeDocument Id="Order"/> </span> Node.appendchild (ATT); R.AppendChild (node); <b>akhir;</b> <p>Perlu dicatat bahwa pengumuman codoc: codomdocument dan doc: variabel domdocument, serta pembuatan metode Buat (Doc: \u003d codoc.create;) dilakukan sekali. Deklarasi variabel ada di bagian dari deskripsi variabel global, dan bukan dalam prosedur lokal, seperti yang ditunjukkan untuk visibilitas dalam contoh ini (I.E. Satu variabel global dari modul program tipe satu domdocument).</p> <p>Hasil dari program di atas akan menjadi header yang dibuat, sehubungan dengan contoh dari dokumen XML kami: yang digambarkan pada Gambar 5.</p> <img src='https://i0.wp.com/codenet.ru/np-includes/upload/2005/01/05/128662.gif' height="116" width="298" loading=lazy loading=lazy><br>Gambar 5. <p><img src='https://i0.wp.com/codenet.ru/np-includes/upload/2005/01/05/128664.gif' height="179" width="385" loading=lazy loading=lazy><br>Gambar 6.</p><p>Keuntungan utama dari mentransmisikan informasi dalam bentuk dokumen XML adalah dimungkinkan untuk membentuk pesan menggunakan struktur independen dari tabel di DBMS baik pada sisi yang diterima dan pada sisi yang ditransmisikan. Menggunakan contoh kami, biarkan diperlukan untuk mentransfer informasi tentang faktur perusahaan A, dari DBMS struktur yang ditunjukkan pada Gambar 6</p> <p>Untuk membentuk dokumen XML yang berisi faktur, permintaan SQL yang awalnya dibuat (kueri A) dengan informasi tentang faktur:</p> <b>PILIH</b> * Dari faktur_General. <b>Dimana</b> Invoicenum \u003d: num <b>PILIH</b>Barang, quulity, harga, hz_cod <b>Dari.</b>Barang <b>Dimana</b> Invoicenum \u003d: num <span> //: Num - parameter yang menentukan nomor faktur.</span> <p>Di bawah ini adalah bagian dari program yang membentuk badan dokumen XML:</p> <b>prosedur.</b> Tthread1.databodycreate (pengirim: tobject); <b>var.</b> <span> // Kelas dan XmldomDocument</span> // codoc: codomdocument; <span> // harus global, untuk seluruh modul.</span> // doc: domdocument; <span> // Pengumuman objek domelement</span> R: IxmldomElement; // domelement; Node, node2: ixmldomelement; Node3, node4: ixmldomelement; // domText txt: ixmldomtext; Str: string; <span> // Nomor faktur: <b>bilangan bulat;</b> - Variabel global - // masching 987654 // querya, queryb: <b>Tali;</b> - Variabel global, // Mempertahankan Permintaan untuk Meminta // Querya - Permintaan dan Informasi Umum tentang Invoice // QueryB - Query B Informasi tentang Barang yang Dijelaskan dalam // Teks (lihat Teks)</span> <b>mulai.</b> Query.close; <span> // lihat teks "Minta A"</span> Query.Text: \u003d Querya; <span> // Permintaan eksekusi</span> Query.execsql; Kueri.open; <span> // Dapatkan alamat elemen root</span> R: \u003d doc.get_documentelement; Node2: \u003d doc.createtement ("request"); <span> // buat domelement (tag)</span> Node: \u003d doc.createleelement ("faktur"); <span> // menambahkan item ke root</span> R.appendchild (node2); <span> // menambahkan item di</span> Node2. Appendchild (node); <span> // buat domelement (tag)</span> Node3: \u003d doc.createleelement ("depurture"); <span> // menambahkan item di</span> . Appendchild (node3); <span> // Banding ke bidang "depurture"</span> Str: \u003d query.fieldbyname ("depurture"). Asstrain; <span> // membuat node teks \u003d nilai bidang</span><span> // Nilai Penugasan Node</span> <span> // node teks, variabel str</span> Node.appendchild (txt); <span> // operasi serupa untuk tag <Destination>, <DataSend>, // <DataDepurture>, <Currency> // <DestinationCompany> (bidang db "penerima")</span> Node: \u003d doc.createleelement ("destination"); <span> // Nama bidang basis data mungkin tidak bertepatan dengan nama</span> Str: \u003d query.fieldbyname ("compignee") .asstring; <span> // taga, dalam keuntungan penggunaan ini</span> Txt: \u003d doc.creationetextnode (str); <span> // DOM Interface sebelum DBMS memiliki dukungan dari antarmuka XML, // Ketikkan Oracle 8i atau MS SQL 2000</span> Node.appendchild (txt); ... <span> // pembentukan spesifikasi permintaan barang</span> <span> // Menutup Permintaan Akses</span> Query.close; <span> // lihat teks "Permintaan", info. Tentang Produk</span> Query.Text: \u003d QueryB; <span> // menugaskan nilai parameter</span> Query.Params.Asinteger: \u003d Invoicenumber; <span> // Permintaan eksekusi</span> Query2.execsql; <span> // membuka akses ke data permintaan</span> Kueri.open; <span> // buat domelement (tag)</span> Node3: \u003d doc.createtement ("imems"); <span> // menambahkan item di</span> . Appendchild (node3); <span> // Siklus pada semua permintaan</span> <b>sementara</b> <b>tidak.</b> Eof.query. <b>melakukan.</b> Mulai node4: \u003d doc.createteelement ("imem"); <span> // menambahkan item di</span> Node3.appendchild (node4); <span> // generasi data untuk tag</span> Str: \u003d query.fieldbyname ("harga"). Asstrain; Txt: \u003d doc.creationetextnode (str); Node.appendchild (txt); ... <span>// operasi serupa untuk tag <HZ_Cod>, <Quality>, <GoodName> </span> <b>akhir;</b> <b>akhir;</b> <p>Sebagai hasil dari prosedur ini, teks berikut dari dokumen XML terbentuk:</p> <table width="100%"><tbody><tr><td align="middle"><br><img src='https://i2.wp.com/codenet.ru/np-includes/upload/2005/01/05/128661.gif' width="100%" loading=lazy loading=lazy></td> </tr></tbody></table><p>Metode terbuka digunakan untuk membentuk kueri. <b>Ixmlhttpreest.</b>:</p> <b>prosedur.</b> Buka (Const Bstrmethod, - Metode Type \u003d "Post" BStrurl, - Alamat Server Varasync URL, - Mode Komunikasi Asinkron / Sinkron \u003d Bstruer Benar, - Nama Pengguna untuk Otentikasi Bstrpass) - Kata Sandi <h2>Membuat Server Bagian dari Pemrosesan Dokumen</h2> <p>Seperti disebutkan sebelumnya, pemrosesan permintaan HTTP dapat dilakukan aplikasi CGI atau java servlets. Pilihan yang mungkin untuk menulis halaman ASP. Tetapi dalam hal ini, transmisi data hanya dimungkinkan oleh "Dapatkan" menggunakan string kueri. Meskipun, pemrosesan HTTP dari permintaan halaman ASP bekerja lebih efisien daripada aplikasi CGI. Namun, menurut saya, tanpa perbedaan, bagaimana cara memproses, dan yang lebih penting untuk menyelesaikan pertanyaan - cara membangun program pemrosesan, dan tidak dengan apa artinya.</p> <p>Jika kami meninjau opsi formasi dokumen XML dari bab sebelumnya, maka tugas aplikasi server adalah kebalikan dari dokumen XML. Di bawah ini adalah bagian dari program yang menganalisis dokumen XML:</p> <b>prosedur.</b>Tthread1.dataparser (pengirim: tobject); <b>var.</b> <span>// Pengumuman objek domelement</span> R, fnode: ixmldomelement; Str, nama file: string; Parm: String; <span>// pengumuman Soklass dan</span> Codocxml, codocxsl, codokresult: codomdocument; <span>// xmldomDocument Obyek.</span> Xmldoc, XSLDoc, ResultOc: domdocument; <span>// httpstr: string; - variabel global yang berisi string kueri HTTP</span> <b>Mulai.</b> Xmldoc: \u003d codocxml.create; Xmldoc.loadxml (httpstr); <span> // Dapatkan alamat elemen root</span> R: \u003d doc.get_documentelement; <span> // Memperoleh nilai elemen</span> Fnode: \u003d r.selectSingLenode ("// typedocument"); <span> // Dapatkan Nilai Atribut ID \u003d "Pesanan"</span> Nama file: \u003d fnode.getationstiped ("id"); <span> // dan membentuk file name order.xsl</span> Nama file: \u003d Nama file + ". XSL"; <span> // buat dokumen xsldoc</span> XSLDOC: \u003d codocxsl.create; Xsldoc.loadxml (nama file); <span> // membuat dokumen xmldoc</span> Resultasi: \u003d codokresult.create; <span> // Mengatur mode pemrosesan sinkron</span> ResultOc.Set_Async (Salah); <span> // Menginstal Pemeriksaan Debut</span> ResultDoc.validateOnparase: \u003d Benar; <span> // Collapse Xmldoc dengan Templat XSL</span> Xmldoc.transformnoc, resultoc (xsldoc, resultoc); <span> // variabel str diberi nilai teks</span> <span> // dokumen yang dihasilkan.</span> Str: \u003d resultoc.text; <span> // elemen pencarian</span> Fnode: \u003d r.SelectSingLenode ("// invoicenumber"); <span> // dan mendapatkan nilai elemen</span> Parm: \u003d fnode.text; <span> // Menutup Permintaan Akses</span> Query.close; Query.Text: \u003d str; <span> // menugaskan nilai parameter</span> Query.params.asstring: \u003d parm; <span> // Permintaan eksekusi</span> Query.execsql; <b>akhir;</b> <p>Seluruh rentang parsing adalah dengan menerapkan templat XSL, yang dibentuk untuk setiap jenis dokumen secara individual. Hasil analisis adalah string kueri SQL. Sebagai konsekuensinya, eksekusi string kueri SQL yang dihasilkan akan membuat perubahan yang diperlukan dalam DBMS.</p> <p>Keuntungan menggunakan parsing melalui templat juga pada kenyataannya bahwa ternyata beberapa fleksibilitas data, dan independensi lengkap dari operasi algoritma dari kode program diperoleh. Di bawah ini adalah teks templat XSL seperti yang digunakan untuk jenis dokumen pemrosesan.</p><p> <!-- файл Order.xsl --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <xsl:for-each select="//header"> Masukkan ke Nilai Tabreg (dari, ke, TypeDoc, Body) (" <xsl:value-of select="from" />", "<xsl:value-of select="to" />", "<xsl:value-of select="TypeDocument/@id" />") </xsl:for-each> <xsl:for-each select="//item"> Masukkan ke Nilai Barang (InvoiceneNumber, Name, Price, Quality) (": Num", " <xsl:value-of select="name" />", "<xsl:value-of select="price" />", "<xsl:value-of select="quality" /> ") </xsl:for-each> </xsl:template> </xsl:stylesheet> </p><p>Penelitian contoh di atas, perlu dicatat bahwa penggunaan pasangan tag dan formal, karena Setelah parsing, setidaknya satu node harus hadir dalam dokumen XML yang dihasilkan. Metode LapisanDok.Teks menetapkan nilai teks yang diperoleh selama analisis Laporan Dokumen XML. Dalam hal ini, nilainya adalah semua pasang tag dibingkai dan ,.e. Kami telah membentuk permintaan SQL.</p> <p>Fitur lain dari penulisan program harus dicatat kemungkinan menggunakan parameter SQL <b>: num.</b> Menggunakan parameter memungkinkan Anda untuk menyederhanakan teks templat XSL. Definisi Nilai elemen yang sesuai dari node dokumen XML ditentukan pada awalnya memilih nama node yang sesuai, misalnya:</p><h2>Secara singkat tentang XSL</h2> <p>Singkatan XSL berasal dari Bahasa Gaya Bahasa Stylesheet yang dapat diperluas (data XML). Karena jelas dari header Bahasa Stylesheet yang dapat diperluas (XSL) digunakan untuk memformat data XML. Menurut definisi W3C XSL terdiri dari dua bagian:</p> <ul><li>Transformasi XSLT - XSL. Bahasa yang digunakan untuk mengkonversi atau memformat (mengubah) dokumen XML. Dengan demikian, menggunakan XSLT, kita bisa mendapatkan bagian berbeda dari beberapa data dan formulir presentasi data.</li><li>Elemen pemformatan. Elemen-elemen ini mencakup semua elemen desain data tipografi, setelah diproses menggunakan XSL. Hanya digunakan untuk membentuk halaman HTML.</li> </ul><p>Menggunakan XSLT, kita dapat memilih data dari file XML yang Anda butuhkan, dan mengaturnya dalam formulir untuk memberikan pengguna. Misalnya, dalam kasus kami, kami mengubah data XML sebagai kueri SQL. Aplikasi XSL klasik biasanya memformat data sebagai halaman HTML atau representasi langka dalam bentuk file RTF.</p> <p>File XSL menjelaskan template (template), yang menurutnya konversi data XML akan dilakukan. Kembali ke templat XSL, elemen-elemen berikut dapat dialokasikan dalam XSLT (arahan):</p> <table cellspacing="0" cellpadding="4" width="500" border="1"><tbody><tr><td valign="top" width="31%"> <b>XSL Directive.</b> </td><th align="middle" width="69%"> <b>deskripsi</b> </th> </tr><tr><td>xSL: Apply-Templates</td> <td>Arahan, menunjukkan aplikasi atribut template yang sesuai pilih \u003d "Nama Template"</td> </tr><tr><td>xSL: Atribut.</td> <td>membuat pohon atribut dan menambahkannya ke elemen output, nama \u003d "nama atribut" parameter, namespace - URI pada namespace (namespace awalan)</td> </tr><tr><td>xSL: Panggilan-template</td> <td>menyebabkan templat, nama atribut \u003d "URI pada template"</td> </tr><tr><td>xSL: Pilih. <br>xSL: Kapan. <br>xSL: Kalau tidak.</td> <td>membuat pilihan dengan syarat XSL: Ketika Expr \u003d "menghitung ekspresi pada skrip", <br>bahasa \u003d "Nama-Bahasa" <br>test \u003d "ekspresi dihitung"</td> </tr><tr><td>xSL: Komentar</td> <td>menghasilkan komentar pada dokumen output</td> </tr><tr><td>xSL: Salin. <br>xSL: salinan</td> <td>menyalin simpul saat ini di sumber keluaran atau memasukkan fragmen dokumen ke node di mana bagian Select \u003d "Nama Sumber Node" atribut</td> </tr><tr><td>xSL: Element.</td> <td>menciptakan elemen output dengan nama, nama atribut \u003d "Nama elemen", namespace \u003d "Referensi URI ke namespace"</td> </tr><tr><td>xSL: untuk-masing-masing</td> <td>oleskan kembali template ke semua node daftar node, pilih Atribut Set daftar node.</td> </tr><tr><td>xSL: Jika.</td> <td>periksa kondisi diatur oleh atribut uji sebagai ekspresi</td> </tr><tr><td>xSL: Sertakan</td> <td>termasuk templat eksternal, atribut href \u003d "referensi URI"</td> </tr><tr><td>xSL: Output</td> <td>menentukan hasil keluaran, atribut metode mungkin memiliki "XML", "HTML" atau "Text"</td> </tr><tr><td>xSL: Param.</td> <td>menentukan nilai parameter, nama \u003d atribut "parameter nama", pilih \u003d "Nilai"</td> </tr><tr><td>xSL: instruksi pemrosesan</td> <td>membuat instruksi untuk pemrosesan, nama atribut \u003d "instruksi proses nama"</td> </tr><tr><td>xSL: Sortir.</td> <td>mengurutkan banyak node, atribut pilih \u003d "nama simpul", tipe data \u003d tipe data ("teks" | "angka" | qname), Pesanan \u003d Urutkan arah ("Naik" | "Turun")</td> </tr><tr><td>xSL: Stylesheet.</td> <td>menentukan dokumen templat XSL, adalah elemen root untuk XSLT</td> </tr><tr><td>xSL: Template.</td> <td>menentukan templat XSL, nama \u003d "atribut awalan URI ke nama template", match \u003d "Catatan ke node yang diterapkan template"</td> </tr><tr><td>xSL: Teks.</td> <td>menghasilkan teks ke stream output, Nonaktifkan-output-Escaping \u003d "Ya" atau "Tidak" atribut menunjukkan kemampuan untuk menghasilkan karakter ESC</td> </tr><tr><td>xSL: Nilai-of</td> <td>menyisipkan nilai node yang dipilih sebagai teks, atribut Select \u003d "Pointer ke Node" dari mana nilainya diambil</td> </tr><tr><td>xSL: Variabel</td> <td>menentukan nilai batas variabel, atribut nama \u003d "nama variabel", pilih \u003d "Hitung nilai variabel"</td> </tr><tr><td>xSL: dengan-param</td> <td>menerapkan parameter ke template, atribut nama \u003d "nama parameter", pilih \u003d ekspresi untuk menghitung konteks saat ini, nilai default "."</td> </tr></tbody></table><h2>Kesimpulan</h2> <p>Kesimpulannya, harus dicatat bahwa menggunakan parser XML standar <i>msxml.dll.</i>ini bukan satu-satunya cara parsing dan membuat dokumen XML. Misalnya, untuk membuat dokumen XML untuk menggunakan komponen secara efektif <b>TpAgeproduser.</b>dan <b>TtableProduser.</b>. Tetapi artikel ini hanya menekankan luas dan kemungkinan menerapkan model DOM dalam praktik.</p> <p>Penulis akan sangat berterima kasih atas umpan balik atas relevansi topik, keseluruhan konten, gaya presentasi, serta semua komentar lain yang akan membantu lebih meningkatkan kualitas menulis koleksi artikel dan rilis buku yang mencakup Subjek dari sisi praktis penggunaan dokumen XML dalam e-commerce. Untuk informasi lebih lanjut tentang sisi praktis penerapan dokumen elektronik, Anda dapat belajar dari www.edocs.al.ru di situs web penulis, juga direncanakan untuk menempatkan teks sumber dan contoh.</p> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy loading=lazy>");</script> <div style="font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both"></div> </div> <footer> <div class="td-block-row td-post-next-prev"> <div class="td-block-span6 td-post-prev-post"> <div class="td-post-next-prev-content"><span>Pasal Sebelumnya</span><a href="https://obanracer.ru/id/kurortnyi-pos-lok-kalifeya-halkidiki-opisanie-i-otzyv-kalifeya.html">Resort Village Califai.</a></div> </div> <!-- /next_post --> <div class="td-next-prev-separator"></div> <div class="td-block-span6 td-post-next-post"> <div class="td-post-next-prev-content"><span>Artikel selanjutnya</span><a href="https://obanracer.ru/id/kallifeya-greciya-opisanie-krasivye-vidy-kallifei-gde-mozhno.html">Kallithea Yunani Deskripsi</a></div> <!-- /next_post --> </div> </div> <div class="td-author-name vcard author" style="display: none"><span class="fn"><a href="https://obanracer.ru/id/author/iulia">Yulia.</a></span></div> <span style="display: none;" itemprop="author" itemscope itemtype="https://schema.org/Person"><meta itemprop="name" content="Юлия"></span> <meta itemprop="datePublished" content="2016-05-16T15:47:37+00:00"> <meta itemprop="dateModified" content="2016-10-25T16:54:41+00:00"> <meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="/other/kak-zavyazat-galstuk-foto-poshagovo.html" /><span style="display: none;" itemprop="publisher" itemscope itemtype="https://schema.org/Organization"><span style="display: none;" itemprop="logo" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="//obanracer.ru/wp-content/uploads/2017/01/logo-300x100.png"></span> <meta itemprop="name" content="Мой секрет"> </span> <meta itemprop="headline " content="Как завязать галстук пошагово фото"><span style="display: none;" itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="/wp-content/uploads/2016/05/1-19.jpg"><meta itemprop="width" content="640"><meta itemprop="height" content="450"></span> </footer> </article> <div class="td_block_wrap td_block_related_posts td_uid_3_5a236fb03c961_rand td_with_ajax_pagination td-pb-border-top td_block_template_1" data-td-block-uid="td_uid_3_5a236fb03c961" ><script>var block_td_uid_3_5a236fb03c961 = new tdBlock(); block_td_uid_3_5a236fb03c961.id = "td_uid_3_5a236fb03c961"; block_td_uid_3_5a236fb03c961.atts = '{ "limit":9,"sort":"","post_ids":"","tag_slug":"","autors_id":"","installed_post_types":"","category_id":"","category_ids":"","custom_title":"","custom_url":"","show_child_cat":"","sub_cat_ajax":"","ajax_pagination":"next_prev","header_color":"","header_text_color":"","ajax_pagination_infinite_stop":"","td_column_number":3,"td_ajax_preloading":"","td_ajax_filter_type":"td_custom_related","td_ajax_filter_ids":"","td_filter_default_txt":"\u0412\u0441\u0435","color_preset":"","border_top":"","class":"td_uid_3_5a236fb03c961_rand","el_class":"","offset":"","css":"","tdc_css":"","tdc_css_class":"td_uid_3_5a236fb03c961_rand","live_filter":"cur_post_same_categories","live_filter_cur_post_id":10046,"live_filter_cur_post_author":"694350","block_template_id":""} '; block_td_uid_3_5a236fb03c961.td_column_number = "3"; block_td_uid_3_5a236fb03c961.block_type = "td_block_related_posts"; block_td_uid_3_5a236fb03c961.post_count = "9"; block_td_uid_3_5a236fb03c961.found_posts = "26"; block_td_uid_3_5a236fb03c961.header_color = ""; block_td_uid_3_5a236fb03c961.ajax_pagination_infinite_stop = ""; block_td_uid_3_5a236fb03c961.max_num_pages = "3"; tdBlocksArray.push(block_td_uid_3_5a236fb03c961); </script><h4 class="td-related-title td-block-title"><a id="td_uid_4_5a236fb03e35d" class="td-related-left td-cur-simple-item" data-td_filter_value="" data-td_block_id="td_uid_3_5a236fb03c961" href="#">Artikel serupa.</a></h4><div id=td_uid_3_5a236fb03c961 class="td_block_inner"> <div class="td-related-row"> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/kak-v-mainkrafte-zarabatyvat-dengi-sozdanie-kart-hosting.html" rel="bookmark" title="Bagaimana dalam."Майнкрафте" зарабатывать деньги: создание карт, хостинг сервера и продажа ресурсов Как заработать в minecraft реальные деньги"><img width="218" height="150" class="entry-thumb" src="/uploads/afcbce1b7e914af6ae122d25f02ce1cc.jpg" alt="Bagaimana dalam."Майнкрафте" зарабатывать деньги: создание карт, хостинг сервера и продажа ресурсов Как заработать в minecraft реальные деньги" title="Bagaimana dalam."Майнкрафте" зарабатывать деньги: создание карт, хостинг сервера и продажа ресурсов Как заработать в minecraft реальные деньги"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/id/category/windows-7/" class="td-post-category">Windows 7.</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/kak-v-mainkrafte-zarabatyvat-dengi-sozdanie-kart-hosting.html" rel="bookmark" title="Bagaimana dalam."Майнкрафте" зарабатывать деньги: создание карт, хостинг сервера и продажа ресурсов Как заработать в minecraft реальные деньги">Cara Menghasilkan Uang di Minecraft: Membuat Kartu, Hosting Server dan Penjualan Sumber Daya Cara Menghasilkan Uang Dalam Minecraft Nyata Uang</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/kak-polzovatsya-skaipom-na-kompyutere-poshagovaya-instrukciya-kak-ustanovit.html" rel="bookmark" title="Bagaimana cara meng-install"скайп" на телефон и пользоваться им"><img width="218" height="150" class="entry-thumb" src="/uploads/f3dcf86cee739b27674f98cb9a246126.jpg" alt="Bagaimana cara meng-install"скайп" на телефон и пользоваться им" title="Bagaimana cara meng-install"скайп" на телефон и пользоваться им"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/id/category/monitors/" class="td-post-category">Monitor</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/kak-polzovatsya-skaipom-na-kompyutere-poshagovaya-instrukciya-kak-ustanovit.html" rel="bookmark" title="Bagaimana cara meng-install"скайп" на телефон и пользоваться им">Cara memasang "Skype" di telepon dan gunakan</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/chto-uchit-programmistu-obuchenie-programmirovaniyu-s-nulya-poshagovoe.html" rel="bookmark" title="Memprogram Pembelajaran dari Gores - Panduan Langkah-demi-Langkah untuk Pemula"><img width="218" height="150" class="entry-thumb" src="/uploads/6dd3b3707e9f1aed620f6871d2d743b2.jpg" alt="Memprogram Pembelajaran dari Gores - Panduan Langkah-demi-Langkah untuk Pemula" title="Memprogram Pembelajaran dari Gores - Panduan Langkah-demi-Langkah untuk Pemula"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/id/category/internet/" class="td-post-category">Internet.</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/chto-uchit-programmistu-obuchenie-programmirovaniyu-s-nulya-poshagovoe.html" rel="bookmark" title="Memprogram Pembelajaran dari Gores - Panduan Langkah-demi-Langkah untuk Pemula">Memprogram Pembelajaran dari Gores - Panduan Langkah-demi-Langkah untuk Pemula</a></h3> </div> </div> </div> </div> <div class="td-related-row"> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/kto-sozdal-pervyi-arifmometr-v-1672-godu-cifrovaya-melnica-xvii-veka.html" rel="bookmark" title="Mill Digital Century XVII"><img width="218" height="150" class="entry-thumb" src="/uploads/9ea1055fe470170f4295195302ca43f4.jpg" alt="Mill Digital Century XVII" title="Mill Digital Century XVII"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/id/category/the-winchesters/" class="td-post-category">Winchester.</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/kto-sozdal-pervyi-arifmometr-v-1672-godu-cifrovaya-melnica-xvii-veka.html" rel="bookmark" title="Mill Digital Century XVII">Mill Digital Century XVII</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/otkryt-levoe-menyu-fudzheira-otkryt-levoe-menyu-fudzheira-pravila.html" rel="bookmark" title="Buka menu kiri Aturan Fujairah di Emirat Fujaira"><img width="218" height="150" class="entry-thumb" src="/uploads/db0aa0723ea5b33d175084cf050525c7.jpg" alt="Buka menu kiri Aturan Fujairah di Emirat Fujaira" title="Buka menu kiri Aturan Fujairah di Emirat Fujaira"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/id/category/windows-7/" class="td-post-category">Windows 7.</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/otkryt-levoe-menyu-fudzheira-otkryt-levoe-menyu-fudzheira-pravila.html" rel="bookmark" title="Buka menu kiri Aturan Fujairah di Emirat Fujaira">Buka menu kiri Aturan Fujairah di Emirat Fujaira</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/otkryt-levoe-menyu-fudzheira-otkryt-levoe-menyu-fudzheira-priroda-i-mestnye.html" rel="bookmark" title="Buka Menu Kiri Fujaira Alam dan Ladmashaft"><img width="218" height="150" class="entry-thumb" src="/uploads/76db616820a891735d379024af838a06.jpg" alt="Buka Menu Kiri Fujaira Alam dan Ladmashaft" title="Buka Menu Kiri Fujaira Alam dan Ladmashaft"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/id/category/motherboard/" class="td-post-category">Motherboards.</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/otkryt-levoe-menyu-fudzheira-otkryt-levoe-menyu-fudzheira-priroda-i-mestnye.html" rel="bookmark" title="Buka Menu Kiri Fujaira Alam dan Ladmashaft">Buka Menu Kiri Fujaira Alam dan Ladmashaft</a></h3> </div> </div> </div> </div> <div class="td-related-row"> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/kak-zaregistrirovatsya-vkontakte-kak-sdelat-vtoruyu-stranicu.html" rel="bookmark" title="Bagaimana cara membuat halaman vkontakte kedua untuk satu nomor?"><img width="218" height="150" class="entry-thumb" src="/uploads/52dbe0968199d05d0cb2d2d1b0a43d6f.jpg" alt="Bagaimana cara membuat halaman vkontakte kedua untuk satu nomor?" title="Bagaimana cara membuat halaman vkontakte kedua untuk satu nomor?"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/id/category/security/" class="td-post-category">Keamanan</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/kak-zaregistrirovatsya-vkontakte-kak-sdelat-vtoruyu-stranicu.html" rel="bookmark" title="Bagaimana cara membuat halaman vkontakte kedua untuk satu nomor?">Bagaimana cara membuat halaman vkontakte kedua untuk satu nomor?</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/pochemu-hamachi-ne-podklyuchaetsya-k-seti-reshaem-problemu-podklyucheniya-hamachi-k.html" rel="bookmark" title="Kami memecahkan masalah menghubungkan Hamachi ke masalah adaptor jaringan"><img width="218" height="150" class="entry-thumb" src="/uploads/af7c1d6f7565d884e071b0d6e2174690.jpg" alt="Kami memecahkan masalah menghubungkan Hamachi ke masalah adaptor jaringan" title="Kami memecahkan masalah menghubungkan Hamachi ke masalah adaptor jaringan"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/id/category/the-winchesters/" class="td-post-category">Winchester.</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/pochemu-hamachi-ne-podklyuchaetsya-k-seti-reshaem-problemu-podklyucheniya-hamachi-k.html" rel="bookmark" title="Kami memecahkan masalah menghubungkan Hamachi ke masalah adaptor jaringan">Kami memecahkan masalah menghubungkan Hamachi ke masalah adaptor jaringan</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/prilozhenie-pohozhee-na-instagram-s-luchshie-programma-dlya-instagram-dlya.html" rel="bookmark" title="Program terbaik untuk Instagram untuk posting dan pemrosesan foto"><img width="218" height="150" class="entry-thumb" src="/uploads/49727ad65ca4cc36067b8759af3f9ba8.jpg" alt="Program terbaik untuk Instagram untuk posting dan pemrosesan foto" title="Program terbaik untuk Instagram untuk posting dan pemrosesan foto"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/id/category/security/" class="td-post-category">Keamanan</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/prilozhenie-pohozhee-na-instagram-s-luchshie-programma-dlya-instagram-dlya.html" rel="bookmark" title="Program terbaik untuk Instagram untuk posting dan pemrosesan foto">Program terbaik untuk Instagram untuk posting dan pemrosesan foto</a></h3> </div> </div> </div> </div></div></div> </div> </div> <div class="td-pb-span4 td-main-sidebar"> <div class="td-ss-main-sidebar"> <aside class="widget �lambda_169101"> <div style="margin:10px 0"> </div> </aside> <div class="td_block_wrap td_block_1 td_block_widget td_uid_2_5a23c04f0cdc0_rand td-pb-border-top td_block_template_1 td-column-1" data-td-block-uid="td_uid_2_5a23c04f0cdc0"> <div class="td-block-title-wrap"> <h4 class="block-title"><span class="td-pulldown-size">Direkomendasikan</span></h4> </div> <div id=td_uid_2_5a23c04f0cdc0 class="td_block_inner"> <div class="td-block-span12"> <div class="td_module_4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/krashit-mainkraft-1-5-2-reshenie-problem-v-tlauncher-lagi-i-vylety-vo.html" rel="bookmark" title="Crashing Minecraft 1.5 2. Memecahkan masalah di TLauncher. Lag dan keberangkatan selama pertandingan"><img width="324" height="235" class="entry-thumb" src="/uploads/be518d19c81c51a36a10ec67569d2ab4.jpg" alt="Crashing Minecraft 1.5 2. Memecahkan masalah di TLauncher. Lag dan keberangkatan selama pertandingan" title="Crashing Minecraft 1.5 2. Memecahkan masalah di TLauncher. Lag dan keberangkatan selama pertandingan"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/id/category/multimedia/" class="td-post-category">Multimedia.</a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/krashit-mainkraft-1-5-2-reshenie-problem-v-tlauncher-lagi-i-vylety-vo.html" rel="bookmark" title="Crashing Minecraft 1.5 2. Memecahkan masalah di TLauncher. Lag dan keberangkatan selama pertandingan">Crashing Minecraft 1.5 2. Memecahkan masalah di TLauncher. Lag dan keberangkatan selama pertandingan</a></h3> <div class="td-module-meta-info"> </div> <div class="td-excerpt"> Sejak rilis Minecraft, banyak waktu berlalu. Gim ini menemukan para penggemarnya yang secara teratur menikmati gameplay. Kamu bisa ...</div> </div> <!-- /next_post --> </div> <div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/panasonic-g6-tehnicheskie-harakteristiki-sistemnaya-kamera-panasonic-lumix-dmc-g6-chto-pod.html" rel="bookmark" title="Kamera Sistem Panasonic Lumix DMC-G6"><img width="100" height="70" class="entry-thumb" src="/uploads/7c2f764019a17704196c7c833be2a3aa.jpg" alt="Kamera Sistem Panasonic Lumix DMC-G6" title="Kamera Sistem Panasonic Lumix DMC-G6"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/panasonic-g6-tehnicheskie-harakteristiki-sistemnaya-kamera-panasonic-lumix-dmc-g6-chto-pod.html" rel="bookmark" title="Kamera Sistem Panasonic Lumix DMC-G6">Kamera Sistem Panasonic Lumix DMC-G6</a></h3> <div class="td-module-meta-info"> <a href="https://obanracer.ru/id/category/processors/" class="td-post-category">Prosesor</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/v-kakoi-programme-narisovat-kryshu-doma-luchshie-programmy-dlya-proektirovaniya.html" rel="bookmark" title="Program desain terbaik untuk rumah dan kamar"><img width="100" height="70" class="entry-thumb" src="/uploads/cafa05facb96903bc9477ef34665ecd1.jpg" alt="Program desain terbaik untuk rumah dan kamar" title="Program desain terbaik untuk rumah dan kamar"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/v-kakoi-programme-narisovat-kryshu-doma-luchshie-programmy-dlya-proektirovaniya.html" rel="bookmark" title="Program desain terbaik untuk rumah dan kamar">Program desain terbaik untuk rumah dan kamar</a></h3> <div class="td-module-meta-info"> <a href="https://obanracer.ru/id/category/windows-7/" class="td-post-category">Windows 7.</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/vyletaet-mainkraft-iz-za-java-vyletaet-mainkraft-chto-delat-minecraft-ne.html" rel="bookmark" title="Minecraft menabrak apa yang harus dilakukan?"><img width="100" height="70" class="entry-thumb" src="/uploads/8d552799cceafe8b9066f31d0562c62f.jpg" alt="Minecraft menabrak apa yang harus dilakukan?" title="Minecraft menabrak apa yang harus dilakukan?"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/vyletaet-mainkraft-iz-za-java-vyletaet-mainkraft-chto-delat-minecraft-ne.html" rel="bookmark" title="Minecraft menabrak apa yang harus dilakukan?">Minecraft menabrak apa yang harus dilakukan?</a></h3> <div class="td-module-meta-info"> <a href="https://obanracer.ru/id/category/monitors/" class="td-post-category">Monitor</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/prekrashchena-rabota-java-tm-platform-se-binary-chto-delat-prekrashchena-rabota-java-tm-platform-se.html" rel="bookmark" title="Pekerjaan Java TM Platform SE Biner dihentikan - Apa yang harus dilakukan tentang kesalahan terjadi"><img width="100" height="70" class="entry-thumb" src="/uploads/e548d1d3c153b2eb65e8007e957ca6b8.jpg" alt="Pekerjaan Java TM Platform SE Biner dihentikan - Apa yang harus dilakukan tentang kesalahan terjadi" title="Pekerjaan Java TM Platform SE Biner dihentikan - Apa yang harus dilakukan tentang kesalahan terjadi"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/prekrashchena-rabota-java-tm-platform-se-binary-chto-delat-prekrashchena-rabota-java-tm-platform-se.html" rel="bookmark" title="Pekerjaan Java TM Platform SE Biner dihentikan - Apa yang harus dilakukan tentang kesalahan terjadi">Pekerjaan Java TM Platform SE Biner dihentikan - Apa yang harus dilakukan tentang kesalahan terjadi</a></h3> <div class="td-module-meta-info"> <a href="https://obanracer.ru/id/category/power-supply/" class="td-post-category">Perlengkapan Daya</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/perevod-direkcionnyh-uglov-v-rumby-onlain-zamknutyi-teodolitnyi-hod-obrabotka-i-metodika-rasscheta.html" rel="bookmark" title="Langkah Theodolite Tertutup: Pemrosesan dan Metode Koordinat Menghitung"><img width="100" height="70" class="entry-thumb" src="/uploads/21aa23d49bb25b138edc583ce466e4f2.jpg" alt="Langkah Theodolite Tertutup: Pemrosesan dan Metode Koordinat Menghitung" title="Langkah Theodolite Tertutup: Pemrosesan dan Metode Koordinat Menghitung"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/perevod-direkcionnyh-uglov-v-rumby-onlain-zamknutyi-teodolitnyi-hod-obrabotka-i-metodika-rasscheta.html" rel="bookmark" title="Langkah Theodolite Tertutup: Pemrosesan dan Metode Koordinat Menghitung">Langkah Theodolite Tertutup: Pemrosesan dan Metode Koordinat Menghitung</a></h3> <div class="td-module-meta-info"> <a href="https://obanracer.ru/id/category/windows-8/" class="td-post-category">Windows 8.</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/printery-epson-kak-smenit-kartridzhi-na-printerah-zamena-obmen-i-zapravka.html" rel="bookmark" title="Mengganti kartrid pertukaran dan isi ulang"><img width="100" height="70" class="entry-thumb" src="/uploads/46fd0883101f3a03012229e5902eb502.jpg" alt="Mengganti kartrid pertukaran dan isi ulang" title="Mengganti kartrid pertukaran dan isi ulang"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/printery-epson-kak-smenit-kartridzhi-na-printerah-zamena-obmen-i-zapravka.html" rel="bookmark" title="Mengganti kartrid pertukaran dan isi ulang">Mengganti kartrid pertukaran dan isi ulang</a></h3> <div class="td-module-meta-info"> <a href="https://obanracer.ru/id/category/windows-7/" class="td-post-category">Windows 7.</a> </div> </div> </div> </div> </div> </div> </div> <aside class="widget_text td_block_template_1 widget widget_custom_html"> <div class="textwidget custom-html-widget"> </div> </aside> </div> </div> </div> </div> </div> <div class="td-footer-wrapper td-container-wrap "> <div class="td-container"> <div class="td-pb-row"> <div class="td-pb-span12"> </div> </div> <div class="td-pb-row"> <div class="td-pb-span4"> <div class="td_block_wrap td_block_15 td_block_widget td_uid_11_5a23980e76adb_rand td-pb-border-top td_block_template_1 td-column-1 td_block_padding" data-td-block-uid="td_uid_11_5a23980e76adb" > <div class="td-block-title-wrap"></div><div id=td_uid_11_5a23980e76adb class="td_block_inner td-column-1"><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/raznica-mezhdu-mikrokontrollerom-i-mikroprocessorom-pro-mikrokontrollery.html" rel="bookmark" title="Tentang mikrokontroler untuk pemula - sejarah penciptaan, jenis utama dan perbedaan arsitektur FPGA"><img width="218" height="150" class="entry-thumb" src="/uploads/dd20b8f85d484712bb0399e8e0fc5b94.jpg" alt="Tentang mikrokontroler untuk pemula - sejarah penciptaan, jenis utama dan perbedaan arsitektur FPGA" title="Tentang mikrokontroler untuk pemula - sejarah penciptaan, jenis utama dan perbedaan arsitektur FPGA"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/raznica-mezhdu-mikrokontrollerom-i-mikroprocessorom-pro-mikrokontrollery.html" rel="bookmark" title="Tentang mikrokontroler untuk pemula - sejarah penciptaan, jenis utama dan perbedaan arsitektur FPGA">Tentang mikrokontroler untuk pemula - sejarah penciptaan, jenis utama dan perbedaan arsitektur FPGA</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/sozdanie-lichnogo-informacionnogo-prostranstva-uchitelya-lichnoe.html" rel="bookmark" title="Ruang Informasi Pribadi"><img width="218" height="150" class="entry-thumb" src="/uploads/cc2cf1bbe7714a272028a46c4f29c4db.jpg" alt="Ruang Informasi Pribadi" title="Ruang Informasi Pribadi"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/sozdanie-lichnogo-informacionnogo-prostranstva-uchitelya-lichnoe.html" rel="bookmark" title="Ruang Informasi Pribadi">Ruang Informasi Pribadi</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/analiz-besprovodnyh-setei-s-pomoshchyu-netspot-skanery-skrytyh-setei.html" rel="bookmark" title="Analisis Jaringan Nirkabel Menggunakan NetSpot"><img width="218" height="150" class="entry-thumb" src="/uploads/8b91d3f608b25500885eebdb1013012b.jpg" alt="Analisis Jaringan Nirkabel Menggunakan NetSpot" title="Analisis Jaringan Nirkabel Menggunakan NetSpot"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/analiz-besprovodnyh-setei-s-pomoshchyu-netspot-skanery-skrytyh-setei.html" rel="bookmark" title="Analisis Jaringan Nirkabel Menggunakan NetSpot">Analisis Jaringan Nirkabel Menggunakan NetSpot</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/telefon-s-dvumya-standartami-gsm-i-cdma-razlichiya-mezhdu-cdma-i-gsm.html" rel="bookmark" title="Perbedaan antara standar CDMA dan GSM"><img width="218" height="150" class="entry-thumb" src="/uploads/cd232591d0cf8dd8a759886c5500efc4.jpg" alt="Perbedaan antara standar CDMA dan GSM" title="Perbedaan antara standar CDMA dan GSM"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/telefon-s-dvumya-standartami-gsm-i-cdma-razlichiya-mezhdu-cdma-i-gsm.html" rel="bookmark" title="Perbedaan antara standar CDMA dan GSM">Perbedaan antara standar CDMA dan GSM</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/trudnyi-vybor-smartfon-ili-planshet-v-chem-raznica-mezhdu-smartfonom-i.html" rel="bookmark" title="Apa perbedaan antara smartphone dan perbedaan tablet Android dari tablet"><img width="218" height="150" class="entry-thumb" src="/uploads/49f84ccce7b49306a8b73f20627c79a1.jpg" alt="Apa perbedaan antara smartphone dan perbedaan tablet Android dari tablet" title="Apa perbedaan antara smartphone dan perbedaan tablet Android dari tablet"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/trudnyi-vybor-smartfon-ili-planshet-v-chem-raznica-mezhdu-smartfonom-i.html" rel="bookmark" title="Apa perbedaan antara smartphone dan perbedaan tablet Android dari tablet">Apa perbedaan antara smartphone dan perbedaan tablet Android dari tablet</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/email-generator-parolei-kak-sozdat-i-zapomnit-nad-zhnyi-parol-pochemu.html" rel="bookmark" title="Cara membuat dan mengingat kata sandi yang andal"><img width="218" height="150" class="entry-thumb" src="/uploads/706eca5222f097994818b5387bed77d8.jpg" alt="Cara membuat dan mengingat kata sandi yang andal" title="Cara membuat dan mengingat kata sandi yang andal"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/email-generator-parolei-kak-sozdat-i-zapomnit-nad-zhnyi-parol-pochemu.html" rel="bookmark" title="Cara membuat dan mengingat kata sandi yang andal">Cara membuat dan mengingat kata sandi yang andal</a></h3> </div> </div> </div></div></div> <div class="clearfix"></div> </div> <div class="td-pb-span4"> <div class="td_block_wrap td_block_15 td_block_widget td_uid_12_5a23980e79990_rand td-pb-border-top td_block_template_1 td-column-1 td_block_padding" data-td-block-uid="td_uid_12_5a23980e79990" > <div class="td-block-title-wrap"></div><div id=td_uid_12_5a23980e79990 class="td_block_inner td-column-1"><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/mozhno-li-otsledit-aifon-bez-simki-pochemu-ne-rabotaet-funkciya-naiti-iphone.html" rel="bookmark" title="Mengapa fungsi "Temukan iPhone" berfungsi?"><img width="218" height="150" class="entry-thumb" src="/uploads/05b919e8672efb5d60c44b4baf0db500.jpg" alt="Mengapa fungsi "Temukan iPhone" berfungsi?" title="Mengapa fungsi "Temukan iPhone" berfungsi?"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/mozhno-li-otsledit-aifon-bez-simki-pochemu-ne-rabotaet-funkciya-naiti-iphone.html" rel="bookmark" title="Mengapa fungsi "Temukan iPhone" berfungsi?">Mengapa fungsi "Temukan iPhone" berfungsi?</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/pochemu-itools-ne-vidit-iphone-prichina-i-reshenie-kak-nastroit-i.html" rel="bookmark" title="Cara mengatur dan menggunakan program iToolss: Instruksi aplikasi iTools tidak melihat iPhone"><img width="218" height="150" class="entry-thumb" src="/uploads/8946bedbcd2867ed43f3a32d130a8689.jpg" alt="Cara mengatur dan menggunakan program iToolss: Instruksi aplikasi iTools tidak melihat iPhone" title="Cara mengatur dan menggunakan program iToolss: Instruksi aplikasi iTools tidak melihat iPhone"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/pochemu-itools-ne-vidit-iphone-prichina-i-reshenie-kak-nastroit-i.html" rel="bookmark" title="Cara mengatur dan menggunakan program iToolss: Instruksi aplikasi iTools tidak melihat iPhone">Cara mengatur dan menggunakan program iToolss: Instruksi aplikasi iTools tidak melihat iPhone</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/perenos-nastroek-iphone-na-novyi-sposoby-perenosa-dannyh-s.html" rel="bookmark" title="Metode untuk mentransfer data dari satu iPhone ke iPhone lain"><img width="218" height="150" class="entry-thumb" src="/uploads/50a0b5480336144be0f1d1ecdfa15a5b.jpg" alt="Metode untuk mentransfer data dari satu iPhone ke iPhone lain" title="Metode untuk mentransfer data dari satu iPhone ke iPhone lain"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/perenos-nastroek-iphone-na-novyi-sposoby-perenosa-dannyh-s.html" rel="bookmark" title="Metode untuk mentransfer data dari satu iPhone ke iPhone lain">Metode untuk mentransfer data dari satu iPhone ke iPhone lain</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/blokirovka-aktivacii-iphone-5-kak-snyat-parol-bystryi-obhod.html" rel="bookmark" title="Aktivasi iPad Crawling Cepat"><img width="218" height="150" class="entry-thumb" src="/uploads/18838ec1f91e48279ac1947120c453e7.jpg" alt="Aktivasi iPad Crawling Cepat" title="Aktivasi iPad Crawling Cepat"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/blokirovka-aktivacii-iphone-5-kak-snyat-parol-bystryi-obhod.html" rel="bookmark" title="Aktivasi iPad Crawling Cepat">Aktivasi iPad Crawling Cepat</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/kak-ochistit-istoriyu-na-aipad-kak-ochistit-istoriyu-v-safari-na-iphone-ipad-i-mac-kak.html" rel="bookmark" title="Cara Membersihkan Cerita di Safari di iPhone, iPad dan Mac"><img width="218" height="150" class="entry-thumb" src="/uploads/c35843ede0fa4d8127b9d98e79b6ac3b.jpg" alt="Cara Membersihkan Cerita di Safari di iPhone, iPad dan Mac" title="Cara Membersihkan Cerita di Safari di iPhone, iPad dan Mac"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/kak-ochistit-istoriyu-na-aipad-kak-ochistit-istoriyu-v-safari-na-iphone-ipad-i-mac-kak.html" rel="bookmark" title="Cara Membersihkan Cerita di Safari di iPhone, iPad dan Mac">Cara Membersihkan Cerita di Safari di iPhone, iPad dan Mac</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/kak-otklyuchit-faily-cookie-chto-takoe-faily-cookie-i-kak-s-nimi-rabotat-mogut-li.html" rel="bookmark" title="Apa cookie dan bagaimana cara bekerja dengan mereka?"><img width="218" height="150" class="entry-thumb" src="/uploads/cc75d1865f5980133f34840d2caf5ca4.jpg" alt="Apa cookie dan bagaimana cara bekerja dengan mereka?" title="Apa cookie dan bagaimana cara bekerja dengan mereka?"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/kak-otklyuchit-faily-cookie-chto-takoe-faily-cookie-i-kak-s-nimi-rabotat-mogut-li.html" rel="bookmark" title="Apa cookie dan bagaimana cara bekerja dengan mereka?">Apa cookie dan bagaimana cara bekerja dengan mereka?</a></h3> </div> </div> </div></div></div> <div class="clearfix"></div> </div> <div class="td-pb-span4"> <div class="td_block_wrap td_block_15 td_block_widget td_uid_13_5a23980e7caa8_rand td-pb-border-top td_block_template_1 td-column-1 td_block_padding" data-td-block-uid="td_uid_13_5a23980e7caa8" > <div class="td-block-title-wrap"></div><div id=td_uid_13_5a23980e7caa8 class="td_block_inner td-column-1"><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/sboi-aktivacii-iphone-nedostupen-server-ili-chto-to-pohuzhe.html" rel="bookmark" title="Kegagalan aktivasi iPhone adalah server yang tidak tersedia atau sesuatu yang lebih buruk?"><img width="218" height="150" class="entry-thumb" src="/uploads/6d97e44c5b70f1dee2f20e93cd34266c.jpg" alt="Kegagalan aktivasi iPhone adalah server yang tidak tersedia atau sesuatu yang lebih buruk?" title="Kegagalan aktivasi iPhone adalah server yang tidak tersedia atau sesuatu yang lebih buruk?"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/sboi-aktivacii-iphone-nedostupen-server-ili-chto-to-pohuzhe.html" rel="bookmark" title="Kegagalan aktivasi iPhone adalah server yang tidak tersedia atau sesuatu yang lebih buruk?">Kegagalan aktivasi iPhone adalah server yang tidak tersedia atau sesuatu yang lebih buruk?</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/lineiki-napravlyayushchie-i-setka-v-fotoshope-osnovy-photoshop-ispolzovanie.html" rel="bookmark" title="Dasar-Dasar Photoshop: Menggunakan Mesh (Grid) di Photoshop Cara Membuat Kotak Di Photoshop CS6"><img width="218" height="150" class="entry-thumb" src="/uploads/f26b20924c99d93d3ab44ec683de8053.jpg" alt="Dasar-Dasar Photoshop: Menggunakan Mesh (Grid) di Photoshop Cara Membuat Kotak Di Photoshop CS6" title="Dasar-Dasar Photoshop: Menggunakan Mesh (Grid) di Photoshop Cara Membuat Kotak Di Photoshop CS6"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/lineiki-napravlyayushchie-i-setka-v-fotoshope-osnovy-photoshop-ispolzovanie.html" rel="bookmark" title="Dasar-Dasar Photoshop: Menggunakan Mesh (Grid) di Photoshop Cara Membuat Kotak Di Photoshop CS6">Dasar-Dasar Photoshop: Menggunakan Mesh (Grid) di Photoshop Cara Membuat Kotak Di Photoshop CS6</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/mediateka-icloud-ne-vklyuchaetsya-chto-takoe-mediateka-icloud-kak.html" rel="bookmark" title="Apa perpustakaan media iCloud?"><img width="218" height="150" class="entry-thumb" src="/uploads/c4a9a21f6487cdd84cf6e87d5a030919.jpg" alt="Apa perpustakaan media iCloud?" title="Apa perpustakaan media iCloud?"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/mediateka-icloud-ne-vklyuchaetsya-chto-takoe-mediateka-icloud-kak.html" rel="bookmark" title="Apa perpustakaan media iCloud?">Apa perpustakaan media iCloud?</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/povorachivaetsya-ekran-iphone-5s-ne-povorachivaetsya-ekran-iphone-chto.html" rel="bookmark" title="Layar iPhone tidak berputar, apa yang harus dilakukan?"><img width="218" height="150" class="entry-thumb" src="/uploads/2a6a73cd892c552df6a9069b3cd6dff5.jpg" alt="Layar iPhone tidak berputar, apa yang harus dilakukan?" title="Layar iPhone tidak berputar, apa yang harus dilakukan?"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/povorachivaetsya-ekran-iphone-5s-ne-povorachivaetsya-ekran-iphone-chto.html" rel="bookmark" title="Layar iPhone tidak berputar, apa yang harus dilakukan?">Layar iPhone tidak berputar, apa yang harus dilakukan?</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/kak-zaryazhat-nesertificirovannym-kabelem-vazhno-dannyi-kabel-ili.html" rel="bookmark" title="Penting kabel atau aksesori ini tidak disertifikasi atau tidak didukung."><img width="218" height="150" class="entry-thumb" src="/uploads/9fcf7a35719c3615538760373497465f.jpg" alt="Penting kabel atau aksesori ini tidak disertifikasi atau tidak didukung." title="Penting kabel atau aksesori ini tidak disertifikasi atau tidak didukung."/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/kak-zaryazhat-nesertificirovannym-kabelem-vazhno-dannyi-kabel-ili.html" rel="bookmark" title="Penting kabel atau aksesori ini tidak disertifikasi atau tidak didukung.">Penting kabel atau aksesori ini tidak disertifikasi atau tidak didukung.</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/id/postoyannyi-poisk-seti-iphone-5s-chto-delat-aifon-ne-lovit-set-sbroste.html" rel="bookmark" title="Pencarian konstan untuk jaringan iPhone 5S apa yang harus dilakukan"><img width="218" height="150" class="entry-thumb" src="/uploads/ea08d4d9468475fc8f84fc457468a393.jpg" alt="Pencarian konstan untuk jaringan iPhone 5S apa yang harus dilakukan" title="Pencarian konstan untuk jaringan iPhone 5S apa yang harus dilakukan"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/id/postoyannyi-poisk-seti-iphone-5s-chto-delat-aifon-ne-lovit-set-sbroste.html" rel="bookmark" title="Pencarian konstan untuk jaringan iPhone 5S apa yang harus dilakukan">Pencarian konstan untuk jaringan iPhone 5S apa yang harus dilakukan</a></h3> </div> </div> </div></div></div> <div class="clearfix"></div><aside class="td_block_template_1 widget widget_text"> <div class="textwidget"> </div> </aside><aside class="td_block_template_1 widget widget_text"> <div class="textwidget"> </div> </aside> </div> </div> </div> </div> <div class="td-sub-footer-container td-container-wrap "> <div class="td-container"> <div class="td-pb-row"> <div class="td-pb-span td-sub-footer-menu"> </div> <div class="td-pb-span td-sub-footer-copy"> Hak Cipta 2021 - Perbaikan komputer dan laptop. Kartu video, hard drive, internet, monitor.</div> </div> </div> </div> </div> <style type="text/css" media="screen"> /* custom css theme panel */ .td-post-header .entry-title { font-weight: normal !important; } h1.entry-title { font-weight: normal !important; border-bottom:#c44c4c 2px dotted; } h1.entry-title:before { content: "\f184"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .sf-menu ul .td-menu-item > a:hover, .sf-menu ul .sfHover > a, .sf-menu ul .current-menu-ancestor > a, .sf-menu ul .current-category-ancestor > a, .sf-menu ul .current-menu-item > a { color: #edf3f7; } .td-post-content h2 { border-bottom:#c44c4c 2px dotted;} .td-post-content h2:before { content: "\f184"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .td-post-content h3 { border-bottom:#c44c4c 2px dotted;} .td-post-content h3:before { content: "\f103"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .category-my .td-page-title { color:#c44c4c; font-weight: 400; font-size: 36px; } .post header .entry-title { line-height: 40px; } .td-category-description h2, .td-category-description h3 { color:#c44c4c;} .td-category-description h2 { border-bottom:#c44c4c 2px solid;} .td-category-description h2:before { content: "\f055"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .td-category-description h3 { border-bottom:#c44c4c 2px solid;} .td-category-description h3:before { content: "\f103"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .td-category-description ol, .td-category-description ul { margin-top:20px !important; margin-bottom:20px !important;} .td-category-description ul, .td-post-content ul { padding:0; margin:0; list-style:none; clear:both;} .td-category-description ul li, .td-post-content ul li { padding:0 0 0 15px; margin:0 0 10px 35px; position:relative;} .td-category-description ul li:before, .td-post-content ul li:before { content: "\f192"; font-family: "FontAwesome"; color:#c44c4c; position:absolute; left:-10px;} .td-category-description ol, .td-post-content ol { padding:0; margin:0 0 0 5px; list-style:none; counter-reset: lipoint; clear:both;} .td-category-description ol li, .td-post-content ol li { padding:0 0 0 15px; margin:0 0 10px 35px; position:relative;} .td-category-description ol li:before, .td-post-content ol li:before { content: counter(lipoint); counter-increment: lipoint; color:#fff; position:absolute; left:-16px; background:#c44c4c; width:20px; height:20px; line-height:20px; text-align:center; -webkit-border-radius: 20px;border-radius: 20px; font-size:12px; top:3px;} .toc_list li:before { display:none} .td-header-style-9 .td-header-menu-wrap-full { /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#c44c4c+0,c10000+100 */ background: #c44c4c; /* Old browsers */ background: -moz-linear-gradient(top, #c44c4c 0%, #c10000 100%); /* FF3.6-15 */ background: -webkit-linear-gradient(top, #c44c4c 0%,#c10000 100%); /* Chrome10-25,Safari5.1-6 */ background: linear-gradient(to bottom, #c44c4c 0%,#c10000 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#c44c4c', endColorstr='#c10000',GradientType=0 ); /* IE6-9 */ } .sf-menu > li > a { color: #fff; } .td-header-style-9 .header-search-wrap .td-icon-search { color: #fff; } .td-affix a { color:#000 !important;} </style> <script type='text/javascript'> /* <![CDATA[ */ var tocplus = { "smooth_scroll":"1"} ; /* ]]> */ </script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/table-of-contents-plus/front.min.js'></script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/wp-postratings/js/postratings-js.js'></script> <script type='text/javascript' src='https://obanracer.ru/wp-content/themes/Newspaper/js/tagdiv_theme.js'></script> <script type='text/javascript' src='/wp-includes/js/comment-reply.min.js'></script> <script type='text/javascript'> /* <![CDATA[ */ var boxzilla_options = { "testMode":"","boxes":[]} ; /* ]]> */ </script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/boxzilla/assets/js/script.min.js'></script> <script type='text/javascript' src='/wp-includes/js/wp-embed.min.js'></script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/simple-lightbox/client/js/prod/lib.core.js'></script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/simple-lightbox/client/js/prod/lib.view.js'></script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/simple-lightbox/themes/baseline/js/prod/client.js'></script> <script type='text/javascript' src='/assets/client1.js'></script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/simple-lightbox/template-tags/item/js/prod/tag.item.js'></script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/simple-lightbox/template-tags/ui/js/prod/tag.ui.js'></script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/simple-lightbox/content-handlers/image/js/prod/handler.image.js'></script> <script> (function(){ var html_jquery_obj = jQuery('html'); if (html_jquery_obj.length && (html_jquery_obj.is('.ie8') || html_jquery_obj.is('.ie9'))) { var path = '/wp-content/themes/Newspaper/style.css'; jQuery.get(path, function(data) { var str_split_separator = '#td_css_split_separator'; var arr_splits = data.split(str_split_separator); var arr_length = arr_splits.length; if (arr_length > 1) { var dir_path = '/wp-content/themes/Newspaper'; var splited_css = ''; for (var i = 0; i < arr_length; i++) { if (i > 0) { arr_splits[i] = str_split_separator + ' ' + arr_splits[i]; } //jQuery('head').append('<style>' + arr_splits[i] + '</style>'); var formated_str = arr_splits[i].replace(/\surl\(\'(?!data\:)/gi, function regex_function(str) { return ' url(\'' + dir_path + '/' + str.replace(/url\(\'/gi, '').replace(/^\s+|\s+$/gm,''); } ); splited_css += "<style>" + formated_str + "</style>"; } var td_theme_css = jQuery('link#td-theme-css'); if (td_theme_css.length) { td_theme_css.after(splited_css); } } } ); } } )(); </script> </body> </html>