Névterek kezelése XML-dokumentumban

Az XML-névterek elem- és attribútumneveket társítanak egy XML-dokumentumban egyéni és előre definiált URI-khoz. A társítások létrehozásához meg kell határoznia a névtér URI-jainak előtagjait, és ezekkel az előtagokkal minősítheti az XML-adatok elem- és attribútumneveit. A névterek megakadályozzák az elem- és attribútumnevek ütközését, és lehetővé teszik az azonos nevű elemek és attribútumok eltérő kezelését és érvényesítését.

Névterek deklarálása

Ha névteret szeretne deklarálni egy elemen, használja a xmlns: következő attribútumot:

xmlns:<name>=<"uri">

where <name> is the namespace prefix and <"uri"> is the URI that identifies the namespace. Az előtag deklarálása után az XML-dokumentumok elemeit és attribútumait minősítheti, és társíthatja őket a névtér URI-jával. Mivel a névtér előtagját a dokumentum egésze használja, rövidnek kell lennie.

Ez a példa két BOOK elemet határoz meg. Az első elemet az előtag, mybooka második elemet pedig az előtag minősíti. bb Minden előtag más névtér URI-val van társítva:

<mybook:BOOK xmlns:mybook="http://www.contoso.com/books.dtd">  
    <bb:BOOK xmlns:bb="urn:blueyonderairlines" />
</mybook:BOOK>

Annak jelzéséhez, hogy egy elem egy adott névtér része, adja hozzá a névtér előtagját. Ha például egy Author elem a mybook névtérhez tartozik, a deklarálva <mybook:Author>lesz.

Deklaráció hatóköre

A névtér a deklarálási ponttól a deklarált elem végéig érvényes. Ebben a példában az elemben BOOK definiált névtér nem vonatkozik az BOOK elemen kívüli elemekre, például az Publisher elemre:

<Author>Joe Smith</Author>  
<BOOK xmlns:book="http://www.contoso.com">  
    <title>My Wonderful Day</title>  
      <price>$3.95</price>  
</BOOK>  
<Publisher>  
    <Name>MSPress</Name>  
</Publisher>  

A névteret a használat előtt deklarálni kell, de nem kell az XML-dokumentum tetején megjelennie.

Ha több névteret használ egy XML-dokumentumban, egy névteret definiálhat alapértelmezett névtérként egy tisztább megjelenésű dokumentum létrehozásához. Az alapértelmezett névtér deklarálva van a gyökérelemben, és a dokumentum összes nem minősített elemére vonatkozik. Az alapértelmezett névterek csak az elemekre vonatkoznak, az attribútumokra nem.

Az alapértelmezett névtér használatához hagyja ki az előtagot és a kettőspontot az elem deklarációjából:

<BOOK xmlns="http://www.contoso.com/books.dtd">  
...
</BOOK>

Névterek kezelése

Az XmlNamespaceManager osztály tárolja a névtér URI-jainak és előtagjainak gyűjteményét, és lehetővé teszi a névterek keresését, hozzáadását és eltávolítását ebből a gyűjteményből. Bizonyos környezetekben ez az osztály szükséges a jobb XML-feldolgozási teljesítményhez. Az osztály például az XsltContext XPath-támogatáshoz használható XmlNamespaceManager .

A névtérkezelő nem végez ellenőrzést a névtereken, de feltételezi, hogy az előtagok és a névterek már ellenőrzöttek, és megfelelnek a W3C-névterek specifikációjának .

Feljegyzés

A LINQ TO XML a C#-ban és a Visual Basicben nem használható XmlNamespaceManager névterek kezelésére. A LINQ dokumentációjában az XML-névterek (C#) és az XML-névterek használata (Visual Basic) című témakörben talál további információt a névterek linq-ről XML-hez való használatakor történő kezeléséről.

Íme néhány olyan felügyeleti és keresési feladat, amelyeket az XmlNamespaceManager osztálysal el lehet végezni. További információkért és példákért kövesse az egyes metódusok vagy tulajdonságok referenciaoldalára mutató hivatkozásokat.

Művelet Használat
Névtér hozzáadása AddNamespace Módszer
Névtér eltávolítása RemoveNamespace Módszer
Az alapértelmezett névtér URI-jának megkeresése DefaultNamespace Tulajdonság
Névtér-előtag URI-jának megkeresése LookupNamespace Módszer
Névtér URI előtagjának megkeresése LookupPrefix Módszer
Névterek listájának lekérése az aktuális csomóponton GetNamespacesInScope Módszer
Névtér hatóköre PushScope és PopScope metódusok
Annak ellenőrzése, hogy az előtag definiálva van-e az aktuális hatókörben HasNamespace Módszer
Előtagok és URI-k kereséséhez használt névtábla lekérése NameTable Tulajdonság

Lásd még