2010-10-07 10 views
1

Lorsque vous créez une nouvelle page Silverlight, vous obtenez un certain nombre d'espaces de noms XML créés automatiquement dans la balise de contrôle utilisateur. Par exemple, -Silverlight XAML - le XMLNS est-il réellement externe?

<UserControl x:Class="QuickStart.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" 
    d:DesignHeight="300" d:DesignWidth="400"> 

Je sais que xmlns a les balises silverlight de base,: x a des éléments de langage XAML,: d a expression mélange des choses, etc. Ma question est - ne silverlight fait faire un appel au schéma défini UIs soit pendant la conception ou l'exécution? Je ne peux pas imaginer qu'il sortira sur schemas.microsoft.com chaque fois qu'il rend une page. Mais sinon, les URI sont-ils simplement des constantes?

Répondre

4

Les espaces de noms XML sont des URL, mais dans la plupart des cas, ils ne correspondent pas à des sites Web réels, à de la documentation ou à quoi que ce soit d'autre. Ils servent essentiellement à fournir un identifiant unique pour les éléments XML, à condition que tout le monde coopère et utilise un nom de domaine qu'ils possèdent dans le cadre de l'URL. Au début, quiconque a eu recours à des URL pour xmlns peut avoir l'intention de publier de la documentation sur les URL, mais personne ne le fait vraiment.

Les analyseurs XML ne visitent ces URL à aucun moment, ils sont simplement des identifiants.

+0

Il est généralement considéré comme poli de mettre * quelque chose * utile pour les humains à un namespaceURI, et beaucoup le font, mais pas Microsoft. (Pour une raison quelconque, leur domaine openxmlformats.org me donne accès à une publicité pour XBoxes sur MSN Entertainment. – bobince

1

Non, il ne sort pas sur microsoft.com (ces dossiers n'existent même pas), et oui, cela fait essentiellement ces constantes.

1

Votre question a déjà été répondu, mais personne n'a mentionné pourquoi ils sont utilisés. Non mentionné est que vous pouvez également spécifier un espace de noms via une référence d'assembly, mais cela signifierait que vous auriez besoin d'un espace de nom par assembly. Les bibliothèques Silverlight sont réparties sur plusieurs assemblages (plus que les exemples d'entrées xmls ci-dessus).

En utilisant une « constante » comme vous les appelez à juste titre comme l'espace de noms signifie que plusieurs ensembles peuvent être référencées avec un seul espace de noms partagé.

Cela permet d'économiser sur un grand nombre d'entrées xmlns séparées, mais n'introduit le problème de déterminer ce que Assemblages un namspace fait référence à si vous avez seulement la source de la page :)