Ist es möglich, zwei von SandCastle erstellte Seiten zu einer einzigen Hauptseite zusammenzuführen?

68

Für jede Klasse im Projekt erstellt SandCastle (unter anderem) zwei Seiten:

  • Die Hauptseite T_class_full_namemit der Beschreibung Syntax, Vererbungshierarchie und Siehe auch
  • Die Mitgliederseite AllMembers_T_class_full_namemit Konstruktoren, Methoden, Feldern usw.

Gibt es eine Möglichkeit, diese beiden zusammenzuführen - mit dem members pageAnhängen an die Hauptseite?

Martin Haluza
quelle
5
Ich würde das auch lieben! Der Prototype PresentationStyle macht das, aber ich mag den Ausgabestil vs2005 besser. (Prototyp sieht in Firefox wirklich schrecklich aus.)
David Boike
Danke, ich werde den Prototyp überprüfen.
Martin Haluza

Antworten:

2

Ich kann keine funktionierende Antwort darauf geben, aber ich kann einige Ideen anbieten, die funktionieren könnten, wenn jemand bereit ist, damit herumzuhacken:

1. Die Konfiguration htmlBody.xsl definiert einen Teil der Struktur, einschließlich eines Abschnitts mit einem Test für Mitglieder: <xsl:if test="$subgroup='members'">Wenn dies auf Klassenebene aktiviert wurde (oder einfach auf true gesetzt wurde, erhalten Sie möglicherweise eine Vorstellung davon, wie diese Ausgabe erzeugt wird.) Ich glaube nicht, dass es hier eine magische Kugel geben wird.

2. Hier (glaube ich) werden Links zu den Untergruppen der Mitglieder hinzugefügt. Ich würde auch damit herumspielen:

<!-- add a link to the member list section for this subgroup -->
<a href="#{$elementVisibility}Toggle" onclick="OpenSection({$elementVisibility}Toggle)">

3. Ich habe andere Ideen, die versuchen, mit der Struktur herumzuspielen, aber ich müsste sie hacken, um eine klare Antwort zu erhalten. Ich bin mir nicht einmal sicher, ob die Datei htmlBody.xsl der richtige Ort dafür ist. Wenn ich hier tatsächlich einen Bedarf hätte, könnte ich Ihr Ziel am einfachsten erreichen, indem ich Folgendes tue:

  • Generieren Sie die Dokumentation wie gewohnt
  • Analysieren Sie die generierte Dokumentation und führen Sie die beiden mithilfe eines DOM / XML-Parsers zusammen (dh führen Sie die beiden im Code zusammen und geben Sie ein neues einseitiges HTML-Dokument mit den URLs aus, die auf Ankern auf der aktuellen Seite aktualisiert wurden).

Das Schöne ist, dass in den generierten Dateien und Links ein konsistentes Namensschema verwendet wird. Ich denke, es wäre einfacher, diesen Prozess zu schreiben und alle Links zu aktualisieren, um Anker zu sein, als zu viel mit den Vorlagen herumzuspielen . Ich denke tatsächlich, dass dies für jemanden, der Erfahrung mit dieser Art der Dokumentenmanipulation hat, ziemlich einfach zu erreichen wäre.

Vorsichtsmaßnahme: Ich stehe einem SandCastle-Experten nicht einmal nahe, da ich ihn vor nur über einem Jahr nur minimal verwendet habe. Ich habe auch bis heute keine Zeit damit verbracht, darüber nachzudenken, wie ich es hacken würde, sondern es nur sofort zu verwenden. Ich hätte nicht einmal darauf geantwortet, wenn es keine anderen Antworten gegeben hätte. Möglicherweise gibt es eine unterstützte Konfigurationsmethode, um dies zu erreichen, aber ich als Gelegenheitsbenutzer kann mir nicht einmal überlegen, wie ich es angehen soll.

Ich mache hier auch einige Annahmen darüber, wie die HTML-Ausgabe aufgrund meiner Erfahrungen mit dem SHFB aussehen würde. Ich könnte dort auch zu weit gehen. Ich habe kein Projekt mehr, aus dem ich Sandburg-Dokumentation generieren kann, aber wenn jemand einen Link zu einer HTML-Ausgabe von SandCastle posten kann und an diesem Ansatz interessiert ist, würde ich gerne weiterhelfen.

Matthew
quelle