ID de type de contenu

Dernière modification : lundi 1 novembre 2010

S’applique à : SharePoint Foundation 2010

Dans cet article
ID de type de contenu parent + deux valeurs hexadécimales
ID de type de contenu parent + « 00 » + GUID hexadécimal
Longueur des ID de type de contenu
Utilisation d’ID de type de contenu dans un XML déclaratif
Utilisation d’ID de type de contenu dans du code

Disponible dans SharePoint Online

Les ID de type de contenu identifient de façon unique le type de contenu et sont récursifs. L’ID de type de contenu encapsule le lignage de ce type de contenu, ou la ligne de types de contenu parents dont hérite le type de contenu. Chaque ID de type de contenu contient l’ID du type de contenu parent, qui à son tour contient l’ID du parent de ce type de contenu, et ainsi de suite, jusqu’à l’ID de type de contenu System. SharePoint Foundation utilise ces informations pour déterminer la relation qui existe entre les types de contenu, ainsi que pour les opérations de propagation.

Vous pouvez construire un ID de type de contenu valide à l’aide de l’une des deux conventions :

  • ID de type de contenu parent + deux valeurs hexadécimales (ces deux valeurs ne peuvent pas être « 00 »)

  • ID de type de contenu parent + « 00 » + GUID hexadécimal

Notes

Un ID de type de contenu doit être unique dans une collection de sites.

En règle générale, la première technique de génération d’ID de type de contenu met l’accent sur la concision dans la mesure où elle n’utilise que deux chiffres hexadécimaux pour désigner un nouveau type de contenu. La deuxième approche souligne l’unicité en incluant un GUID pour signaler le nouveau type de contenu. Chaque approche est adaptée à des situations spécifiques.

ID de type de contenu parent + deux valeurs hexadécimales

SharePoint Foundation utilise cette convention pour générer des ID de type de contenu pour les types de contenu par défaut qui sont inclus dans la plateforme. Par exemple, l’ID du type de contenu de base Item est 0x01. Cela indique que le type de contenu Item est un enfant direct du type de contenu System. L’ID de type de contenu Document est 0x0101, et l’ID du type de contenu Folder est 0x0120. En analysant ces ID de type de contenu, vous pouvez déterminer que Document et Folder sont des enfants directs d’Item, qui à son tour hérite directement de System, comme le montre l’illustration suivante.

ID du type de contenu du document

Cette convention vous permet de déterminer non seulement les types de contenu hérités par un type de contenu, mais aussi le point auquel deux types de contenu ont des ancêtres communs.

La figure suivante illustre la relation entre les quatre types de contenu décrits précédemment. Dans chaque type de contenu, la partie unique de l’ID du type de contenu est représentée par le texte en bleu.

Exemple de hiérarchie d’ID de type de contenu par défaut

ID de type de contenu parent + « 00 » + GUID hexadécimal

SharePoint Foundation utilise cette convention de génération d’ID de type de contenu lors de la création d’ID de type de contenu pour les éléments suivants :

  • Les types de contenu de site que vous créez basés sur d'autres types de contenu

  • Les types de contenu de liste, qui sont copiés dans une liste lorsque vous ajoutez un type de contenu de site à cette liste

Par exemple, si vous avez un type de contenu avec un ID de type de contenu « 0x010100D5C2F139516B419D801AC6C18942554D », vous savez que le type de contenu était l’un des suivants :

  • Un type de contenu de site qui est un enfant direct du type de contenu Document

  • Un type de contenu de liste créé lorsque le type de contenu de site Document a été ajouté à une liste

Nous vous recommandons d’utiliser l’approche GUID pour identifier les types de contenu qui sont des enfants directs de types de contenu que vous n’avez pas créés. Utilisez l’approche GUID si le type de contenu parent est l’un des suivants :

  • Un type de contenu par défaut inclus dans SharePoint Foundation, tel que Document.

  • Un type de contenu développé par un tiers. De cette façon, vous êtes assuré que l'ID du type de contenu est unique et ne sera pas dupliqué ultérieurement par le développeur du type de contenu parent.

Cependant, après avoir identifié de manière unique un type de contenu à l’aide de l’approche GUID, vous pouvez utiliser la première méthode pour identifier les enfants de ce type de contenu. Le GUID utilisé dans votre type de contenu peut agir comme un espace de noms pour votre type de contenu. Tous les enfants basés sur ce type de contenu peuvent être identifiés par deux chiffres hexadécimaux. Étant donné que la longueur maximale d’un ID de type de contenu est définie, cette approche permet d’optimiser le nombre de « générations » de types de contenu autorisées.

Longueur des ID de type de contenu

La longueur maximale des ID de type de contenu est 512 octets. Étant donné que deux caractères hexadécimaux peuvent tenir dans chaque octet, chaque ID de type de contenu a une longueur maximale réelle de 1 024 caractères.

Par exemple, supposez que vous créez un type de contenu, myDocument, basé sur le type de contenu par défaut Document de SharePoint Foundation. Pour l’ID du type de contenu myDocument, vous commencez par l’ID du type de contenu Document, 0x0101, et ajoutez 00 et un GUID. Cela identifie le type de contenu myDocument, et vous êtes assuré que SharePoint Foundation n’ajoutera aucun autre type de contenu par défaut ultérieurement portant le même ID de type de contenu (ce qui est possible, si vous ajoutez uniquement deux chiffres hexadécimaux). Cependant, pour générer des ID de types de contenu que vous dérivez de myDocument, vous pouvez simplement ajouter deux chiffres hexadécimaux à l’ID de type de contenu myDocument. Cela permet de maintenir la longueur d’ID de type de contenu au minimum, et d’optimiser le nombre de « générations » de type de contenu autorisées.

La figure suivante illustre ce scénario. La partie unique de chaque ID de type de contenu est représentée par le texte en bleu.

Exemple de hiérarchie d’ID de type de contenu

Utilisation d’ID de type de contenu dans un XML déclaratif

Vous pouvez créer un type de contenu de site dans le cadre d’un Composant fonctionnel en utilisant du XML déclaratif dans un fichier manifeste d’élément. SharePoint Foundation fournit une définition de schéma XML à cette fin. Pour plus d’informations, voir Définitions de type de contenu.

L’élément de niveau supérieur dans une définition de type de contenu est ContentType. Cet élément possède un attribut ID obligatoire dont la valeur doit être une chaîne exprimée sous la forme d’un ID de type de contenu. Si vous n’appliquez pas un format approprié à l’ID d’un nouveau type de contenu, vous recevez une erreur lorsque vous essayez d’activer la fonctionnalité dans laquelle le type de contenu est défini. Pour éviter cette erreur, construisez l’ID de votre nouveau type de contenu en suivant scrupuleusement les règles indiquées dans cette rubrique.

Pour créer un ID pour un type de contenu dérivé d’un type de contenu intégré, ajoutez deux zéros à la fin de la chaîne hexadécimale qui identifie le type de contenu intégré, puis ajoutez un GUID en supprimant tous les signes de ponctuation. Par exemple, la chaîne hexadécimale qui identifie le type de contenu Item est « 0x01 ». L’ID d’un type de contenu qui dérive du type de contenu Item doit ressembler à ceci :

0x0100A33D9AD9805788419BDAAC2CCB37509F

Pour créer des ID pour des types de contenu supplémentaires qui héritent de votre type de contenu, ajoutez simplement « 01 », « 02 », et ainsi de suite.

ConseilConseil

Les ID des types de contenu intégrés importants sont répertoriés dans la Hiérarchie des types de contenu de base. En outre, vous pouvez rapidement référencer l’ID d’un type de contenu disponible pour un site en sélectionnant Paramètres du site depuis le Ruban serveur, puis en cliquant sur Types de contenu de site dans la section Galeries. Lorsque vous placez le pointeur de la souris au-dessus du lien d’un type de contenu, l’ID du type de contenu apparaît dans la barre d’état du navigateur.

L’exemple suivant est un manifeste d’élément pour un Composant fonctionnel qui crée trois types de contenu. Le premier nouveau type de contenu, Financial Document, est dérivé du type de contenu Document. Pour sa part, Financial Document est le type de contenu parent des nouveaux types de contenu Purchase Order et Invoice.

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="https://schemas.microsoft.com/sharepoint/">

  <!-- Parent: Document (0x0101) -->
  <ContentType ID="0x0101000728167cd9c94899925ba69c4af6743e"
               Name="Financial Document"
               Group="Financial Content Types"
               Description="Base financial content type"
               Version="0">
    <FieldRefs>
      <FieldRef ID="{1511BF28-A787-4061-B2E1-71F64CC93FD5}" Name="OrderDate" DisplayName="Date" Required="FALSE"/>
      <FieldRef ID="{060E50AC-E9C1-4D3C-B1F9-DE0BCAC300F6}" Name="Amount" DisplayName="Amount" Required="FALSE"/>
    </FieldRefs>
  </ContentType>

  <!-- Parent: Financial Document (0x0101000728167cd9c94899925ba69c4af6743e) -->
  <ContentType ID="0x0101000728167cd9c94899925ba69c4af6743e01"
               Name="PurchaseOrder"
               Group="Financial Content Types"
               Description="Used for creating purchase orders"
               Inherits="TRUE"
               Version="0">
    <FieldRefs>
      <FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Name="Title" DisplayName="Item" Required="TRUE" Sealed="TRUE"/>
      <FieldRef ID="{943E7530-5E2B-4C02-8259-CCD93A9ECB18}" Name="CostCenter" DisplayName="Department" Required="TRUE"/>
    </FieldRefs>
    <DocumentTemplate TargetName="PurchaseOrder.docx"/>
  </ContentType>

  <!-- Parent: Financial Document (0x0101000728167cd9c94899925ba69c4af6743e) -->
  <ContentType ID="0x0101000728167cd9c94899925ba69c4af6743e02"
                Name="Invoice"
                Group="Financial Content Types"
                Description="Used for creating customer invoices"
                Inherits="TRUE"
                Version="0">
    <FieldRefs>
      <FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Name="Title" DisplayName="Service" Required="TRUE" Sealed="TRUE"/>
      <FieldRef ID="{86811853-7E52-4515-A88D-A8FA9D450905}" Name="Client" DisplayName="Client Name" Required="TRUE"/>
    </FieldRefs>
    <DocumentTemplate TargetName="Invoice.docx" />
  </ContentType>
</Elements>

Utilisation d’ID de type de contenu dans du code

La valeur retournée par la propriété Id d’un objet SPContentType dans du code serveur ou par la même propriété d’un objet ContentType dans du code client n’est pas une chaîne hexadécimale. il s’agit d’un objet de type SPContentTypeId dans du code serveur et de type ContentTypeId sur le client.

Si vous connaissez la chaîne hexadécimale d’un ID de type de contenu, vous pouvez obtenir l’objet correspondant en transmettant la chaîne au constructeur pour la classe appropriée. Par exemple, le code serveur suivant construit un objet SPContentTypeId qui représente l’ID du type de contenu Document.

using (SPSite site = new SPSite(https://localhost))
{
   using (SPWeb web = site.OpenWeb())
   {
      // Get the Document content type.
      SPContentTypeId documentCTypeId = new SPContentTypeId("0x0101");
      SPContentType documentCType = web.AvailableContentTypes[documentCTypeId];

      // Do something.
      ...
   }
}

Vous n’avez pas besoin de connaître l’ID hexadécimal des types de contenu intégrés dans SharePoint Foundation. À la place, vous pouvez utiliser les champs de la classe SPBuiltInContentTypeId. Par exemple, partout où votre code doit représenter l’ID du type de contenu Document, il peut utiliser SPBuiltInContentTypeId.Document au lieu de « 0x010 ». Le code suivant illustre cette technique.

using (SPSite site = new SPSite(https://localhost))
{
   using (SPWeb web = site.OpenWeb())
   {
      // Get the Document content type.
      SPContentType documentCType = web.AvailableContentTypes[SPBuiltinContentTypeId.Document];

      // Do something.
      ...
   }
}

Lorsque vous créez votre propre type de contenu dans du code, vous n’avez pas besoin de créer un ID pour ce type de contenu. À la place, vous pouvez laisser le système générer un ID en fonction de l’ID du type de contenu dont votre type de contenu est dérivé.

Par exemple, l’application console suivante crée un type de contenu Customer dérivé du type de contenu Item. L’application définit le nouveau type de contenu en tant que type de contenu de site en l’ajoutant à la collection de types de contenu du site. Ensuite, elle applique le type de contenu à une liste en l’ajoutant à la collection de types de contenu de la liste. Enfin, l’application affiche les ID des trois types de contenu : le type de contenu parent, le nouveau type de contenu de site et le nouveau type de contenu de liste.

using System;
using Microsoft.SharePoint;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SPSite site = new SPSite("https://localhost"))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    // Get a reference to the Item content type.
                    SPContentType parentCType = web.AvailableContentTypes[SPBuiltInContentTypeId.Item];

                    // Create a Customer content type derived from the Item content type.
                    SPContentType childCType = new SPContentType(parentCType, web.ContentTypes, "Customer");

                    // Add the new content type to the site collection.
                    childCType = web.ContentTypes.Add(childCType);

                    // Add it to a list.
                    SPList list = web.Lists["Announcements"];
                    list.ContentTypesEnabled = true;
                    SPContentType listCType = list.ContentTypes.Add(childCType);

                    // Print the IDs.
                    Console.WriteLine("Parent content type ID: {0}", parentCType.Id.ToString());
                    Console.WriteLine("Site content type ID:   {0}", childCType.Id.ToString());
                    Console.WriteLine("List content type ID:   {0}", listCType.Id.ToString());
                }
            }

            Console.Write("\nPress ENTER to continue...");
            Console.ReadLine();
        }
    }
}

La sortie suivante est affichée sur la console :

Parent content type ID: 0x01
Site content type ID:   0x0100A33D9AD9805788419BDAAC2CCB37509F
List content type ID:   0x0100A33D9AD9805788419BDAAC2CCB37509F006454F8883E8BA648A632E5ACB47CAD9B

Press ENTER to continue...

Voir aussi

Référence

SPContentTypeId

SPBuiltInContentTypeId

Concepts

Hiérarchie des types de contenu de base

Types de contenu de liste et de site

Création de types de contenu