Autoren-Leitfaden
Dieses Dokument beschreibt die erweiterten Funktionen der SIEVERS Dokumentationsplattform, die über das Standard-DocFx hinausgehen.
DataTables — Interaktive Tabellen
Große Tabellen können mit Suche, Sortierung, Paginierung und CSV/XLSX-Export ausgestattet werden.
Aktivierung
Umschließen Sie die Markdown-Tabelle mit einem <div class="datatable">:
<div class="datatable">
| Spalte A | Spalte B | Spalte C |
|----------|----------|----------|
| Wert 1 | Wert 2 | Wert 3 |
| ... | ... | ... |
</div>
Wichtig
Die Leerzeilen zwischen <div> und der Tabelle sind Pflicht — ohne sie erkennt DocFx die Markdown-Tabelle nicht.
Funktionen
| Funktion | Beschreibung |
|---|---|
| Suche | Freitext-Suchfeld filtert alle Spalten in Echtzeit |
| Sortierung | Klick auf Spaltenüberschrift sortiert (natürliche Sortierung: BT-1, BT-2, ..., BT-10) |
| Paginierung | Standardmäßig 10 Zeilen pro Seite mit Navigation |
| CSV-Export | Button „CSV" exportiert die aktuelle (gefilterte) Ansicht |
| XLSX-Export | Button „XLSX" exportiert als Excel-Datei |
| Klick-zum-Aufklappen | Klick auf eine Zeile zeigt den vollständigen Text abgeschnittener Zellen |
Wann verwenden?
- Tabellen mit mehr als 15 Zeilen
- Tabellen mit breiten Spalten, die horizontal scrollen
- Referenztabellen, in denen Kunden nach bestimmten Werten suchen
Für kleine Tabellen (unter 10 Zeilen) ist die normale Markdown-Tabelle ausreichend.
Änderungshervorhebung (Change Highlighting)
Zeigt Kunden, welche Abschnitte seit der letzten Version geändert wurden. Erzeugt automatisch ein Änderungsprotokoll am Seitenanfang.
So funktioniert es
- Pro Produkt wird in
docfx.jsoneine aktuelle Versionsnummer hinterlegt - In den Markdown-Dateien werden geänderte Abschnitte mit einem
<div>oder<span>markiert - Beim Seitenaufruf vergleicht ein Script die markierte Version mit der Produkt-Version:
- Version der Markierung ≥ Produkt-Version → Abschnitt wird hervorgehoben + im Änderungsprotokoll verlinkt
- Version der Markierung < Produkt-Version → Markierung wird transparent (normaler Text)
Konfiguration in docfx.json
Im Abschnitt fileMetadata werden zwei Einträge pro Produkt benötigt:
"fileMetadata": {
"highlight_changes": {
"sievers-e-rechnung/**": true,
"sievers-datev/**": true
},
"show_changes_since": {
"sievers-e-rechnung/**": "0.178",
"sievers-datev/**": "1.150"
}
}
highlight_changes: Aktiviert das Feature für alle Dateien des Produktsshow_changes_since: Die aktuelle (veröffentlichte) Version — alles ab dieser Version wird hervorgehoben
Einen Abschnitt als geändert markieren
Ganzer Abschnitt (Block)
<div class="changed" data-version="0.179">
## Neuer Export-Abschnitt
Dieser gesamte Abschnitt wurde in Version 0.179 hinzugefügt.
| Spalte A | Spalte B |
|----------|----------|
| ... | ... |
</div>
Einzelner Satz (Inline)
Normaler Text und <span class="changed" data-version="0.179">dieser Satz wurde geändert</span> in Version 0.179.
Nur eine Überschrift markieren
<div class="changed" data-version="0.179">
## Geänderte Überschrift
</div>
Der restliche Inhalt bleibt ohne Hervorhebung.
Hinweis
Die Leerzeilen innerhalb des <div> sind wichtig, damit DocFx den Markdown-Inhalt korrekt rendert.
Neue Version veröffentlichen
Wenn Version 0.179 veröffentlicht wird:
- Öffnen Sie
docfx.json - Ändern Sie
"sievers-e-rechnung/**": "0.178"→"sievers-e-rechnung/**": "0.179" - Alle Markierungen mit
0.178und darunter verschwinden - Nur Markierungen ab
0.180(nächste Version) werden künftig hervorgehoben
Die alten <div class="changed"> Markierungen können im Markdown stehen bleiben — sie werden einfach nicht mehr angezeigt, sobald die Version überholt ist.
Was der Kunde sieht
Wenn es Änderungen auf einer Seite gibt, erscheint am Anfang des Artikels ein rotes Änderungsprotokoll:
Änderungsprotokoll
In den folgenden Abschnitten gibt es wichtige Änderungen:
- Export CII ZUGFeRD
- Import
Die verlinkten Abschnitte sind zusätzlich am linken Rand rot hervorgehoben.
Best Practices
| Tipp | Beschreibung |
|---|---|
| Nur wichtige Änderungen markieren | Tippfehler-Korrekturen oder Formatierungsanpassungen nicht markieren |
| Version erhöhen, nicht ersetzen | Alte Markierungen stehen lassen, neue mit höherer Version hinzufügen |
| Blöcke bevorzugen | <div> ist besser lesbar als <span> für größere Änderungen |
| Kombination mit DataTables | DataTables-Wrapper und Changed-Wrapper können verschachtelt werden |
Verschachtelung mit DataTables
<div class="changed" data-version="0.179">
## Neue Tabelle
</div>
<div class="datatable">
| Spalte A | Spalte B |
|----------|----------|
| ... | ... |
</div>
Tipp
Die changed-Markierung um die Überschrift, das datatable-Wrapper um die Tabelle. Nicht verschachteln, sondern nebeneinander setzen.
Änderungsprotokoll auf der Produktstartseite
Neben dem seiteninternen Änderungsprotokoll (das automatisch per JavaScript auf jeder Seite erscheint) gibt es ein aggregiertes Änderungsprotokoll auf der Startseite jedes Produkts. Dieses wird durch das Script generate-changelogs.ps1 erzeugt.
Funktionsweise
Das Script:
- Liest
docfx.jsonaus und ermittelt alle Produkte mithighlight_changes: true - Durchsucht alle
.md-Dateien des Produkts nach<div class="changed" data-version="X">Markierungen - Vergleicht die markierte Version mit
show_changes_since - Erzeugt auf der
index.mddes Produkts eine Zusammenfassung aller geänderten Seiten und Abschnitte
Ergebnis auf der Startseite
Auf der Produktstartseite erscheint ein Hinweiskasten wie:
Hinweis
Aenderungen seit Version 0.178:
BC-Felder - BT-Felder Mapping (docs/de/bc-felder-bt-felder-mapping.html)
- Export CII ZUGFeRD
Die Links führen direkt zu den geänderten Seiten.
Markierungen in der index.md
Das Script fügt automatisch die Markierungen <!-- changelog-start --> und <!-- changelog-end --> in die index.md ein. Bei jedem erneuten Lauf wird nur der Inhalt dazwischen aktualisiert. Die Markierungen dürfen nicht manuell entfernt werden.
Build-Workflow
Vor jedem Build muss das Changelog-Script ausgeführt werden:
# 1. Changelogs auf Startseiten generieren
.\generate-changelogs.ps1
# 2. DocFx bauen
docfx build
Wichtig
Das Script muss vor docfx build laufen, da es die index.md-Dateien verändert, die dann von DocFx verarbeitet werden.
Produktdokumentation automatisch per Pipeline aktualisieren
Jedes Produktrepo pflegt seine Dokumentation direkt als DocFx-Dateien in einem doc/docfx/-Ordner. Eine Azure DevOps Pipeline checkt alle Produktrepos aus, kopiert die fertigen DocFx-Inhalte und baut die Plattform.
Konzept
Produktrepos (Azure DevOps) DocFxDokumentation Pipeline
─────────────────────────── ────────────────────────────
PD-ERP/Candis 1. Alle Produktrepos auschecken
doc/docfx/de/ ──────► 2. doc/docfx/ nach sievers-*/docs/ kopieren
toc.yml 3. generate-changelogs.ps1
seite-a.md 4. docfx build
images/ 5. Site deployen
PD-DATEV/DATEV
doc/docfx/de/ ──────►
doc/docfx/en/
Autoren arbeiten dauerhaft in doc/docfx/ des jeweiligen Produktrepos. Es findet keine automatische Konvertierung statt — die Markdown-Dateien sind bereits im DocFx-Format.
Hinweis
Die Produkt-Scaffolding-Dateien (sievers-{produkt}/toc.yml und sievers-{produkt}/index.md) verbleiben in DocFxDokumentation und werden von der Pipeline nicht überschrieben.
Ordnerstruktur im Produktrepo
Jedes Produktrepo enthält einen doc/docfx/-Ordner mit der folgenden Struktur:
doc/
docfx/
de/
toc.yml ← Inhaltsverzeichnis für diese Sprache
einleitung.md
installation.md
images/
screenshot.png
en/ ← optional, nur wenn EN-Doku vorhanden
toc.yml
introduction.md
Der de/- bzw. en/-Ordner wird direkt nach sievers-{produkt}/docs/de/ bzw. sievers-{produkt}/docs/en/ kopiert.
Pipeline-YAML
Die Pipeline wird im DocFxDokumentation-Repository als build.yml abgelegt und referenziert alle Produktrepos per resources.
# build.yml — in DocFxDokumentation repo
trigger:
branches:
include:
- master
resources:
repositories:
- repository: Candis
type: git
name: PD-ERP/Candis
ref: refs/heads/master
- repository: DATEV
type: git
name: PD-DATEV/DATEV
ref: refs/heads/master
# weitere Produktrepos hier ergänzen
pool:
name: PD Pool
steps:
- checkout: self
path: DocFxDokumentation
- checkout: Candis
path: Candis
- checkout: DATEV
path: DATEV
- powershell: |
# Candis (nur DE)
$src = "$(Agent.BuildDirectory)/Candis/doc/docfx"
$dest = "$(Agent.BuildDirectory)/DocFxDokumentation/sievers-candis/docs"
Remove-Item $dest -Recurse -Force -ErrorAction SilentlyContinue
Copy-Item $src -Destination $dest -Recurse
# DATEV (DE + EN)
$src = "$(Agent.BuildDirectory)/DATEV/doc/docfx"
$dest = "$(Agent.BuildDirectory)/DocFxDokumentation/sievers-datev/docs"
Remove-Item $dest -Recurse -Force -ErrorAction SilentlyContinue
Copy-Item $src -Destination $dest -Recurse
displayName: 'Copy DocFx content from product repos'
- powershell: |
cd "$(Agent.BuildDirectory)/DocFxDokumentation"
.\generate-changelogs.ps1
docfx build
displayName: 'Generate changelogs and build DocFx'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Agent.BuildDirectory)/DocFxDokumentation/_site'
ArtifactName: 'docfx-site'
displayName: 'Publish built site'
Produktrepo-seitige Pipeline (optional)
Um den DocFx-Build automatisch auszulösen, wenn sich Dokumentation in einem Produktrepo ändert, kann dort ein Pipeline-Trigger ergänzt werden:
# In Candis/doc/doc.yml — Trigger für DocFxDokumentation
- task: TriggerBuild@3
displayName: 'Trigger DocFxDokumentation build'
inputs:
definitionIsInCurrentTeamProject: false
teamProject: 'PD-Tools'
buildDefinition: 'DocFxDokumentation'
queueBuildForUserThatTriggeredBuild: false
useSameBranch: false
branchToUse: 'master'
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
Hinweis
Hierfür wird die Azure DevOps Marketplace-Extension TriggerBuild benötigt, oder alternativ ein REST-API-Aufruf mit einem Service-Connection-Token.
Neues Produkt einbinden
- Produktrepo —
doc/docfx/de/(und ggf.doc/docfx/en/) mittoc.ymlund Markdown-Dateien anlegen build.yml— Neues Repository unterresources.repositoriesergänzen,checkout-Schritt undCopy-Item-Block hinzufügen- DocFxDokumentation —
sievers-{produkt}/toc.ymlundsievers-{produkt}/index.mdanlegen (einmalig) - Root
toc.yml— Produkteintrag ergänzen
Erstmalige Migration eines bestehenden Produkts
Für Produkte, die noch eine monolithische documentation_de.md verwenden, kann Convert-MDToDocFx.ps1 zur einmaligen Migration genutzt werden:
# Einmalig: monolithische Doku in DocFx-Seiten aufteilen
& "C:\Repos\SNC-Tools\Markdown\Convert-MDToDocFx.ps1" `
-SourceFile "C:\Repos\Candis\doc\documentation_de.md" `
-ImageFolder "C:\Repos\Candis\doc\images-de" `
-OutputPath "C:\Repos\Candis\doc\docfx\de"
Das Ergebnis (de/toc.yml + einzelne .md-Dateien + images/) wird dann in doc/docfx/de/ committed. Danach wird die monolithische documentation_de.md nicht mehr benötigt.
Manueller Lauf (lokale Entwicklung)
Ohne Pipeline kann der Inhalt manuell kopiert und die Site lokal gebaut werden:
# Beispiel: Candis lokal einspielen
$src = "C:\Repos\Candis\doc\docfx"
$dest = "C:\Repos\DocFxDokumentation\sievers-candis\docs"
Remove-Item $dest -Recurse -Force -ErrorAction SilentlyContinue
Copy-Item $src -Destination $dest -Recurse
cd C:\Repos\DocFxDokumentation
.\generate-changelogs.ps1
docfx build
docfx serve _site --port 8088
Tipp
Für alle Produkte auf einmal kann import-all-docs.ps1 angepasst werden, sodass es statt Add-DocFxDocumentation einfach den jeweiligen doc/docfx/-Ordner kopiert.