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, mybook
a 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 |