2012-10-12 5 views
5

Ich möchte Links zu Unterordnern und Dokumenten in einem Ordner in Hypertext-Dokumenten darstellen (möglicherweise mit HAL). Daher sollte ein Dokument, das einen Ordner darstellt, Links zu dem übergeordneten Ordner, den Unterordnern und den Dateien enthalten, die in dem Ordner enthalten sind. Für den übergeordneten Ordner < link rel = "up" href = ".." > scheint die einfache Wahl zu sein. Ich bin mir jedoch nicht sicher, was am besten für Links zu Unterordnern und Dokumenten im Ordner geeignet ist. Es gibt einige Optionen, die in RFC-5988 definiert sind. Ich könnte jedoch nicht sagen, welches am besten geeignet wäre, einen Baum von Ordnern und Dateien darzustellen.Welche Werte für das rel-Attribut eines Link-Tags sollten verwendet werden, um eine Hierarchie von Sammlungen und Dokumenten darzustellen?

Ich könnte meine eigenen Werte und Dokumente erstellen. Zum Beispiel (unter Verwendung von HTML-Syntax eher dann HAL für Vertrautheit):

... 
<link rel="self" href="http://example.com/some/folder/"> 
<link rel="up" href="http://example.com/some/"> 
<link rel="file" href="image1.jpg"> 
<link rel="file" href="image2.png"> 
<link rel="folder" href="subfolder/"> 
... 

Verwenden von benutzerdefinierten rel-Attributen hat den klaren Nachteil von Anwendungen, diese Dokumente benötigen raubend für sie explizite Unterstützung zu haben. Folglich würde ich lieber etwas verwenden, das eine Anwendung nur durch die Einhaltung von Standards und Best Practices verstehen könnte.

Update: AtomPub (RFC 5023)) scheint rel = "bearbeiten" auf Links zu Mitgliedern einer Sammlung. Sie haben kein Konzept für Subcollection, glaube ich. rel = "subsection" von RFC-5988 könnte eine Option sein.

+0

Das Attribut 'rel' soll die * semantische * Beziehung zwischen Dokumenten ausdrücken, nicht ihre Organisation in einem Dateisystem. Wenn keiner der vorhandenen Werte anwendbar ist, verwenden Sie einfach keine. Das Attribut ist nicht obligatorisch. – Quentin

+0

Ich würde argumentieren, dass die semantische Beziehung von etwas, das ein Gegenstand in einer Sammlung ist, oder etwas, das eine Untersammlung ist und möglicherweise mehr Gegenstände enthält, eine Beziehung ist, die es wert ist, in einer Hypertextanwendung ausgedrückt zu werden. – VoidPointer

+0

Bisher scheint die Verwendung von "subsection" für Subkollektionen und "item" für Dokumente ein vernünftiger Ansatz ... irgendwelche Gedanken? – VoidPointer

Antwort

3

eine Hierarchie
Eine sehr häufige Art und Weise eine Hierarchie darstellen Darstellen ist das Konzept der Eltern-Kind-Beziehungen zwischen den Ebenen in der Hierarchie zu verwenden. Dies ermöglicht es Ihnen, die Hierarchie sehr allgemein zu beschreiben, ohne sich an nur zu binden, die Ordner und Dokumente darstellen, da Eltern-Kind/Kinder beliebige Hierarchie darstellen können. Zum Beispiel verwenden DOM-Parser dieses Konzept stark, da das DOM eine Hierarchie ist.

Angenommen, Ihre Hierarchie ist nicht vollständig ausgeglichen (dh Sie können Dokumente auf 3 Ebenen tief und auch auf 20 Ebenen tief haben), müssen Sie wissen, welche Art von "Knoten" Sie sind, entweder eine Sammlung (Ordner) oder ein Blatt (Dokument). Mit dem Konzept der Sammlung vs. Blatt, und Eltern vs. Kind/Kinder, werden Sie in der Lage sein, leicht die Beziehung aller Verbindungen zu notieren, die Sie benötigen sollten.

Inhalt Typ
Der wichtigste Bestandteil eines jeden REST Interaktion ist die klare Definition der Inhaltstypen auf dem Client und dem Server. Inhaltstypen sind ziemlich unklar, was sie tatsächlich sein müssen, aber für Ihre Zwecke könnte es so wenig wie die allgemeine Ressource "Format" HAL bedeuten und würde auch die Bedeutung der parent und child rel-Werte definieren.

Die meisten Leute vergessen, dass Inhaltstypen für Menschen sind. Nur die Namen der Inhaltstypen sind wichtig für Benutzeragenten, nicht die Inhalte der Inhaltstypdefinition. Die Definitionen des Inhaltstyps werden von Entwicklern (oder sehr Smart User Agents) verwendet, um zu entscheiden, wie Dinge zu interpretieren sind. Der Benutzer-Agent verwendet nur den Namen, um die Interpretationsmodi zu wechseln.

Standards sind nicht alles
Im Allgemeinen ist es umso wichtiger für Ihre Anwendung darzustellen seine eigene Ressourcen der Art und Weise Ihre Anwendung Anforderungen als für Sie zu versuchen, Ihre Darstellung (en) in einige Schuhlöffel "Standard". Wenn es für Ihre Anwendung am sinnvollsten ist, up, folder und file zu verwenden, verwenden Sie unbedingt diese Link-Beziehungen. Die einzige Vorsicht, die ich haben würde, darüber nachzudenken, wie Sie die Dinge auf der Straße ändern könnten. Die Änderung einer API ist nicht die einfachste Sache, aber die Einführung eines neuen Inhaltstyps und die Ablehnung eines älteren Inhalts ist nicht schwierig.

Versteh mich nicht falsch, ich bin alles für Standards, aber sie sind von Natur aus fast immer hinter der realen Welt. Das RCF scheint mit allgemeinen hierarchischen Sammlungen von Dingen nicht gut umzugehen.

Verwandte Themen