XML ဖိုင်များကိုပြုပြင်သည့်အခါ Namespace သည်လျစ်လျူရှုမရနိုင်သောအရေးကြီးသောအယူအဆတစ်ခုဖြစ်သည်။ Namespace သည် XML စာရွက်စာတမ်းများတွင်တူညီသောအမည်နှင့်အတူတူပင်နာမည်များကိုခွင့်ပြုထားသည်။ သို့သော် namespace များစွာပါ 0 င်သည့် XML စာရွက်စာတမ်းများကိုခွဲခြမ်းစိတ်ဖြာခြင်းတွင်ပ conflicts ိပက်ခများသို့မဟုတ်ခွဲခြမ်းစိတ်ဖြာမှုများဖြစ်ပေါ်နိုင်ဆဲဖြစ်သည်။ ဤဆောင်းပါးသည် PHP တွင် XML_set_Ennamnonface_Decl_Handler ကို PHP တွင်အသုံးပြုရမည်။
XML_set_Ennamespace_Decl_Handler သည် php မှပေးသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်ပြီး parser သည် namester ကြေငြာချက်၏အဆုံးကိုစစ်ဆေးသည့်အခါ processor function ကိုတည်ဆောက်ရန်ဖြစ်သည်။ XML_SESS_STATT_START_START_DECTACL_DECL_Handler ကို အသုံးပြု. သင့်လျော်သောအသံသွင်းခြင်း, သန့်ရှင်းရေးလုပ်ခြင်းသို့မဟုတ်ယုတ္တိရှိသည့်သို့မဟုတ်ယုတ္တိရှိသည့်ပြုပြင်ခြင်းအတွက်ခွင့်ပြုသည်။
function ကိုလက်မှတ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
bool xml_set_end_namespace_decl_handler(resource $parser, callable $handler)
XML parser အရင်းအမြစ်ကို XML parser အရင်းအမြစ်တစ်ခုဖြစ်သော XML parser အရင်းအမြစ်ဖြစ်သော XML_Parser_create မှတဆင့်ဖန်တီးထားသော $ handler သည်အသုံးပြုသူသတ်မှတ်ထားသော callback function ဖြစ်သည်။
များသောအားဖြင့် Namespace ပ conflicts ိပက်ခများသည်များသောအားဖြင့်အောက်ပါအခြေအနေများတွင်ပေါ်ပေါက်သည်။
အသိုက် XML စာရွက်စာတမ်းများရှိဒြပ်စင်မျိုးစုံသည်တူညီသောရှေ့ဆက်ကိုကြေငြာသော်လည်းကွဲပြားခြားနားသော URIS ကိုချည်နှောင်ထားသည် ။
XML စာရွက်စာတမ်းများကိုမတူညီသောထုတ်လုပ်သူများသို့မဟုတ်စနစ်များဖြင့်ထုတ်လုပ်မှုကိုခွဲခြမ်းစိတ်ဖြာခြင်းကိုခွဲခြမ်းစိတ်ဖြာခြင်းသည်ယူနီဖောင်းမဟုတ်ပါ ,
အဆိုပါ namespace မှန်ကန်စွာအဆုံးသတ်မထားဘူး, နောက်ဆက်တွဲဒြပ်စင်ခွဲခြမ်းစိတ်ဖြာခြင်းအမှားများကိုဖြစ်ပေါ်စေသည် ။
NAMSTARE ၏ Start နှင့် End processing function များကိုမှန်ကန်စွာအသုံးပြုခြင်းအားဖြင့် namespace တစ်ခုချင်းစီ၏လုပ်ဆောင်မှုအတိုင်းအတာကိုအခြားခွဲခြမ်းစိတ်ဖြာခြင်းယုတ္တိဗေဒကိုရှောင်ရှားရန်ထွက်ခွာချိန်၌ပြုလုပ်နိုင်သည်။
XML_set_Ennamnamnonface_Decl_Handler ကို အသုံးပြု. Empty Asspress_Handler ကို အသုံးပြု. အပြည့်အစုံပုံသက်သေဖြစ်သည်။
<?php
$xml = <<<XML
<?xml version="1.0"?>
<root xmlns:ns1="http://gitbox.net/ns1" xmlns:ns2="http://gitbox.net/ns2">
<ns1:item>Item 1</ns1:item>
<ns2:item>Item 2</ns2:item>
</root>
XML;
$parser = xml_parser_create_ns();
xml_set_start_namespace_decl_handler($parser, function($parser, $prefix, $uri) {
echo "Start Namespace Decl: Prefix = $prefix, URI = $uri\n";
});
xml_set_end_namespace_decl_handler($parser, function($parser, $prefix) {
echo "End Namespace Decl: Prefix = $prefix\n";
});
xml_set_element_handler($parser,
function($parser, $name, $attrs) {
echo "Start Element: $name\n";
},
function($parser, $name) {
echo "End Element: $name\n";
}
);
xml_parse($parser, $xml, true);
xml_parser_free($parser);
?>
ရလဒ်ဥပမာ:
Start Namespace Decl: Prefix = ns1, URI = http://gitbox.net/ns1
Start Namespace Decl: Prefix = ns2, URI = http://gitbox.net/ns2
Start Element: root
Start Element: ns1:item
End Element: ns1:item
Start Element: ns2:item
End Element: ns2:item
End Element: root
End Namespace Decl: Prefix = ns2
End Namespace Decl: Prefix = ns1
ခွဲခြမ်းစိတ်ဖြာမှု၏အစတွင် namespace အချက်အလက်များကိုမှတ်တမ်းတင်ခြင်းနှင့်နောက်ဆက်တွဲခွဲခြမ်းစိတ်ဖြာမှုအတွက်မြေပုံ table ကိုဖန်တီးပါ ။
အခြား scopes များတွင် "ညစ်ညမ်းစေသော" အသုံးပြုခြင်းကိုရှောင်ရှားရန်အဆုံးအပြောင်းအလဲနဲ့လုပ်ဆောင်ချက်ရှိမြေပုံကိုရှင်းလင်းပါ ။
NAMSTARE အသိုက်အဆင့်ကိုမှတ်တမ်းတင်ရန်နှင့်အလွှာပေါင်းစုံအသိုက်ဖွဲ့စည်းပုံကိုညှိနှိုင်းရန်နှင့်အလွှာပေါင်းစုံသောအသိုက်ဖွဲ့စည်းပုံကိုညှိနှိုင်းရန် stack stack stack stack starge နှင့်ညှိနှိုင်းဆောင်ရွက်ပါ ။
ယုတ္တိဖြန့်ဖြူးမှုသည်မတူညီသော URIS အတွက်အကောင်အထည်ဖော်မှုကိုမတူကွဲပြားသော URIS များနှင့်သက်ဆိုင်သည် ။
XML namespace များကိုကိုင်တွယ်ခြင်းသည်လွယ်ကူသောအလုပ်တစ်ခုမဟုတ်ဘဲအထူးသဖြင့် Multi-source data fusion သို့မဟုတ်အလွန်အသိုက် XML ဖွဲ့စည်းတည်ဆောက်ပုံများတွင်မလွယ်ကူပါ။ PHP တွင် XML_SESS_END_ENDPACHACHACHARDL_Handler ကဲ့သို့သော parser functions များဖြင့် Namespace Life Cycle ကိုပိုမိုတိကျစွာစီမံနိုင်သည်။ ဤအခြေခံလုပ်ဆောင်မှုများကိုအသုံးပြုသည်ကိုကျွမ်းကျင်သည်။ XML ဒေတာကိုင်တွယ်သူများကိုတည်ဆောက်ရန်အလွန်အရေးကြီးသည်။