လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> XML namespace ကို Prefix နှင့် URI မြေပုံကိုမည်သို့မှန်ကန်စွာကိုင်တွယ်ရမည်နည်း။

XML namespace ကို Prefix နှင့် URI မြေပုံကိုမည်သို့မှန်ကန်စွာကိုင်တွယ်ရမည်နည်း။

M66 2025-08-05

1 ။ XML namespace ဆိုတာဘာလဲ။

XML ရှိဒြပ်စင်များနှင့် attribute တွေအကြား naming ပ conflicts ိပက်ခများကိုဖြေရှင်းရန် XML အမည်များကိုအသုံးပြုသည်။ ပုံမှန်အားဖြင့်အမည်များကို URIS မှဖော်ထုတ်ထားပြီးရှေ့ဆက်များသည် namespace များကိုရည်ညွှန်းကိုးကားချက်များကိုရိုးရှင်းစေသည်။ ဥပမာအားဖြင့်, အောက်ပါ XML စာရွက်စာတမ်းတွင်အမည်စာရင်းနှစ်ခုပါရှိသည်။

 <book xmlns:ns1="http://www.example.com/ns1"
      xmlns:ns2="http://www.example.com/ns2">
    <ns1:title>PHP Programming</ns1:title>
    <ns2:author>John Doe</ns2:author>
</book>

ဤဥပမာတွင် NS1 နှင့် NS2 သည် http://www.example.com/ns1 နှင့် http://www.xample.com/ns2 သို့ချိတ်ဆက်ထားသည့်အမည်များနှစ်မျိုးအတွက်ရှေ့ဆက်များဖြစ်သည်။


2 ။ quisterxpathernesnespace ကိုအသုံးပြုပြီး namespace ကိုမှတ်ပုံတင်ပါ

PHP တွင် XPather Query ကိုအသုံးပြုသောအခါ, ဤအမည်များကိုမှန်ကန်စွာခွဲခြမ်းစိတ်ဖြာရန် PHP သည် RegisterxPatherDophace Method ကိုထောက်ပံ့ပေးနိုင်သည်။ ၎င်းသည် URI သို့ရှေ့ဆက်ကိုမြေပုံဆွဲရန်ခွင့်ပြုသည်။

ဥပမာအားဖြင့်ကျွန်ုပ်တို့သည် PHP တွင်အထက်ပါ XML စာရွက်စာတမ်းမှ ခေါင်းစဉ် နှင့်စာရေးသူ၏ခေါင်းစဉ်နှင့် စာရေးသူ element များကိုထုတ်ယူလိုပါကအောက်ပါကုဒ်ကိုသုံးနိုင်သည်။

 $xml = new DOMDocument();
$xml->loadXML($xmlString);

$xpath = new DOMXPath($xml);

// namespace ကိုမှတ်ပုံတင်ပါ
$xpath->registerNamespace('ns1', 'http://www.example.com/ns1');
$xpath->registerNamespace('ns2', 'http://www.example.com/ns2');

// မေးမြန်း
$title = $xpath->evaluate('string(//ns1:title)');
$author = $xpath->evaluate('string(//ns2:author)');

echo "Title: " . $title . "\n";
echo "Author: " . $author . "\n";

ဒီဥပမာမှာ NS1 နဲ့ NS2 ရှေ့ဆက်တွေကိုသူတို့ရဲ့သက်ဆိုင်ရာ URIs တွေဆီကိုမြေပုံဆွဲရန် register ည့်သည်စင်တာကို အသုံးပြုသည်။ ထို့နောက်ကျွန်ုပ်တို့သည် XML စာရွက်စာတမ်းရှိ element များကို actement များကို access လုပ်ရန် XPath Query တွင်ဤရှေ့ဖာရာအောင်ကိုသုံးနိုင်သည်။


3 ။ dynamic namespaces ကိုင်တွယ်

တခါတရံတွင် XML စာရွက်စာတမ်းများတွင်ကွဲပြားခြားနားသော namespace မျိုးစုံပါ 0 င်နိုင်ပြီးဤအမည်စာရင်းများ၏ရှေ့ဆက်နှင့် URI မြေပုံများကိုပုံမှန်လုပ်ဆောင်ရန်လိုအပ်သည်။ ဤကိစ္စတွင်ကျွန်ုပ်တို့သည်သက်ဆိုင်ရာအမည်များအားလုံးကိုကိုင်တွယ်ရန် Registerxpatheware ကို သုံးနိုင်သည်။

ဒီနေရာမှာ namespace မျိုးစုံကိုဘယ်လိုကိုင်တွယ်ရမယ်ဆိုတာပြတဲ့ပိုပြီးရှုပ်ထွေးတဲ့ဥပမာတစ်ခုပါ။

 $xmlString = file_get_contents('http://m66.net/somefile.xml'); // ယူဆချက် XML မှ URL ဝန်တင်

$xml = new DOMDocument();
$xml->loadXML($xmlString);

$xpath = new DOMXPath($xml);

// အားလုံး namespace ရယူပါ
$namespaces = $xpath->query('/*[namespace-uri()]');

foreach ($namespaces as $namespace) {
    $prefix = $namespace->prefix;
    $uri = $namespace->namespaceURI;

    // namespace တစ်ခုချင်းစီကိုမှတ်ပုံတင်ပါ
    $xpath->registerNamespace($prefix, $uri);
}

// မေးမြန်း包含命名空间的元素
$elements = $xpath->query('//ns1:item');
foreach ($elements as $element) {
    echo $element->nodeValue . "\n";
}

ဤဥပမာတွင်ကျွန်ုပ်တို့သည် namespace များအားလုံးကို dynameface များအားလုံးကို uri နှင့် nampace တစ်ခု၏ရှေ့ပြေးမှုတစ်ခုစီကို RegisterNamEMSARE သို့ အသုံးပြု. XPath Question သို့ uri rou သို့ရှေ့ဆက်ကိုမြေပုံဆွဲထားသည်။ ၎င်းသည်ကျွန်ုပ်တို့အား namespace ၏တိကျသောအကြောင်းအရာများကိုမသိရဘဲ XPath Conferces များ၌ XPath Queries များဖြင့်လုပ်ဆောင်ရန်ခွင့်ပြုသည်။


url အတွက်ဒိုမိန်းအမည်အစားထိုး domain name အစားထိုး

အချို့ဖြစ်ရပ်များတွင်ကျွန်ုပ်တို့၏ XML ဖိုင်၏ URL တွင် domain name information အချို့ကိုတိုက်ရိုက်ပါ 0 င်နိုင်သည်။ အကယ်. ဤ URL များကို XPath Query တွင်လုပ်ဆောင်လိုပါက၎င်းတို့၏ဒိုမိန်းများကိုယူနီဖောင်းတန်ဖိုးများဖြင့်အစားထိုးနိုင်သည်။ ဥပမာအားဖြင့်ကျွန်ုပ်တို့သည် XPath Query ၏တည်ငြိမ်မှုကိုသေချာစေရန် M66.net နှင့်အတူပြင်ပ URLs အားလုံး၏ဒိုမိန်းအမည်ကိုအစားထိုးနိုင်သည်။

ဥပမာအားဖြင့်, XML ဖိုင်ကိုတင်သည့်အခါ URL တွင် domain name ကိုအောက်ပါကုဒ်နံပါတ်ဖြင့်အစားထိုးနိုင်သည်။