Inhaltstyp-IDs
Letzte Änderung: Montag, 1. November 2010
Gilt für: SharePoint Foundation 2010
Inhalt dieses Artikels
Übergeordnete Inhaltstyp-ID + zwei Hexadezimalwerte
Übergeordnete Inhaltstyp-ID + "00" + hexadezimale GUID
Längen von Inhaltstyp-IDs
Verwenden von Inhaltstyp-IDs in deklarativem XML
Verwenden von Inhaltstyp-IDs in Code
Verfügbar in SharePoint Online
Mit Inhaltstyp-IDs wird der Inhaltstyp eindeutig identifiziert, sie sind vom Entwurf her rekursiv. Die Inhaltstyp-ID kapselt die Herkunft dieses Inhaltstyps oder die Zeile der übergeordneten Inhaltstypen ein, von denen der Inhaltstyp erbt. Jede Inhaltstyp-ID enthält die ID des übergeordneten Inhaltstyps, die wiederum die ID seines übergeordneten Inhaltstyps enthält usw., bis schließlich die Systeminhaltstyp-ID erreicht und eingeschlossen ist. In SharePoint Foundation werden diese Informationen für Pushdownvorgänge sowie zum Ermitteln der Beziehung zwischen Inhaltstypen verwendet.
Sie können eine gültige Inhaltstyp-ID mithilfe einer dieser beiden Konventionen konstruieren:
Übergeordnete Inhaltstyp-ID + zwei Hexadezimalwerte (die beiden Hexadezimalwerte dürfen nicht 00 sein)
Übergeordnete Inhaltstyp-ID + "00" + hexadezimale GUID
Hinweis |
---|
Eine Inhaltstyp-ID muss innerhalb einer Websitesammlung eindeutig sein. |
Im Allgemeinen wird bei der ersten Generierungstechnik für Inhaltstyp-IDs die Kürze betont, da nur zwei hexadezimale Ziffern zum Angeben eines neuen Inhaltstyps verwendet werden. Bei der zweiten Methode wird die Eindeutigkeit hervorgehoben, da eine GUID zum Angeben des neuen Inhaltstyps eingeschlossen wird. Beide Methoden sind in bestimmten Situationen geeignet.
SharePoint Foundation verwendet diese Konvention zum Generieren von Inhaltstyp-IDs für die Standardinhaltstypen, die in der Plattform enthalten sind. Die Inhaltstyp-ID des Standardinhaltstyps Element ist 0x01. Dadurch wird angegeben, dass der Element-Inhaltstyp ein direktes untergeordnetes Element des Systems ist. Die Inhaltstyp-ID des Dokument-Inhaltstyps ist 0x0101, und der Ordner-Inhaltstyp hat die Inhaltstyp-ID 0x0120. Durch eine Analyse dieser Inhaltstyp-IDs können Sie bestimmen, dass sowohl Dokument als auch Ordner direkte untergeordnete Elemente von Element sind, wobei dieser Inhaltstyp wiederum direkt von System erbt, wie in der folgenden Abbildung dargestellt.
Mithilfe dieser Konvention können Sie nicht nur bestimmen, von welchen Inhaltstypen ein Inhaltstyp erbt, sondern Sie erkennen auch, dass zwei Inhaltstypen dieselben Vorfahren besitzen.
Die folgende Abbildung zeigt die Beziehung der vier zuvor erläuterten Inhaltstypen. In jedem Inhaltstyp ist der eindeutige Teil der Inhaltstyp-ID durch blauen Text dargestellt.
SharePoint Foundation verwendet diese Konvention zur Generierung von Inhaltstyp-IDs, wenn Sie Inhaltstyp-IDs für Folgendes erstellen:
Website-Inhaltstypen, die Sie auf der Grundlage anderer Inhaltstypen erstellen
Listeninhaltstypen, die in eine Liste kopiert werden, wenn Sie dieser Liste einen Website-Inhaltstyp hinzufügen
Bei einem Inhaltstyp mit einer Inhaltstyp-ID 0x010100D5C2F139516B419D801AC6C18942554D wissen Sie beispielsweise, dass der Inhaltstyp eins der folgenden Elemente war:
Ein Website-Inhaltstyp, der ein direktes untergeordnetes Element des Dokument-Inhaltstyps ist
Ein Listeninhaltstyp, der beim Hinzufügen des Dokumentwebsite-Inhaltstyps zu einer Liste erstellt wurde
Es wird empfohlen, dass Sie die Methode mit GUIDs zum Identifizieren von Inhaltstypen verwenden, die direkte untergeordnete Elemente der nicht von Ihnen erstellten Inhaltstypen sind. Verwenden Sie die Methode mit GUIDs, wenn der übergeordnete Inhaltstyp eines der folgenden Elemente ist:
Ein in SharePoint Foundation enthaltener Standardinhaltstyp wie Dokument.
Ein von einem Drittanbieter entwickelter Inhaltstyp. Auf diese Weise können Sie sicher sein, dass die Inhaltstyp-ID eindeutig ist und später keine doppelte Inhaltstyp-ID des übergeordneten Inhaltstyps von einem Entwickler hinzugefügt wird.
Nachdem Sie jedoch einen Inhaltstyp mit der Methode mit GUIDs eindeutig identifiziert haben, können Sie die erste Methode verwenden, um untergeordnete Elemente dieses Inhaltstyps zu identifizieren. Die für den Inhaltstyp verwendete GUID kann als Namespace für den Inhaltstyp verwendet werden. Alle untergeordneten Elemente, die auf diesem Inhaltstyp basieren, können durch nur zwei hexadezimale Ziffern identifiziert werden. Da die maximale Länge einer Inhaltstyp-ID begrenzt ist, wird mit dieser Methode die Anzahl der zulässigen "Generierungen" von Inhaltstypen maximiert.
Inhaltstyp-IDs besitzen eine maximale Länge von 512 Byte. Da zwei hexadezimale Zeichen in jedes Byte passen, besitzt jede Inhaltstyp-ID eine effektive maximale Länge von 1024 Zeichen.
Angenommen, Sie erstellen einen neuen Inhaltstyp, Meine Datei, basierend auf dem SharePoint Foundation-Standardinhaltstyp Dokument. Zur Angabe der Inhaltstyp-ID für Meine Datei beginnen Sie mit der Inhaltstyp-ID von Dokument, 0x0101, und fügen 00 und eine GUID an. Dadurch wird der Inhaltstyp Meine Datei eindeutig identifiziert, wobei sichergestellt ist, dass SharePoint Foundation zu einem späteren Zeitpunkt keinen weiteren Standardinhaltstyp mit derselben Inhaltstyp-ID hinzufügt (was beim Anfügen von nur zwei hexadezimalen Ziffern möglich ist). Wenn Sie jedoch Inhaltstyp-IDs für Inhaltstypen generieren möchten, die von Meine Datei abgeleitet sind, können Sie einfach zwei hexadezimale Ziffern an die Inhaltstyp-ID von Meine Datei anfügen. Dadurch wird die Länge der Inhaltstyp-ID minimiert und die Anzahl der zulässigen "Generierungen" von Inhaltstypen maximiert.
Die folgende Abbildung veranschaulicht dieses Szenario. Der eindeutige Teil der Inhaltstyp-ID ist durch blauen Text dargestellt.
Sie können einen neuen Websiteinhaltstyp als Teil eines Features erstellen, indem Sie deklaratives XML in einer Elementmanifestdatei verwenden. SharePoint Foundation stellt eine XML-Schemadefinition zu diesem Zweck bereit. Weitere Informationen finden Sie unter Inhaltstypdefinitionen.
Das Element auf der obersten Ebene in einer Inhaltstypdefinition ist das ContentType-Element. Dieses Element enthält ein erforderliches ID-Attribut, dessen Wert eine Zeichenfolge im Format für Inhaltstyp-IDs sein muss. Wenn Sie die ID für einen neuen Inhaltstyp nicht richtig formatieren, erhalten Sie beim Versuch, das Feature zu aktivieren, in dem die ID definiert ist, einen Fehler. Zur Vermeidung dieses Fehlers können Sie die ID für den neuen Inhaltstyp konstruieren, indem Sie die in diesem Thema erläuterten Regeln sorgfältig befolgen.
Wenn Sie eine ID für einen Inhaltstyp erstellen möchten, der von einem integrierten Inhaltstyp abgeleitet wird, beginnen Sie mit der hexadezimalen Zeichenfolge, die den integrierten Inhaltstyp identifiziert, fügen Sie zwei Nullen an, und fügen Sie dann eine GUID an, aus der alle Satzzeichen entfernt wurden. Beispiel: die hexadezimale Zeichenfolge zur Identifikation des Element-Inhaltstyps ist 0x01. Die ID für einen von Element abgeleiteten Inhaltstyp sollte in etwa wie folgt aussehen:
0x0100A33D9AD9805788419BDAAC2CCB37509F
Wenn Sie IDs für weitere Inhaltstypen erstellen möchten, die von diesem Inhaltstyp erben, fügen Sie einfach "01", "02" usw. an.
Tipp |
---|
IDs für wichtige integrierte Inhaltstypen sind unter Hierarchie der Basisinhaltstypen aufgeführt. Darüber hinaus können Sie rasch auf die ID für einen auf einer Website verfügbaren Inhaltstyp verweisen, indem Sie im Menüband für die Serverkomponente die Option Websiteeinstellungen auswählen und dann im Abschnitt Galerien auf Websiteinhaltstypen klicken. Wenn Sie den Mauszeiger über den Hyperlink eines Inhaltstyps bewegen, wird die Inhaltstyp-ID auf der Statusleiste des Browsers angezeigt. |
Im folgenden Beispiel wird ein Elementmanifest für ein Feature gezeigt, mit dem drei Inhaltstypen erstellt werden. Der erste neue Inhaltstyp, Financial Document, wird aus dem Inhaltstyp Document abgeleitet. Financial Document ist wiederum der übergeordnete Inhaltstyp für die neuen Inhaltstypen Purchase Order und 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>
Der Wert, der von der Id-Eigenschaft eines SPContentType-Objekts im Servercode oder von derselben Eigenschaft eines ContentType-Objekts im Clientcode zurückgegeben wird, ist keine hexadezimale Zeichenfolge. Es handelt sich um ein Objekt vom Typ SPContentTypeId im Servercode und vom Typ ContentTypeId auf dem Client.
Wenn Sie die hexadezimale Zeichenfolge für eine Inhaltstyp-ID kennen, können Sie das entsprechende Objekt abrufen, indem Sie die Zeichenfolge an den Konstruktor der entsprechenden Klasse übergeben. Ein Beispiel: Mit dem folgenden Servercode wird ein SPContentTypeId-Objekt konstruiert, das die ID für den Dokument-Inhaltstyp darstellt.
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.
...
}
}
Sie müssen die hexadezimale ID der in SharePoint Foundation enthaltenen Inhaltstypen nicht kennen. Stattdessen können Sie die Felder der SPBuiltInContentTypeId-Klasse verwenden. Wenn im Code beispielsweise die ID für den Dokument-Inhaltstyp dargestellt werden muss, kann SPBuiltInContentTypeId.Document anstelle von 0x0101 verwendet werden. Das folgende Codebeispiel veranschaulicht diese Vorgehensweise.
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.
...
}
}
Wenn Sie einen eigenen Inhaltstyp im Code erstellen, müssen Sie keine ID für den Inhaltstyp erstellen. Das System kann die ID basierend auf der ID des Inhaltstyps generieren, von dem Ihr Inhaltstyp abgeleitet ist.
Die folgende Konsolenanwendung erstellt beispielsweise einen neuen Customer-Inhaltstyp, der vom Item-Inhaltstyp abgeleitet ist. Der neue Inhaltstyp wird von der Anwendung als Websiteinhaltstyp angegeben, indem er der Inhaltstypauflistung der Website hinzugefügt wird. Anschließend wird der Inhaltstyp auf eine Liste angewendet, indem er der Inhaltstypauflistung der Liste hinzugefügt wird. Abschließend druckt die Anwendung die IDs für alle drei Inhaltstypen aus: für den übergeordneten Inhaltstyp, den neuen Websiteinhaltstyp und den neuen Listeninhaltstyp.
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();
}
}
}
Die folgende Ausgabe wird in der Konsole gedruckt:
Parent content type ID: 0x01
Site content type ID: 0x0100A33D9AD9805788419BDAAC2CCB37509F
List content type ID: 0x0100A33D9AD9805788419BDAAC2CCB37509F006454F8883E8BA648A632E5ACB47CAD9B
Press ENTER to continue...
Hierarchie der Basisinhaltstypen