SharePointCommunity
Die deutschsprachige SharePoint Community für SharePoint 2013, 2010, Office 365 und Yammer


How to: SharePoint-Liste über schema.xml erzeugen

Blogs

Oliver Wirkus

Syndication

Certifications

Web 2.0

XING

 Add to Technorati Favorites

 Folge mir auf Twitter

 Delicious Bookmark this on Delicious

 

  Locations of visitors to this page

 

Es gibt in SharePoint drei Möglichkeiten, eine Liste zu erzeugen:

  • manuelles Anlegen
  • über eine Vorlage
  • über Code (schema.xml)

Der letzte Weg ist sicherlich der aufwändigste Weg und wird vielleicht deswegen gemieden, aber er bietet auch viele Vorteile.

Ich möchte mit diesem Artikel zeigen, dass es eigentlich nicht so schwierig ist, eine Liste in SharePoint über eine schema.xml und ein passenden Feature zu installieren.

In diesem Artikel gehe ich von MOSS2007 und WSPBuilder aus. Das grundsätzliche Verfahren funktioniert aber mit SharePoint 2010 ebenso.

Zuerst legen wir uns mit dem WSPBuilder ein neues WSPBuilder-Projekt an und fügen diesem Projek über Add –> New Item ein Blank Feature aus dem Bereich WSPBuilder hinzu. In dem folgenden Dialog setzen wir den Scope des Features auf Web – wir wollen schließlich eine Liste in einem Web erstellen.

image

Im Solution Explorer sollte unser Projekt jetzt ungefähr folgendermaßen aussehen:

image

Als nächstes nehmen wir unser Projekt aus den Build-Vorgängen heraus, denn wir werden unser Feature ausschließlich vom WSPBuilder erstellen lassen.

image

Damit hätten wir bereits das Grundgerüst unseres Projekt erstellt. Als nächstes nehmen wir die nötigen Änderungen an der Datei feature.xml vor.Sieht man einmal von der Feature Description ab, müssen wir hier nur 2 Zeilen ändern. Unsere Liste soll den Namen DemoBlogListe erhalten. Daher müssen wir die Datei elements.xml im Projekt entsprechend umbenennen und diese Umbenennung hier in der feature xml nachziehen. Bisher fehlt in unserem Projekt auch noch die Datei schema.xml (die die eigentlichen Listenbeschreibung enthält). Diese schema.xml fügen wir zwar erst im nächsten Schritt hinzu, aber die Vorbereitungen können wir bereits jetzt treffen. In unserem Feature legen wir einen Ordner an, der den Namen DemoBlogListe haben muss (also der gleiche Name, den wir bereitsbei der Umbenennung der elements.xml verwendet haben). Diesen neuen Ordner müssen wir auch noch in die feature.xml eintragen.

Im Solution Explorer sieht unser Projekt jetzt folgendermaßen aus:

image

Die Datei feature.xml ist jetzt fertig und sollte folgendermaßen aussehen:

image

Als nächstes passen wir die ehemalige elements.xml –die wir in demoblogliste.xml umbenannt haben- an. In meinem einfachen Beispiel sieht diese Datei so aus:

image

Folgende Einstellungen sind dabei wichtig:

  • die FeatureID muss der ID unseres Features (feature.xml) entsprechen
  • Type beschreibt die Typ-ID der neuen Liste. Ich verwende gern eigene IDs, damit diese Liste später per Code leicht erannt werden kann
  • die SecurityBits beschreiben die Zugriffsrechte (siehe Links am Ende des Artikels)

Wir wollen auch eine Instanz der Liste erzeugen lassen, daher füge ich noch den Bereich ListInstance an. Hier gelten u.a. die folgenden Einstellungen:

  • TemplateType entspricht der TypeID
  • Url ist die URL, unter der die Liste nachher erreichbar ist

Die anderen Parameter sind selbsterklärend bzw. werden in den Links zu diesem Artikel näher erläutert.

Machen wir uns nun an die Hauptarbeit – das Erstellen der schema.xml. Dazu fügen wir zuerst eine leere XML-Datei in den Ordner DemoBlogListe ein und benennen diese in schema.xlm um. Im Solution Explorre sieht unser Projekt nun folgendermaßen aus:

image

Die schema.xml ist eine ziemlich große und recht komplexe XML-Datei. Zwar könnte man diese komplett selbst erstellen, aber man kann sich die Arbeit auch etwas vereinfachen. Ich kopiere mir meist die schema.xml der generischen Liste aus dem 12-Hive in meine Projekte. Diese Datei findet man im 12-Hive unter TEMPLATE\FEATURES\CustomList\CustList\schema.xml. Wir kopieren also den Inhalt der schema.xml der generischen Liste und kopieren den Inhalt in die soeben neu erzeugte leere schema.xml in unserem Projekt.

Diese schema.xml ist schon eine ziemlich gute Vorlage und für mein einfaches Beispiel sind auch nur wenige Änderungen nötig. In den meisten Fällen möchte man neue Spalten anlegen. In diesem Beispiel lege ich dazu die Spalte Farbe an, die eine Farbauswahl (rot, gelb, blau, grün) ermöglichen soll.

Um eigene Spalten zu verwenden, kommt man um die Verwendung eines listeninternen Inhaltstyps (Content-Type) nicht herum. Dazu ersetzen wir den markiertenTeil durch unsere Inhaltstyp-Definition – und definieren bei dieser Gelegenheit auch gleich die Title-Spalte mit.

image

image

Hierbei vergeben wir für unser neues Feld Farbe unbedingt eine neue GUID. Gleiches gilt für die ID des Inhaltstyps – diese ist allerdings etwas anders ausgebaut. Die ID beginnt erst nach ein paar zusätzlichen Codes (ContentType ID="0x010065F60B0AE04E4539BE0CE4C25965D3ED"). Der Aufbau dieser besondere GUID ist in den Links zu diesem Artikel erklärt. Die eigentliche GUID ist der blau marierte Teil (siehe MSDN: What are Content Type IDs?)

In unserem einfache Inhaltstyp haben wir bisher nur ein Feld –ohne Typ- angelegt. Die eigentliche Felddefinition erfolgt nun. Wir fügen unter der ContentType-Definition in den Fields-Bereich unsere Felddefinition ein:

image

Wichtig dabei: die ID muss mit der ID des Feldes aus unserem Inhaltstyp übereinstimmen – gleiches gilt für den Namen.

Damit wir unser neues Feld auch in der Standard-Ansicht sehen, müssen wir es noch in den entsprechenden Views-Abschnitt eintragen. Dieser befindet sich am Ende der schema.xml:

image

So – und nun wird es spannend! Wir lassen den WSP-Builder unsere Feature-Definition übersetzen und wenn wir alles richtig gemacht haben, sollte der WSPBuilder eine Datei demoblogliste.wsp erzeugt haben.

image

Die Installation kann z.B. mit dieser einfachen Batch-Datei erfolgen:

stsadm -o addsolution -filename DemoBlogListe.wsp

stsadm -o deploysolution -name DemoBlogListe.wsp –immediate

stsadm -o installfeature -name DemoBlogListe -force

stsadm -o activatefeature -name DemoBlogListe -url http:/mymoss/testweb

Wenn alles fehlerfrei durchgelaufen ist, sollten wir im TestWeb unsere Liste vorfinden:

image

Hier sehen wir bereits unsere neue Spalte Farbe. Und auch beim Erstellen eines neuen Eintrags taucht unsere neue Spalte auch:

image

Soviel als erster Einstieg in das Thema Listenanlegen per Feature. Ich füge diesem Artikel noch ein paar interessante Links mit weiterführenden Informationen an und stelle gern auch das Demo-Projekt als Downloadim Anhang zu diesem Artikel  zur Verfügung.

Blog-Artikel von André Vala

Blog-Artikel von Ton Stegeman

Artikel bei MSDN

Artikel im ITPro-Blog

Blog von Karine Bosch

MSDN - What are Content Type IDs?

Artikel im Blog Softwareanbieter

Eine Übersicht der Typen

 

Wie gesagt – auch wenn es in diesem einfachen Beispiel vergleichsweise leicht aussieht: so ganz trivial ist das Erstellen bzw. Bearbeiten einer schema.xml nicht. Mir hat es geholfen, mich langsam und mit ein paar Beispielen an das Thema heranzuarbeiten. Ich gebe aber auch gern zu, dass ich dabei einige Fehlschläge hinnehmen musste und manchmal ein Fluchen nicht unterdrücken konnte.

P.S.: An dieser Stelle Danke an Andi Fandrich, der mir mit wertvollen Tipps über die ersten Klippen geholfen hat :-)

 

Add to Technorati Favorites


Bereitgestellt 20 Sep 2010 11:27 von Oliver Wirkus
Gespeichert unter: ,