XML DOCS

XML-FUNDAMENTALS

XML Declaration
Description: Baris opsional di awal dokumen XML yang mendefinisikan versi XML dan encoding karakter.
Example:
<?xml version="1.0" encoding="UTF-8"?>
Output: Deklarasi dokumen XML
XML Elements
Description: Struktur utama XML yang terdiri dari tag pembuka, konten, dan tag penutup. Bersifat case-sensitive.
Example:
<title>Belajar XML</title>
Output: Elemen 'title' berisi teks
XML Attributes
Description: Informasi tambahan dalam tag pembuka, pasangan nama-nilai dalam tanda kutip.
Example:
<book category="programming" lang="id">...</book>
Output: Atribut 'category' dan 'lang'
XML Tree Structure
Description: Dokumen XML membentuk struktur pohon dengan satu elemen root.
Example:
<library><book>...</book></library>
Output: Hierarki parent-child
Well-Formed XML
Description: XML harus memenuhi aturan dasar: satu root, tag tertutup semua, case-sensitive, nesting benar.
Example:
Setiap tag pembuka harus memiliki tag penutup: <p>...</p>
Output: Dokumen dapat diparsing
Valid XML
Description: XML yang sesuai dengan skema tertentu (DTD, XSD, Relax NG).
Example:
Dokumen XML yang lulus validasi terhadap schema.xsd.
Output: Valid sesuai skema

DTD

Internal DTD
Description: Definisi DTD di dalam dokumen XML.
Example:
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
... ]>
Output: DTD internal
External DTD
Description: Mereferensikan file DTD eksternal.
Example:
<!DOCTYPE note SYSTEM "note.dtd">
Output: Validasi dari file eksternal
ELEMENT Declaration
Description: Mendefinisikan elemen dan konten yang diperbolehkan.
Example:
<!ELEMENT book (title, author, year)>
<!ELEMENT title (#PCDATA)>
Output: Definisi elemen
ATTLIST Declaration
Description: Mendefinisikan atribut untuk suatu elemen (tipe, default, required).
Example:
<!ATTLIST book category CDATA #REQUIRED lang CDATA "en">
Output: Atribut 'category' wajib, 'lang' default 'en'
ENTITY Declaration
Description: Mendefinisikan entitas untuk digunakan sebagai pengganti teks atau konten eksternal.
Example:
<!ENTITY company "Tech Corp">
Output: &company; akan diganti 'Tech Corp'

XSD

XML Schema Definition (XSD)
Description: Alternatif modern untuk DTD, mendukung tipe data kompleks dan namespace.
Example:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
Output: Namespace XSD
Simple Type
Description: Elemen dengan tipe data sederhana (string, integer, date).
Example:
<xs:element name="age" type="xs:integer"/>
Output: Elemen harus integer
Complex Type
Description: Elemen yang memiliki anak atau atribut.
Example:
<xs:element name="person"><xs:complexType><xs:sequence><xs:element name="name" type="xs:string"/></xs:sequence></xs:complexType></xs:element>
Output: Tipe kompleks dengan child 'name'
Restrictions
Description: Membatasi nilai (min, max, pattern, enumeration).
Example:
<xs:restriction base="xs:string"><xs:maxLength value="10"/></xs:restriction>
Output: String maksimal 10 karakter

NAMESPACES

XML Namespaces
Description: Menghindari konflik nama elemen dengan memberikan awalan unik.
Example:
<root xmlns:h="http://www.w3.org/TR/html4/" xmlns:f="http://www.w3.org/TR/1999/xhtml">
Output: Prefix h: dan f:
Default Namespace
Description: Namespace yang berlaku untuk semua elemen tanpa prefiks dalam lingkupnya.
Example:
<table xmlns="http://www.w3.org/1999/xhtml"><tr><td>Data</td></tr></table>
Output: Semua elemen dianggap dari namespace xhtml

XPATH

XPath Expression
Description: Bahasa untuk menavigasi dan memilih node dalam dokumen XML.
Example:
/library/book/title
Output: Node <title> di dalam <book>
Absolute Path (/...)
Description: Memulai seleksi dari root.
Example:
/catalog/book[1]
Output: Buku pertama
Relative Path (./... atau hanya ...)
Description: Relatif terhadap node saat ini.
Example:
./price atau price
Output: Node <price> di bawah konteks saat ini
Predicates
Description: Kondisi penyaringan di dalam kurung siku.
Example:
/catalog/book[price>35]
Output: Buku dengan harga di atas 35
Functions
Description: Fungsi bawaan seperti text(), contains(), starts-with(), sum().
Example:
//book[contains(title, 'XML')]
Output: Buku yang judulnya mengandung 'XML'

XSLT

XSLT Transformation
Description: Mengubah dokumen XML menjadi format lain (HTML, XML lain, teks).
Example:
<?xml-stylesheet type="text/xsl" href="transform.xsl"?>
Output: Dokumen akan ditransformasi
<xsl:template>
Description: Mendefinisikan template untuk mencocokkan dan mentransformasi node.
Example:
<xsl:template match="/"><html><body><xsl:apply-templates/></body></html></xsl:template>
Output: Template untuk root
<xsl:value-of>
Description: Mengambil nilai dari node yang dipilih.
Example:
<xsl:value-of select="book/title"/>
Output: Teks judul buku
<xsl:for-each>
Description: Iterasi melalui node yang dipilih.
Example:
<xsl:for-each select="catalog/book"><p><xsl:value-of select="title"/></p></xsl:for-each>
Output: Daftar buku dalam paragraf
<xsl:if> / <xsl:choose>
Description: Kondisional dalam XSLT.
Example:
<xsl:if test="price>30">Diskon!</xsl:if>
Output: Teks kondisional

XML-IN-BROWSER

DOMParser
Description: Memparsing string XML menjadi dokumen DOM.
Example:
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlString, 'text/xml');
Output: XML Document
XMLSerializer
Description: Mengubah dokumen DOM menjadi string XML.
Example:
const serializer = new XMLSerializer();
const xmlString = serializer.serializeToString(xmlDoc);
Output: String XML
XMLHttpRequest (XML)
Description: Mengambil dan memparsing file XML melalui HTTP.
Example:
const xhr = new XMLHttpRequest();
xhr.open('GET', '/data.xml');
xhr.onload = () => { const xmlDoc = xhr.responseXML };
Output: Document XML dari server

BEST-PRACTICES

Gunakan encoding UTF-8
Description: Encoding universal yang mendukung semua karakter internasional.
Example:
<?xml version="1.0" encoding="UTF-8"?>
Output: Kompatibilitas penuh
Validasi dengan Schema
Description: Gunakan XSD untuk memastikan struktur dan tipe data benar sebelum diproses.
Example:
Validasi dokumen XML sebelum parsing.
Output: Data konsisten
Hindari parsing XML dari sumber tidak tepercaya
Description: XML External Entity (XXE) attack bisa terjadi jika parser tidak dikonfigurasi dengan aman.
Example:
Nonaktifkan eksternal entity dan DTD processing di parser.
Output: Terhindar dari XXE
Gunakan Namespace untuk integrasi
Description: Saat menggabungkan XML dari berbagai sumber, namespace mencegah konflik.
Example:
<root xmlns:ns1="..." xmlns:ns2="...">
Output: Tidak ada konflik elemen