XML စာရွက်စာတမ်းများကိုခွဲခြမ်းစိတ်ဖြာသည့်အခါ Namespace အသုံးပြုခြင်းသည် element and attribute names များအကြားပ conflict ိပက်ခများကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။ PHP ၏ XML Parser (Expat အပေါ် အခြေခံ. ) XML ဖိုင်များကို names များရှိသည့် XML ဖိုင်များကိုလုပ်ဆောင်ရန် (Expat အပေါ် အခြေခံ. ) ကို အသုံးပြု. NAMSTARESS အစနှင့်အစကိုကျိုးကြောင်းဆီလျော်စွာစီမံရန်အထူးအရေးကြီးသည်။
ဤဆောင်းပါးသည် xml_set_end_endnamonface_Decl_Handler ကိုမည်သို့အသုံးပြုရမည်ကိုအာရုံစိုက်မည်ဆိုလျှင် Namespaces မျိုးစုံအဆုံးသတ်သည့်အခြေအနေကိုကိုင်တွယ်ရန် XML ဖွဲ့စည်းပုံကိုမှန်ကန်စွာခွဲခြမ်းစိတ်ဖြာနိုင်အောင်ပြုလုပ်နိုင်သည်။
XML_SESS_END_EnD_STAST_DECL_HANDER သည် NAMSER ကြေငြာချက်၏အဆုံးကိုတွေ့သောအခါ php မှပေးသောပရိုဆက်ဆာ (callback function) ကိုသတ်မှတ်ရန်လုပ်ဆောင်သည်။ ၎င်း၏ရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -
bool xml_set_end_namespace_decl_handler(XMLParser $parser, callable $handler)
XML_Parser_create () ကဖန်တီးထားသော parser ၏ parser အရင်းအမြစ်တစ်ခုဖြစ်သော parser အရင်းအမြစ် ဖြစ်သည် ။
XML ဖွဲ့စည်းပုံကိုအောက်ပါအတိုင်းမြင်ယောင်ကြည့်ပါ။
<root xmlns:h="http://gitbox.net/html" xmlns:f="http://gitbox.net/form">
<h:table>
<f:input type="text"/>
</h:table>
</root>
အထက်ပါ XML နှင့် F သည် ကွဲပြားခြားနားသောအမည်များဖြစ်သည်။ သူတို့၏နယ်ပယ်သည် <rolot> tag တစ်လျှောက်လုံးတွင်ပိုမိုရှုပ်ထွေးသောစာရွက်စာတမ်းများတွင်အသိုက်အဖုံးအုပ်စိုးသောနေရာများပေါ်လာလိမ့်မည်။
အရင်းအမြစ်များကိုမှတ်တမ်းတင်ခြင်း, စစ်ဆေးခြင်း, ဖြန့်ချိခြင်း,
xml_set_end_ennamespace_Decl_handler ကိုအသုံးပြုပြီး namespace ရဲ့အဆုံးကိုဘယ်လိုကိုင်တွယ်ရမယ်ဆိုတာပြတဲ့အပြည့်စုံတဲ့ဥပမာတစ်ခုပါ။
<?php
$xml = <<<XML
<root xmlns:h="http://gitbox.net/html" xmlns:f="http://gitbox.net/form">
<h:table>
<f:input type="text"/>
</h:table>
</root>
XML;
// ဖန်တီး XML မိစ်ဆာ
$parser = xml_parser_create_ns();
// namespace end processor ကိုသတ်မှတ်ပါ
xml_set_end_namespace_decl_handler($parser, function($parser, $prefix) {
echo "namespace ၏အဆုံး: ရေှ့ဆက်တဲှ = $prefix\n";
});
// default element processor ကိုသတ်မှတ်ပါ
xml_set_element_handler($parser,
function($parser, $name, $attrs) {
echo "Element ကိုစတင်ပါ: $name\n";
},
function($parser, $name) {
echo "Ender: $name\n";
}
);
// သုံးသပ်ကြည့်ရှုခြင်း XML အချက်များ
if (!xml_parse($parser, $xml, true)) {
die(sprintf(
"XML အမှား: %s အတွက် %d အိုကေ",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)
));
}
// 释放မိစ်ဆာ资源
xml_parser_free($parser);
?>
အထက်ပါကုဒ်ကိုသင်ဖွင့်သောအခါအောက်ပါနှင့်ဆင်တူသည့် output ကိုသင်တွေ့လိမ့်မည်။
Element ကိုစတင်ပါ: root
Element ကိုစတင်ပါ: h:table
Element ကိုစတင်ပါ: f:input
Ender: f:input
Ender: h:table
Ender: root
namespace ၏အဆုံး: ရေှ့ဆက်တဲှ = h
namespace ၏အဆုံး: ရေှ့ဆက်တဲှ = f
သင်မြင်နိုင်ပါသည်, စာရွက်စာတမ်း၏အစတွင်အမည်များကြေ ငြာ သော်လည်း <root> element ကိုပိတ်ထားသည့်အခါသူတို့၏နယ်ပယ်သည်အမှန်တကယ်အဆုံးသတ်သွားသည်။
parser တစ်ခုဖန်တီးရန် XML_Parser_create_ns () ကို အသုံးပြုပါက Namespace Processor သည်အကျိုးသက်ရောက်နိုင်သည်။
xml_set_Ennamespace_Decl_handler ၏ callback function သည် parameter နှစ်ခုကိုသာရရှိသည်။ Parser အရင်းအမြစ်နှင့် Namespace ရှေ့ဆက်ရှေ့ဆက်။
တစ်ချိန်တည်းမှာနာမည်နိမ့်ကျသွားသည့်အခါ, namespace တစ်ခုစီအတွက် callback ကိုတစ်ကြိမ်သာခေါ်ဆိုလိမ့်မည်။
XML_set_Ennonface_Decl_Handler function ကို PHP developer များသည်အထူးသဖြင့်ရှုပ်ထွေးသော XML စာရွက်စာတမ်းများနှင့်ဆက်ဆံရာတွင် Namespace Life Cycle ကိုတိကျစွာထိန်းချုပ်နိုင်သည်။ 0 န်ဆောင်မှုများနှင့် configuration file parsing ကဲ့သို့သောအခြေအနေများတွင်မှန်ကန်သောဒေတာလုပ်ဆောင်နိုင်စွမ်းကိုသေချာစေရန်အတွက်ပရိုဆက်ဆာကိုပေါင်းစပ်ထားသောပရိုဆက်ဆာကိုပေါင်းစပ်ခြင်း။