មេរៀនទី២៨: មេរៀន XML-កំរិតខ្ពស់

មេរៀន XML Namespaces
Name Conflicts ឈ្មោះជាន់គ្នា
ក្នុង XML មានឈ្មោះធាតុត្រូវបានកំណត់ដោយការអភិវឌ្ឍ។ នេះជាលទ្ធផលដែលជាញឹកញាប់នៅក្នុងឈ្មោះជាន់គ្នាមួយនៅពេលដែលកំពុង ព្យាយាមដើម្បីបញ្ចូលឯកសារ XML ដែលបានមកពីកម្មវិធី XML ដែលផ្សេងគ្នា។
XML មានពត៌មាននេះអនុវត្ដតារាង HTML ដែល:
Apples | Bananas |
នេះ XML មានព័ត៌មានអំពីការអនុវត្ដតារាង មួយ:
ប្រសិនបើទាំងនេះបំណែក XML ដែលត្រូវបានបន្ថែមជាមួយគ្នា វានឹងមានឈ្មោះជាន់គ្នា។
ទាំងពីរមានធាតុ
XML Namespaces – The xmlns Attribute
នៅពេលដែលការប្រើបុព្វបទក្នុង XML មានមួយដែលគេហៅថា Namespaceសម្រាប់បុព្វបទត្រូវតែបានកំណត់។ Namespace ចន្លោះឈ្មោះនេះត្រូវបានកំណត់ដោយ xmlns attribute ស្លាកនៅក្នុងការចាប់ផ្តើមនៃធាតុមួយ។ ការប្រកាសចន្លោះឈ្មោះមានវាក្យសម្ព័ន្ធដូចខាងក្រោម។ xmlns: បុព្វបទ = ” URI ដែលបាន “។
Namespaces លំហឈ្មោះអាចត្រូវបានប្រកាសថានៅក្នុងធាតុដែលជាកន្លែងដែលពួកគេ ត្រូវបានប្រើឬនៅក្នុងធាតុ XML មានរបស់ root:
Default Namespaces កំណត់ចន្លោះ Default Namespacesឈ្មោះលំនាំដើមសម្រាប់ធាតុរក្សាទុកពួកយើងពីការប្រើ បុព្វបទទាំងអស់នៅក្នុងធាតុកូន។ វាមានវាក្យសម្ព័ន្ធដូចខាងក្រោម:
xmlns=”namespaceURI”
XML មានពត៌មាននេះអនុវត្ដតារាង HTML ដែល:
Apples | Bananas |
XML ដែលនេះអនុវត្ដព័ត៌មានអំពីបំណែកនៃគ្រឿងសង្ហារឹមមួយ:
Namespaces in Real Use XSLT គឺជាភាសា XML មួយដែលអាចត្រូវបានប្រើដើម្បីបម្លែងឯកសារទៅជាទ្រង់ទ្រាយ XML មួយផ្សេងទៀតដូចជា HTML ។ នៅក្នុងឯកសារ XSLT នៅខាងក្រោមអ្នកអាចមើលឃើញថាភាគច្រើនបំផុតនៃស្លាកដែលមានស្លាក HTML ។
ស្លាកដែលមិនមានស្លាក HTML មានបុព្វបទ xsl, បានកំណត់អត្តសញ្ញាណដោយ xmlns លំហឈ្មោះ: xsl = “http://www.w3.org/1999/XSL/Transform”:
My CD Collection
Title | Artist |
---|---|
មេរៀន XML CDATA PCDATA – Parsed Character Data
ឧបករណ៍ញែក XML ដែលជាធម្មតាទាំងអស់ញែកអត្ថបទនៅក្នុងឯកសារ XML ។
នៅពេលដែលធាតុ XML ដែលត្រូវបានញែកអត្ថបទរវាងស្លាក XML ដែលត្រូវបានញែកផងដែរ:
ឧបករណ៍ញែកធ្វើនេះព្រោះធាតុ XML ដែលអាចមានធាតុផ្សេងទៀតដូចនៅក្នុងឧទាហរណ៍នេះជាកន្លែងដែលធាតុ
និងការញែកនឹងបំបែកវាឡើងទៅជាអនុធាតុដូចនេះ:
ញែកទិន្នន័យតួអក្សរ (PCDATA) គឺជាពាក្យដែលត្រូវបានប្រើអំពីទិន្នន័យជាអត្ថបទដែលនឹងត្រូវបាន ញែកដោយឧបករណ៍ញែក XML មាននោះទេ។
CDATA – (Unparsed) Character Data
ការ CDATA រយៈគឺត្រូវបានប្រើទិន្នន័យអំពីអត្ថបទដែលមិនគួរត្រូវបានញែកដោយឧបករណ៍ញែក XML មាននោះទេ។
តួអក្សរដូចជា “<” និង “&” គឺខុសច្បាប់នៅក្នុងធាតុ XML មាន។
“<” នឹងបង្កើតកំហុសមួយបានទេព្រោះឧបករណ៍ញែកដែលបានបកប្រែវាជាការចាប់ផ្តើមនៃធាតុថ្មីមួយ។
“&” នឹងបង្កើតកំហុសមួយបានទេព្រោះឧបករណ៍ញែកដែលបានបកប្រែវាជាការចាប់ផ្តើមនៃធាតុតួអក្សរមួយ។
អត្ថបទមួយចំនួនដូចជាកូដការអនុញ្ញាត JavaScript, មានច្រើននៃការ “<” ឬ “&” តួអក្សរ។ ដើម្បីជៀសវាងកូដ
កំហុសស្គ្រីបអាចត្រូវបានកំណត់ជា CDATA ។
មេរៀន XML Encoding
XML Encoding Errors
ប្រសិនបើអ្នកផ្ទុកឯកសារ XML អ្នកអាចទទួលបានចំនួនពីរផ្សេងគ្នាដែលចង្អុលបង្ហាញបញ្ហាកំហុស អ៊ិនកូដ encoding:តួអក្សរមិនត្រឹមត្រូវត្រូវបានរកឃើញក្នុងមាតិការបស់ អត្ថបទ។ អ្នកទទួលបានកំហុសនេះប្រសិនបើ XML ការរបស់អ្នកមានតួអក្សរមិនមែន ASCII នេះ, និងឯកសារនេះត្រូវបានរក្សាទុកជា ANSI Single-byte (ឬតែ ASCII) ជាមួយនឹងការអ៊ិនកូដ encodingដែលបានបញ្ជាក់ទេ។
ប្តូរពីការអ៊ិនកូដបច្ចុប្បន្នទៅការអ៊ិនកូដ encoding ដែលបានបញ្ជាក់មិនត្រូវបានគាំទ្រ។អ្នកទទួលបានកំហុសនេះប្រសិនបើ ឯកសារ XML របស់អ្នកត្រូវបានរក្សាទុកជាយូនីកូដទ្វេដងបៃ (ឬ UTF-16) ជាមួយនឹងការអ៊ិនកូដ Single-Byte (ការ Windows 1252, ប្រភេទ ISO-8859-1 ជា UTF-8) ដែលបានបញ្ជាក់។អ្នកក៏ទទួលកំហុសនេះប្រសិនបើឯកសារ XML របស់អ្នកត្រូវបានរក្សាទុកជាមួយនឹងការតែមួយ ANSI-បៃ (ឬតែ ASCII) ដោយមានការអ៊ិនកូដencoding single-byte ANSI (ជា UTF-16) ដែលបានបញ្ជាក់។
Windows Notepad រក្សាទុកឯកសារដែលជា Single-បៃ ANSI (ASCII នេះ) ដោយលំនាំដើម។ប្រសិនបើអ្នកជ្រើស “រក្សាទុកជា … “, អ្នកអាចបញ្ជាក់ពីរដងបៃយូនីកូដ (UTF–16) ។ រក្សាទុកឯកសារ XML ខាងក្រោមដូចជាយូនីកូដ
(ចំណាំថាឯកសារមិនមានគុណលក្ខណៈការអ៊ិនកូដណាមួយ):
encoding អ៊ិនកូឌ័ដូចខាងក្រោម (open it), នឹងផ្ដល់ឱ្យអ្នកនូវសារកំហុសមួយ::
encoding អ៊ិនកូឌ័ដូចខាងក្រោម (open it), នឹងផ្ដល់ឱ្យអ្នកនូវសារកំហុសមួយ::
encoding អ៊ិនកូឌ័ដូចខាងក្រោម (open it), នឹងផ្ដល់ឱ្យអ្នកនូវសារកំហុសមួយ::
encodingអ៊ិនកូឌ័ដូចខាងក្រោម (open it), នឹងផ្ដល់ឱ្យអ្នកនូវសារកំហុសមួយ::
មេរៀន XML លើ Server
ការផ្ទុក XML Files លើ Server
ឯកសារ XML អាចត្រូវបានរក្សាទុកនៅលើម៉ាស៊ីនបម្រើអ៊ីនធឺណិតពិតជាវិធីដូចគ្នាជាឯកសារ HTML ។
ចាប់ផ្តើមរបស់ Windows Notepad ហើយសរសេរជាបន្ទាត់ដូចខាងក្រោម:
រក្សាទុកឯកសារនៅលើម៉ាស៊ីនបម្រើ Server បណ្ដាញរបស់អ្នកជាមួយឈ្មោះសមរម្យមួយដូចជា “note.xml” ។
បង្កើត XML មានពីមូលដ្ឋានទិន្នន័យមួយ XML ដែលអាចត្រូវបានបង្កើតពីមូលដ្ឋានទិន្នន័យដោយគ្មានការណាមួយដែល បានដំឡើងកម្មវិធី software របស់ XML ។ ដើម្បីបង្កើតការឆ្លើយតបជាមួយមូលដ្ឋានទិន្នន័យពីម៉ាស៊ីនបម្រើ XML មួយគ្រាន់តែសរសេរកូដដូចខាងក្រោមហើយរក្សាទុកវាជាឯកសារ ASP មួយនៅលើម៉ាស៊ីនបម្រើតំបន់បណ្តាញនេះ:
<%
response.ContentType = “text/xml”
set conn=Server.CreateObject(“ADODB.Connection”)
conn.provider=”Microsoft.Jet.OLEDB.4.0;”
conn.open server.mappath(“/db/database.mdb”)
sql=”select fname,lname from tblGuestBook”
set rs=Conn.Execute(sql)
response.write(“”)
response.write(“
while (not rs.EOF)
response.write(“
response.write(“
response.write(“
response.write(“
rs.MoveNext()
wend
rs.close()
conn.close()
response.write(“
”)
%> រក្សា XML ទៅជា File ដោយប្រើ ASP
ឧទាហរណ៏ ASP បង្កើតឯកសារ XML ដែលមានលក្ខណៈសាមញ្ញនិងរក្សាទុកវានៅលើម៉ាស៊ីនបម្រើ:
<%
text=”
text=text & “
text=text & “
text=text & “
text=text & “Don’t forget me this weekend!”
text=text & “
set xmlDoc=Server.CreateObject(“Microsoft.XMLDOM”)
xmlDoc.async=false
xmlDoc.loadXML(text)
xmlDoc.Save(“test.xml”)
%>
មេរៀន XML DOM Advanced
ទទួលតម្លៃនៃ Elementមួយ
ឧទាហរណ៍ដូចខាងក្រោមទៅយកតម្លៃអត្ថបទនៃធាតុ
ឧទាហរណ៏
txt=xmlDoc.getElementsByTagName(“title”)[0].childNodes[0].nodeValue;
ការបង្កើត New Attribute ការបង្កើត setAttribute XML មានរបស់ DOM () វិធីសាស្ដ្រអាចត្រូវបានប្រើដើម្បីផ្លាស់ប្តូរតម្លៃនៃគុណលក្ខណៈ ដែលមានស្រាប់មួយឬដើម្បីបង្កើតគុណលក្ខណៈថ្មី។
ខាងក្រោមនេះបង្ហាញ new attribute (edition=”first”) ទៅ
ឧទាហរណ៍
x=xmlDoc.getElementsByTagName(“book”);
for(i=0;i
x[i].setAttribute(“edition”,”first”);
}
បង្កើតធាតុថ្មី Element
ការបង្កើត createElement XML មានរបស់ DOM ()
វិធីសាស្រ្តបង្កើតថ្នាំងធាតុថ្មី។ វិធីសាស្ត្រ XML មានរបស់ DOM
createTextNode () នឹងបង្កើតថ្នាំងអត្ថបទថ្មី។ ការ appendChild XML
មានរបស់ DOM () វិធីសាស្ដ្របន្ថែមថ្នាំងមួយទៅថ្នាំងកូន
(បន្ទាប់ពីកូនចុងក្រោយ) មួយ។
ដើម្បីបង្កើតធាតុថ្មីដែលមានមាតិកាអត្ថប,
វាជាការចាំបាច់ដើម្បីបង្កើតទាំងពីរថ្នាំងធាតុថ្មីមួយនិងការ
ថ្នាំងអត្ថបទថ្មីមួយហើយបន្ទាប់មកបន្ថែមវាទៅថ្នាំងមួយដែលមាន
ស្រាប់។
ឧទាហរណ៍ដូចខាងក្រោមបង្កើតធាតុថ្មី
(
ឧទាហរណ៏
newel=xmlDoc.createElement(“edition”);
newtext=xmlDoc.createTextNode(“First”);
newel.appendChild(newtext);
x=xmlDoc.getElementsByTagName(“book”);
x[0].appendChild(newel);
Remove ធាតុ Element មួយចេញ
ឧទាហរណ៍ដូចខាងក្រោមយកថ្នាំងដំបូងគេនៅក្នុងធាតុ
ឧទាហរណ៏
x=xmlDoc.getElementsByTagName(“book”)[0];
x.removeChild(x.childNodes[0]);
មេរៀន XML Data Islands
XML Data Island
ចងឯកសារ XML ដែលទៅស្លាក
ឧទាហរណ៏
ឧទាហរណ៏នេះធ្វើការតែនៅក្នុង IE
គុណលក្ខណៈ datasrc នៃស្លាក