Časti lokality
Výber redaktora:
- Siete prenosu údajov v priemyselných riadiacich systémoch Proces decentralizovaného dopytovania podsystému
- Metódy parametrickej identifikácie riadiacich objektov
- Reléová ochrana elektrických systémov
- Triedy a priestory názvov Používanie a deklarovanie priestorov názvov
- Bieloruský bloger. Ako sa máš? Hovoria bieloruskí módni blogeri. O „nervových“ príspevkoch a postojoch čitateľov k nim
- Brožúra na tému "počítač a deti" Správna poloha rúk
- Snowboarding: ako to všetko začalo?
- Foto, kde sa nachádza na mape sveta, popis
- Stiahnite si lístky na vlak pre cestujúcich Russian Railways pre Android v
- Ako používať svoj osobný účet a kontrolovať svoj účet v Intertelecom Assa
Reklama
Triedy a menné priestory. Triedy a priestory názvov Používanie a deklarovanie priestorov názvov |
Triedy a priestory názvov triedy .NET FrameworkSnáď najväčšou výhodou písania riadeného kódu – aspoň z pohľadu vývojára – je, že ho môžete používať Knižnica základnej triedy .NET . Triedy jadra .NET poskytujú obrovskú zbierku tried spravovaného kódu, ktoré vám umožňujú vyriešiť takmer akýkoľvek problém, ktorý sa predtým dal vyriešiť pomocou Windows API. Všetky tieto triedy sledujú rovnaký objektový model IL s jedinou dedičnosťou. To znamená, že môžete buď vytvárať objekty z ktorejkoľvek zo základných tried .NET alebo z nich dediť svoje vlastné triedy. Základné triedy .NET sa líšia tým, že sú navrhnuté tak, aby boli intuitívne a ľahko použiteľné. Napríklad, ak chcete spustiť vlákno, musíte zavolať metódu Start() triedy Niť. Ak chcete, aby objekt TextBox bol nedostupný, nastavte vlastnosť objektu Enabled na hodnotu false. Tento prístup, ktorý poznajú vývojári Visual Basic a Java, ktorých knižnice sa rovnako ľahko používajú, bude obrovskou úľavou pre vývojárov C++, ktorí roky zápasia s funkciami API, ako sú GetDIBits(), RegisterWndClassEx() a IsEqualIID(). ako aj mnoho funkcií, ktoré si vyžadovali prechod cez kľučky okien. Vývojári jazyka C++ však mali vždy ľahký prístup ku kompletnej sade Windows API, zatiaľ čo vývojári Visual Basic 6 a Java boli obmedzení na základné funkcie operačného systému, ku ktorým majú prístup zo svojich jazykov. Základné triedy .NET kombinujú jednoduchosť používania knižníc Visual Basic a Java s relatívne úplným pokrytím sady funkcií Windows API. Mnoho funkcií systému Windows nie je prístupných prostredníctvom základných tried a v týchto prípadoch sa budete musieť uchýliť k funkciám API, ale vo všeobecnosti to platí len pre tie najexotickejšie funkcie. Na každodenné použitie bude vo všeobecnosti postačovať sada základných tried. Ak ale potrebujete zavolať funkciu API, tak .NET poskytuje tzv mechanizmus vyvolávania platformy, ktorý zaručuje správnu konverziu dátových typov, takže teraz táto úloha nie je o nič ťažšia ako volanie týchto funkcií priamo z kódu C++, bez ohľadu na to, v akom jazyku je kód napísaný - C#, C++ alebo Visual Basic 2010. Menné priestoryMenné priestory je spôsob, ktorým sa .NET vyhýba konfliktom mien medzi triedami. Majú zabrániť situáciám, keď definujete triedu, ktorá predstavuje zákazníka, nazvete ju Customer a potom niekto iný urobí to isté (toto je pomerne bežný scenár). Menný priestor nie je nič iné ako skupina dátových typov, ale má za následok, že názvy všetkých dátových typov v rámci menného priestoru sú automaticky označené predponou s názvom menného priestoru. Menné priestory môžu byť vnorené do seba. Napríklad väčšina základných tried .NET na všeobecné účely sa nachádza v priestore názvov Systém. Základná trieda Pole odkazuje na tento priestor, takže jeho celý názov je System.Array. Platforma .NET vyžaduje, aby boli všetky názvy deklarované v rámci menného priestoru; môžete napríklad zadať svoju triedu Moja trieda do menného priestoru Moja spoločnosť. Potom bude vyzerať celý názov tejto triedy MyCompany.MyClass. Všimnite si, že ak menný priestor nie je špecifikovaný explicitne, typ sa pridá do nepomenovaného globálneho menného priestoru. Vo väčšine situácií Microsoft odporúča použiť aspoň dva vnorené menné priestory: prvý je názov vašej spoločnosti a druhý je názov technológie alebo softvérového balíka, do ktorého trieda patrí, takže vyzerá asi takto: MyCompany.SomeNamespace .Moja trieda. Vo väčšine prípadov tento prístup ochráni triedy vašej aplikácie pred potenciálnymi konfliktmi s názvami tried napísanými vývojármi z iných spoločností. Nasledujúca tabuľka je krátkym zoznamom niektorých (ale určite nie všetkých) menných priestorov ponúkaných v .NET, ktoré boli rozdelené do skupín podľa funkčnosti:
Úloha koreňového priestoru spoločnosti MicrosoftPri skúmaní zoznamu v tabuľke bolo ľahké si všimnúť, že System namespace je koreňom slušného počtu vnorených menných priestorov (ako System.IO, System.Data atď.). Ako sa však ukazuje, okrem System ponúka knižnica základných tried aj množstvo ďalších koreňových menných priestorov najvyššej úrovne, z ktorých najužitočnejší je Menný priestor spoločnosti Microsoft. Pri odpovedi na otázku, čo je používanie menného priestoru std, je v prvom rade potrebné poznamenať, že v preklade z angličtiny znamená výraz popisovaný priestor názvov, čo je rozsah deklarácie, potrebný na definovanie rôznych identifikačných foriem: funkcie a závislé/nezávislé premenné. Vďaka nemu nedochádza ku konfliktu medzi názvami, keďže existujú situácie, kedy viaceré premenné nadobúdajú rovnaké hodnoty. Zvyčajne sa to stane, keď sú vytvorené rôzne knižnice. Identifikátory sú vo vzájomnom vzťahu voľne dostupné. Pri použití formátu celého mena získajú bezplatný prístup k nezávislým členom. Na to je to mimoriadne dôležité aby objekt obsahoval plnú formu mena pomocou menného priestoru std. Je to dôležité pre vizuálne pochopenie toho, ako deklarácia vyzerá, keď je umiestnená v názve priestoru. Obrázok ukazuje niekoľko variantov prístupu ku kódovaniu, umiestnené v rámci a za jeho plotmi: 1 Takto to vyzerá celé meno: 2 S cieľom doplniť existujúci inzerát, pridať pomocou: 3 Ak chcete pridať všetky existujúce ID, použite príslušnú smernicu: Použitie smerniceDirektíva using umožňuje využitie všetkých dostupných mien, ktoré sú zahrnuté v mennom priestore. Nie je potrebné špecifikovať kvalifikátor. Musíte použiť použitie v súbore vo formáte cpp. Dôležitou podmienkou je však prítomnosť viacerých identifikátorov. V prípade, že existuje iba niekoľko mien, bude dôležité vytvoriť obyčajný názov. Potom môžete pridať iba potrebné identifikátory a zvyšok nechať na pokoji. Je dôležité poznamenať, že ak sa názov lokálnej premennej a hlavnej premennej zhodujú, potom v tomto prípade bude prvá v skrytom prístupe. Upozorňujeme, že vytváranie premenných s rovnakým názvom je nezákonné. Poradte! Pre uľahčenie používania môže byť príkaz using umiestnený v hornej časti súboru formátu cpp., alebo naopak, umiestnený vo vytvorenej knižnici. Aby ste si zabezpečili čo najpohodlnejšie pracovné podmienky, môžete pracovať na umiestnení potrebných súborov. Smernica o používaní by sa nemala umiestňovať, pokiaľ to nie je absolútne nevyhnutné v hlavičkách v súbore vo formáte H. Dôvodom je skutočnosť, že touto akciou sa všetky identifikátory stanú aktívnymi v oblasti viditeľnosti, čím sa zvýši pravdepodobnosť konfliktu niektorých mien. Pre súbory je najlepším riešením použiť celé meno. V prípade, že sa ukážu byť príliš dlhé, môžete použiť skratky vo forme aliasov. Deklarácie menného priestoruJe zvykom umiestňovať inzeráty vo forme názvov súborov. V prípade, že sa vykonávanie špecifikovaných funkcií nachádza v samostatnej knižnici alebo súbore, je dôležité určiť celé meno. Aby sme pochopili, o akých akciách hovoríme, stojí za to pozrite si nasledujúci obrázok: Na implementáciu funkcie contosodata formátu cpp. je tiež dôležité použiť v prípade celé meno keď je smernica na úplnom začiatku: Použitie menného priestoru std. môže obsahovať inzeráty v niekoľkých sekciách naraz umiestnených v tom istom súbore. Vďaka kompilátoru sa všetky prvky kombinujú počas spracovania údajov. Napríklad std. je spravidla deklarovaný vo všetkých hlavičkách prístupných súborov umiestnených v dostupných knižniciach štandardného typu. Členovia označení plne kvalifikovaným menom môžu byť definovaní nielen v rámci menného priestoru, ale aj mimo neho, ak majú explicitnú kvalifikáciu. Čo sa týka definície, tá musí nasledovať za deklaráciou v mennom priestore, kde je vytvorená. Ako vizuálny príklad venujte pozornosť nasledujúcemu obrázku: Najčastejšie sa táto chyba objaví, keď sa poruší poradie definície alebo keď sa súčasti celého názvu okamžite zahrnú do dostupných objektov. Keď cookies nie sú deklarované v konkrétnom mennom priestore, formálne patrí do priestoru globálneho typu. Poradte! Pokiaľ to nie je absolútne nevyhnutné, odporúča sa vyhnúť sa zahrnutiu členov do priestoru globálnych typov. Významnou výnimkou z pravidla môže byť len hlavná možnosť, čo znamená povinné zahrnutie do rozsiahleho priestoru. Ak chcete vytvoriť identifikátor globálneho typu, musíte použiť zodpovedajúcu funkciu viditeľnosti vo forme celého mena. Táto akcia pomôže vytvoriť rozlišovaciu vlastnosť jedného identifikátora od iných existujúcich identifikátorov, ktoré sú v inom mennom priestore. To vám pomôže pochopiť kód. Space std.Stojí za zmienku, že priestory môžu byť vnoreného typu. Ak sa myslí obyčajné zapustenie, tak má neobmedzený charakter do celého priestoru. Keď už hovoríme o rodičovských členoch, takú funkciu nemajú. Na rozšírenie sú potrebné vstavané prílohy. Pre presnejšiu definíciu a pochopenie, venujte pozornosť nasledujúcemu obrázku: Zapuzdrené informácie pre ďalšiu implementáciu môžu byť tiež súčasťou bežného vnoreného priestoru a fungovať ako rozhranie otvoreného typu v nadradenom priestore. Porovnania sú obyčajné prílohy štandardného typu, vstavané členy nadradeného menného priestoru. V dôsledku toho môžete použiť vyhľadávanie funkcií, ktoré majú nejaký druh preťaženia, kde bude existovať závislosť argumentov. Ak chcete vidieť príklad toho, ako sa vykonáva viazanie, Stojí za to uviesť nasledujúci príklad: Nasledujúci obrázok ukazuje proces špecializácie v šablóne nadradeného priestoru, ktorý je deklarovaný v dočasnom priestore vstavaného typu: Využitím vstavaných priestorov je možné spravovať rôzne verzie rozhrania v štandardných knižniciach. Je možné vytvoriť jeden nadradený priestor a zapuzdriť každé prezentované rozhranie. Musí však byť vo formáte prílohy v zdieľanom rodičovskom priestore. Potom sa klientsky kód automaticky priradí k novej kombinácii. Používatelia, ktorí sú zvyknutí na starú verziu, ju môžu bez problémov používať aj naďalej. Ak to chcete urobiť, musíte vytvoriť úplnú cestu k prílohe. Ak chcete usporiadať prvé oznámenie, musíte použiť inline kľúč. Pozrime sa na nasledujúci príklad dvoch možností rozhrania, kde každá má priestor. Klientsky kód má tiež schopnosť využívať nové knižnice. Pre vizualizáciu procesu Prejdime na nasledujúci obrázok: Všetky názvy musia byť mimoriadne jedinečné, preto sa ich dĺžka výrazne zvyšuje. Tu však nie je možné použiť príkaz na používanie. Je možné vytvoriť iba alias pre menný priestor. V tomto prípade zvážte nasledujúci príklad: Je tiež možné vytvoriť obyčajný priestor, ale nie je mu priradený alias. Takéto územné spektrum sa nazýva anonymné. Spravidla sa používa v situáciách, keď členovia v deklarácii musia byť neviditeľné pre kódovanie v iných objektoch. Celá štruktúra, keď budú viditeľné všetky identifikátory, však mimo vytvoreného priestoru zostanú neviditeľné. Nestojí to za nič, že samotný menný priestor bude neviditeľný aj mimo bloku, preto by si každý používateľ mal tento detail vopred všimnúť. Zvyčajne sa vyžaduje použitie znalostí pre tých, ktorí pracujú vo Visual C++. Pomocou kvalitných príkladov bude oveľa jednoduchšie pochopiť túto tému.
Čo je to menný priestor v C++? Menný priestor je spôsob zoskupovania logicky súvisiacich vyhlásení pod spoločným názvom. Príklad menného priestoru: // @author Subbotin B.P..h" menný priestor prvý ( int a; float b; ) menný priestor druhý ( int a; float b; ) int _tmain (int argc, _TCHAR* argv) ( prvý::a = 1; druhý:: a = 2; prvé::b = 1,23; druhé::b = 4,56; printf("\nprvé::a = %d\n", prvé::a); printf("\ndruhé::a = %d \n", druhý::a); printf("\nprvý::b = %.2f\n", prvý::b); printf("\ndruhý::b = %.2f\n\n", sekunda::b); návrat 0; ) Dostaneme: V príklade sú vytvorené dva menné priestory: prvý a druhý. Oba priestory obsahujú rovnaké premenné. Ale práve to, že napríklad premenná a patrí do priestoru ako prvá, neumožňuje jej zámenu s premennou z iného menného priestoru. Vyhnete sa tak konfliktom mien. znamená, že sa používa premenná int a deklarovaná v prvom mennom priestore. Toto je príklad deklarácie použitia. Operátor :: sa nazýva operátor rozsahu. Menné priestory sa vytvárajú pomocou kľúčového slova menného priestoru: Najprv menný priestor ( int a; float b; ) Ak chcete použiť všetky mená z menného priestoru, môžete použiť direktívu using namespace. Príklad použitia menného priestoru std: using namespace std vám umožňuje používať mená z std namespace. std je názov štandardnej knižnice C++. Ak v poslednom príklade odstránime reťazec pripojenia priestoru názvov pomocou priestoru názvov std, potom budeme musieť explicitne zadať názov priestoru názvov: // @author Subbotin B.P..h" #include Menný priestor definuje rozsah. Príklady explicitne definovali menné priestory. Tu sú ďalšie príklady menných priestorov. Rozsah v rámci funkcie je tiež priestor názvov. Rozsah globálnych premenných je zároveň menným priestorom. Trieda je tiež menný priestor. Je možné vytvoriť menný priestor bez mena. Príklad: // @author Subbotin B.P..h" menný priestor ( int a; int b; ) int _tmain (int argc, _TCHAR* argv) ( a = 5; b = 8; printf("\n a = %d\n", a ); printf("\n b = %d\n\n", b); návrat 0; ) To znamená použitie direktívy using namespace. Takéto menné priestory sú potrebné, aby sa predišlo možným konfliktom mien. Ak je názov priestoru názvov príliš dlhý, môžete vytvoriť alias priestoru názvov. Príklad: // @author Subbotin B.P..h" menný priestor underground ( int a; int b; ) menný priestor ug = underground; int _tmain (int argc, _TCHAR* argv) ( ug::a = 5; ug::b = 8; printf ("\n ug::a = %d\n", ug::a); printf("\n ug::b = %d\n\n", ug::b); návrat 0; ) menný priestor ug = underground; predstavuje alias ug pre podzemný menný priestor. Ďalej pracujeme s aliasom. Ak máte v úmysle použiť iba časť mien z menného priestoru, môžete túto časť vybrať do nového menného priestoru a použiť ju. Príklad: // @author Subbotin B.P..h" namespace underground ( int a; int b; int c; float d; double e; ) namespace ug ( using underground::a; using underground::b; ) int _tmain(int argc, _TCHAR* argv) ( ug::a = 5; ug::b = 8; printf("\n ug::a = %d\n", ug::a); printf("\n ug::b = %d\n\n", ug::b); návrat 0; ) Tu predpokladáme, že z piatich premenných podzemného menného priestoru použijeme iba dve. Vytvoríme nový menný priestor ug, ktorý obsahuje dve deklarácie pomocou. Ďalej pracujeme s menným priestorom ug. Menný priestor je možné zmeniť, t.j. pridajte k nemu nové inzeráty. Príklad: // @author Subbotin B.P..h" namespace underground ( int a; int b; ) namespace underground ( float c; ) int _tmain(int argc, _TCHAR* argv) ( underground::a = 5; underground::b = 8 ; underground::c = 1,2; printf("\n underground::a = %d\n", underground::a); printf("\n underground::b = %d\n", underground::b ); printf("\n underground::c = %.1f\n\n", underground::c); return 0; ) Dostaneme: Priestory názvov môžu byť vnorené Príklad: // @author Subbotin B.P..h" horný menný priestor ( int a; int b; vnútorný menný priestor ( float c; ) ) int _tmain (int argc, _TCHAR* argv) ( horný::a = 5; horný::b = 8 ; horné::vnútorné::c = 1,2; printf("\n horné::a = %d\n", horné::a); printf("\n horné::b = %d\n", horné ::b); printf("\n horné::vnútorné::c = %.1f\n\n", horné::vnútorné::c); návrat 0; ) Dostaneme: V príklade menný priestor horný obsahuje vnútorný menný priestor. Všimnite si, ako sa pristupuje k poľu interného priestoru názvov: horná::vnútorná::c = 1,2; Pozrime sa na globálny menný priestor. Tu sa používa operátor:: bez zadania názvu priestoru. Globálny priestor názvov obsahuje globálne deklarácie vrátane zodpovedajúcich direktív použitia. Príklad globálneho menného priestoru: // @author Subbotin B.P..h" #include Je dôležité vidieť rozdiel medzi používaním deklarácií a používaním direktív. Direktíva using sprístupňuje všetky názvy v danom priestore názvov, ale nedeklaruje ich lokálne. Deklarácia using má prednosť pred príkazom using. Pozrime sa na príklad: // @author Subbotin B.P..h" menný priestor sbp ( int a; int b; int c; ) int a; int _tmain (int argc, _TCHAR* argv) ( int a; pomocou menného priestoru sbp; a = 1; sbp:: a = 2; ::a = 3; printf("\n a = %d\n", a); printf("\n sbp::a = %d\n", sbp::a); printf(" \n::a = %d\n\n", ::a); návrat 0; ) Dostaneme: pomocou menného priestoru sbp; Toto je príkaz using, ktorý sprístupňuje všetky názvy v mennom priestore sbp. Toto pracuje s lokálnou premennou a. Ak chcete priradiť hodnoty premennej a z priestoru sbp, musíte explicitne ukázať na sbp: To isté platí pre globálnu premennú a. Lokálna premenná a uzatvára globálne premenné s rovnakým názvom. Teraz príklad pre deklaráciu použitia: // @author Subbotin B.P..h" menný priestor sbp ( int a; int b; int c; ) int a; int _tmain (int argc, _TCHAR* argv) ( int a; a = 1; pomocou sbp::b; b = 2; ::a = 3; printf("\na = %d\n", a); printf("\n sbp::b = %d\n", sbp::b); printf("\ n::a = %d\n\n", ::a); návrat 0; ) Dostaneme: Toto je vyhlásenie o používaní. Tu je premenná b deklarovaná lokálne z menného priestoru sbp. Po tomto oznámení môžete vykonať nasledujúce akcie: ale použitie vyhlásenia pre a by nás viedlo k chybe, pretože v príklade je lokálna premenná a už definovaná. Pomôže. Menné priestory, pomoc! Môžete deklarovať rovnakú funkciu, triedu, rozhranie a definovať konštantu v samostatných menných priestoroch bez toho, aby ste dostali fatálne chyby. Vo svojom jadre nie sú menné priestory nič iné ako hierarchicky označené bloky kódu obsahujúce bežný PHP kód. Globálny menný priestor tiež ukladá všetky interné definície PHP, ako napríklad mysqli_connect() a triedu Exception. Pretože globálny menný priestor nemá jedinečný identifikačný názov, najčastejšie sa označuje ako globálny menný priestor. Menné priestory sú deklarované pomocou rezervovaného slovného menného priestoru. Menné priestory sa riadia rovnakými pravidlami ako ostatné identifikátory v PHP. Takže menný priestor by mal začína písmenom alebo podčiarkovníkom, za ktorým nasleduje ľubovoľný počet písmen, číslic alebo podčiarkovníkov. Ak chcete definovať blok kódu do globálneho priestoru, môžete použiť kľúčové slovo priestor názvov bez pridania názvu. V jednom súbore môžete použiť viacero menných priestorov. Rovnaký menný priestor môžete použiť aj pre niekoľko rôznych súborov; proces pripojenia súborov ich automaticky spojí. Je dobrou praxou kódovania obmedziť počet definícií menného priestoru na jeden súbor, rovnako ako to robíte s triedami. Pre flexibilitu je rozumné ukladať vnorené menné priestory do podadresárov. To pomáha štruktúrovať projekt a uľahčuje jeho použitie pre automatické nakladače, ktoré dodržiavajú štandard PSR-4. PHP používa opačnú lomku ako oddeľovač menného priestoru. Zaujímavý fakt: v RFC sa pri rozhodovaní, ktorý oddeľovač menného priestoru použiť, zvažovala možnosť použitia emotikonu. // myproject/database/connection.phpMôžete použiť toľko vnorených menných priestorov, koľko chcete. Definovanie podnázvového priestoru s vnorenými blokmi kódu nie je podporované. Nasledujúci príklad vráti závažnú chybu: "Deklarácie priestoru názvov nemožno vnoriť." Príklad nižšie vráti závažnú chybu: „Závažná chyba: Trieda „MyProject\Database\MyProject\FileAccess\Input“ sa nenašla“, pretože MyProject\FileAccess\Input nie je relevantný pre priestor názvov, v ktorom sa nachádzate. Ak chcete získať prístup k funkcii, triede alebo konštante, ktorá je na vyššej úrovni hierarchie, potom musíte použiť celé meno – absolútnu cestu, nie relatívnu. Hovor musí začínať spätnou lomkou. To dáva PHP vedieť, že toto volanie by sa malo uskutočniť z globálneho priestoru, a nie pristupovať k nemu vzhľadom na vašu aktuálnu polohu. Pre interné funkcie PHP nemusíme používať celý názov. Nekvalifikované názvy funkcií a konštánt budú definované v globálnom priestore názvov, ak nie sú definované v aktuálnom priestore názvov. Keď to vieme, môžeme teraz preťažiť interné funkcie PHP, pričom stále môžeme volať pôvodnú funkciu (alebo konštantu). ";
}
Táto konštanta je celkom užitočná, keď sa začínate učiť menný priestor; je tiež veľmi užitočný na ladenie. Keďže ide o reťazec, možno ho použiť v spojení s dynamickými volaniami kódu, o ktorých sme hovorili vyššie. Importy sú veľmi užitočným a základným aspektom menných priestorov. To vám dáva možnosť používať externé balíky, ako sú knižnice, bez obáv z konfliktov mien. Import sa vykonáva pomocou kľúčového slova use. Ak chcete, môžete zadať vlastný alias pomocou kľúčového slova as. Používať ako Alternatívou je priradiť alias s iným názvom Môžete tiež importovať globálne triedy, ako napríklad Exception. Pri importe nemusíte písať jeho absolútny názov. Všimnite si, že pre názvy v priestore názvov nie je potrebná úvodná spätná lomka a jej prítomnosť sa tam neodporúča, pretože importované názvy musia byť absolútne a nie sú analyzované vzhľadom na aktuálny priestor názvov. Hoci existuje podpora pre vyvolanie dynamického priestoru názvov, dynamický import nie je podporovaný. Anotácia: Táto časť popisuje použitie a deklaráciu menných priestorov. Uvádzajú sa hlavné charakteristiky RDF, XML-Data, Document Content Description (DCD), Schema for Object-Oriented XML (SOX), Document Definition Markup Language (DDML, predtým známy ako XSchema). Predtým sme opísali niektoré nevýhody definícií DTD, ktoré súvisia: Táto kapitola zahŕňa nasledujúce dva pojmy - menný priestor a XML schémy. Priestory názvov umožňujú vývojárom XML rozdeliť komplexný problém na malé kúsky a skombinovať viacero slovníkov do jedného dokumentu, aby ho úplne opísali. Pomocou schém vytvárajú návrhári slovníkov presnejšie definície, ako to bolo možné v DTD, a robia to pomocou syntaxe XML. Tieto dva nástroje pomáhajú riešiť zložité problémy, ktoré vznikajú pri používaní XML. Priestory názvov a schémy umožňujú návrhárom a programátorom XML: Pri navrhovaní slovníka môže mať zmysel rozdeliť globálny problém na niekoľko častí. To si vyžaduje spôsoby, ako rozdeliť veľký problém do viacerých slovníkov. Skutočným problémom, ktorý treba vyriešiť, je však zlúčenie samostatných DTD v rámci tela jedného dokumentu. Tento problém môže nastať aj vtedy, ak napríklad pracujete pre korporáciu, v ktorej s najväčšou pravdepodobnosťou už existuje súbor definícií DTD a ich použitie môže výrazne uľahčiť prácu, pretože popisujú problém tak, ako ho chápu ostatní. Často je tiež užitočné opätovne použiť definície DTD, t.j. Použitie bežných konštruktov z predtým vytvorených definícií DTD. Ak vyvíjate aplikáciu, ktorá potrebuje komunikovať so softvérom externého partnera, nemáte inú možnosť, ako opätovne použiť existujúce koncepty. Existujúce definície DTD predstavujú spoločný jazyk, ktorým sa musí hovoriť, aby mu bolo porozumené. Ak už nejaký koncept existuje, človek musí pracovať na tom, aby ho pochopil v zmysle tohto konceptu. Keď použijete definície, ktoré sú pre vás užitočné z DTD iných vývojárov, alebo keď skombinujete segmentované DTD na vytvorenie dokumentu, ktorý popisuje zložitý problém, ak vaše dokumenty používajú prvky s rovnakými názvami, riskujete, že narazíte na problémy nejednoznačnosť a kolízie mien. Problém sa ďalej zhoršuje pri použití inštancií mien z viacerých DTD. V tomto prípade nevieme, na ktorý prvok, na ktorý sa vzťahuje definícia DTD, sa tento problém dobre sformovaných dokumentov nazýva nejednoznačnosť. Navyše, ak to mená z dokumentu vyžadujú kontroly platnosti, môžeme urobiť našu aplikáciu veľmi mätúcou. Tento problém sa nazýva kolízia mien. Menné priestory môžu používateľovi pomôcť dvoma veľmi dôležitými spôsobmi. S ich pomocou môžete: Menný priestor je zbierka určitých hodnôt alebo charakteristík, ktoré možno použiť v dokumentoch XML ako názvy prvkov alebo atribútov. Priestory názvov v XML sú definované identifikátorom URI (Uniform Resource Identifier) (ako URI môžete použiť adresu DTD na vašom serveri). Umožňuje, aby bol každý menný priestor jedinečný. Aby sme teda mohli efektívne využívať menné priestory v dokumente, ktorý kombinuje prvky z rôznych zdrojov, musíme definovať: Keďže v rôznych značkovacích jazykoch - implementáciách XML - možno nájsť rovnaké názvy značiek a ich atribútov, ktoré majú úplne odlišný význam, je potrebné medzi nimi nejako rozlišovať. Na tento účel majú názvy značiek a atribútov krátku predponu, ktorá je oddelená od názvu dvojbodkou. Predpona názvu je spojená s identifikátorom, ktorý definuje priestor názvov. Všetky názvy značiek a atribútov, ktorých predpony sú spojené s rovnakým identifikátorom, tvoria jeden priestor názvov, v ktorom musia byť názvy jedinečné. Keďže chceme, aby každý rozpoznal deklaráciu priestoru názvov, keď ju uvidíme, vyhradzujeme si pre ňu špeciálne slovo. Podľa odporúčania pre priestory názvov je slovo xmlns . Hodnota atribútu je URI, ktorá určuje priestor názvov, ktorý sa má použiť. Toto je často adresa URL definície DTD, ale nemusí to tak byť vždy. Predpona a identifikátor priestoru názvov sú definované atribútom xmlns takto: Ako vidíte, predpona ntb bola práve definovaná, ale už sa dá použiť v názve ntb: notebook . V budúcnosti budú názvy značiek a atribútov, ktoré chceme priradiť k priestoru názvov http://some.firm.com/2003/ntbml, s predponou ntb, napríklad: Okrem toho sa v jednej značke môže vyskytovať niekoľko menných priestorov. Nižšie je uvedený príklad zmiešania viacerých menných priestorov: Prvok kniha pochádza z menného priestoru katalógu a atribút ISBN pochádza z objednávky . Názov spolu s predponou, napr nazývaný rozšírený, kvalifikovaný alebo kvalifikovaný názov (OName. Qualified Name). Časť mena napísaná za dvojbodkou sa nazýva miestna časť mena. Nomenklatúra názvov webových zdrojov môže byť mätúca. Uniform Resource Locator ( Uniform Resource Locator, URL) označuje zdroj z hľadiska prístupového protokolu a sieťového umiestnenia. Uniform Resource Identifier ( Uniform Resource Identifier, URI) je jedinečný názov pre nejaký zdroj. Pozrite sa na URI jednoducho ako na jedinečný reťazec znakov, ktorý identifikuje menný priestor. Podľa pravidiel SGML a XML môže byť dvojbodka použitá v menách ako obyčajný znak, takže meno s predponou je len trik; každý program, ktorý „nepozná“ menný priestor, analyzuje dokument, zaobchádza kvalifikovaný názov ako obyčajný názov. Z toho najmä vyplýva, že v vyhlásenie o type dokumentu Predpony názvov (Deklarácia typu dokumentu) nemožno vynechať. Atribút xmlns sa môže objaviť na akomkoľvek prvku XML, nielen na koreňovom prvku. Predponu, ktorú definuje, možno použiť v elemente, v ktorom je zapísaný atribút xmlns a vo všetkých elementoch v ňom vnorených. Okrem toho je možné v jednom prvku definovať viacero menných priestorov. Vo vnorených prvkoch je možné menný priestor prepísať priradením predpony k inému identifikátoru. Vzhľad názvu značky bez predpony v dokumente, ktorý používa priestor názvov, znamená, že názov patrí do predvoleného priestoru názvov. Dobre navrhnutý dokument by mal používať menné priestory pre všetky svoje prvky. Predpony začínajúce znakmi xml sú v každom prípade vyhradené pre samotný jazyk XML. Predpona xmlns sa používa na priradenie inej, definovanej predpony k jej identifikátoru menného priestoru. Predpona xmlns nemusí byť definovaná, je zavedená odporúčaním „Menové priestory v XML“ a je tam spojená s identifikátorom menného priestoru http://www.w3.ori/2000 /xmlns/. Ďalšia predpona, xml, je spojená s rovnakým odporúčaním s identifikátorom http://www.w3.org/XML/1998/namespace. Tiež nie je potrebné ho definovať v dokumente XML. K týmto identifikátorom nemožno priradiť žiadnu inú predponu. Zachovajte pokyny na zachovanie nedotknutých medzier. To je dôležité pre niektoré texty, ako sú programové kódy. Predvolená hodnota ponecháva medzery na uvážení obsluhy. Deklarácie menného priestoru majú rozsah, rovnako ako deklarácie premenných v programovacích jazykoch. Je to dôležité, pretože menné priestory nie sú vždy deklarované na začiatku dokumentu XML; niekedy sú deklarované v nasledujúcich sekciách. Deklarácia menného priestoru sa vzťahuje na prvok, v ktorom sa vyskytuje, ako aj na potomkov tohto prvku, aj keď tam nie je explicitne definovaná. Názov môže odkazovať na priestor názvov iba vtedy, ak je použitý v rámci jeho deklarácie. Budeme však musieť zmiešať aj rozsahy menných priestorov na prvkoch, ktoré by inak zdedili iné menné priestory. V tejto súvislosti sú definované dva spôsoby deklarovania rozsahu: štandardný a kvalifikovaný. Ako sa dalo očakávať, dávať predponu každému názvu v dokumente sa rýchlo stáva únavným. V skutočnosti zavedením konceptu rozsahu názvu môžeme v našom dokumente zmiešať veľké množstvo predpôn. Ak definujeme predvolený priestor názvov, predpokladá sa, že vlastní všetky nekvalifikované názvy v rozsahu jeho deklarácie. Predvolený priestor názvov deklarovaný v koreňovom prvku sa teda považuje za predvolený pre celý dokument a možno ho prepísať iba konkrétnejším priestorom názvov deklarovaným v dokumente. Ak chcete, aby bol priestor názvov predvoleným priestorom názvov pre rozsah, jednoducho vynechajte deklaráciu predpony. Ak je predpona deklarovaná a potom použitá v spojení s názvom, menný priestor sa považuje za explicitne stanovený. Ak chcete k priestoru názvov priradiť nekvalifikovaný názov, musíte deklarovať predvolený priestor, ktorý obsahuje nekvalifikovaný názov (bez predpony). Vyššie uvedená metóda funguje dobre, ak dokážete jasne oddeliť svoje menné priestory. Niekedy je však potrebné do dokumentu zahrnúť jednotlivé mená z externých menných priestorov. Namiesto deklarovania názvových priestorov pre celý rozsah môžete použiť kvalifikované názvy. Na začiatku dokumentu deklarujte priestory názvov, ktoré potrebujete, a potom ich kvalifikujte na mieste použitia. |
Populárne:
Nový
- Metódy parametrickej identifikácie riadiacich objektov
- Reléová ochrana elektrických systémov
- Triedy a priestory názvov Používanie a deklarovanie priestorov názvov
- Bieloruský bloger. Ako sa máš? Hovoria bieloruskí módni blogeri. O „nervových“ príspevkoch a postojoch čitateľov k nim
- Brožúra na tému "počítač a deti" Správna poloha rúk
- Snowboarding: ako to všetko začalo?
- Foto, kde sa nachádza na mape sveta, popis
- Stiahnite si lístky na vlak pre cestujúcich Russian Railways pre Android v
- Ako používať svoj osobný účet a kontrolovať svoj účet v Intertelecom Assa
- Skvelé mená pre Gosha v Odnoklassniki