Erstellen eines XSL-Stylesheets, um Dateipfadattribute anklickbar zu machen

408
Paul Bergström

In einer Reihe von Verzeichnissen wie "AAA", "BBB" und "CCC" gibt es hunderte monatlich datierte Ordner wie "201209", "201310" und "201701". In jedem dieser monatlichen Ordner befinden sich Hunderte von PDF-Dateien - alle als GUID (123e4567-e89b-12d3-a456-426655440000) bezeichnet.

Das ist die Situation auf der Platte. Jede PDF-Datei hat also einen Pfad wie "AAA / 201704 / ".

Aus einer großen XML-Datei konnte ich jede Hausnummer in einen Ordner wie "KN2012_00435", "FN2015_01234" und "BN2017_08762" aufteilen. In jedem dieser Ordner befindet sich für jede PDF-Datei eine XML-Datei mit dieser casenummer verbunden.

In diesen XML-Dateien wird der Ort der PDF-Datei als XML-Attribut DocumentID = "" angegeben.

Mein erstes Problem ist, ein XSL-Stylesheet zu erstellen, um dieses Attribut anklickbar zu machen. Könnte es getan werden?

Mein zweites Problem ist, dass ich diese Ordner in einem Verzeichnis im Verzeichnisbaum aus den PDF-Dateien ablegen möchte.

In der Datei:

//casenumbers/KN2012_00435/ 

.... es gibt eine anklickbare GUID an ....

//docs/AAA/201704/ 

Könnte das getan werden?

0
Bitte versuchen Sie einen besseren Titel für die Frage zu finden. Ich neige dazu, diese Frage zu [SO] zu migrieren, da sie mehr mit der Programmierung zu tun hat, aber wahrscheinlich ist es gut, hier zu bleiben. slhck vor 6 Jahren 0

2 Antworten auf die Frage

0
Michael Kay

Ich denke nicht, dass Sie genug Informationen zur Verfügung gestellt haben, um Ihnen die Möglichkeit zu geben, Ihnen Code zu geben. Ja, in XSLT 2.0 ist dies möglich. Sie benötigen XSLT 2.0, damit (a) Sie mit der Funktion collection () alle Dateien in einem Verzeichnis zurückgeben können, und (b) Sie die Anweisung xsl: result-document verwenden können, um mehrere Ausgabedateien zu schreiben.

Wenn Sie sagen, Sie möchten, dass etwas "anklickbar" ist, gehe ich davon aus, dass Sie HTML generieren und im Browser anzeigen. Aber das ist eine Vermutung. Dinge können auch anklickbar sein, zum Beispiel in PDF. Ich würde nicht wissen, wie ich das machen soll, obwohl es wahrscheinlich möglich ist.

0
Paul Bergström

Ich konnte den ersten Teil meines Problems mit diesem Code lösen:

<xsl:for-each select="//dbo.Documents/@DocumentID"> <tr bgcolor="#FBF5A4"> <td><xsl:value-of select="local-name()" /></td> <td><a href="{.}"><xsl:value-of select="." /></a></td> </tr> </xsl:for-each> 

Das zweite Problem besteht darin, eine angepasste "href" so zu erstellen, dass sie sich (in einem Windows-Dateisystem) auf K bezieht: \ docs \ anydirectory \ anydirectory \ {.}