ThomasM: XML Verzeichnis Editor

Beitrag lesen

Hallo Noops,

Kennt jemand ein Programm mit dem man ein Ordner als Verzeichnis in einer XML Datei speichern kann. Sollte etwa so aussehen:
Im Ordner sind massig Dateien: 0001.jpg, 0002.jpg, 0003.jpg ...
Und die XML Datei soll einfach eine Liste mit den ganzen Namen schreiben:
<Ordner>
  <name>0001.jpg</name>
  <name>0002.jpg ...
</Ordner>

Ansatz unter Nutzung von XSLT/XPath 2.0
[speziell unter Nutzung der neuen XSLT-Funktion unparsed-text() sowie der neuen XPath-Funktion fn:tokenize()]:

1. auf der Konsole in den Ordner wechseln und dort die Namen der Dateien zeilenweise in eine Textdatei schreiben:
   dir *.jpg /B > ordner.txt
2. zur Transformation dieser ordner.txt nach ordner.xml eine ordner.xsl mit diesem Inhalt ablegen:

<?xml version="1.0" encoding="ISO-8859-1"?>  
<xsl:stylesheet version="2.0"  
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  
 xmlns:fn="http://www.w3.org/2005/xpath-functions"  
 xmlns:xs="http://www.w3.org/2001/XMLSchema"  
 exclude-result-prefixes="fn xs">  
  
<xsl:output method="xml" version="1.0" encoding="ISO-8859-1" indent="yes"/>  
  
<xsl:variable name="text" select="unparsed-text('ordner.txt','ISO-8859-1')"/>  
  
<xsl:template match="/">  
  
  <Ordner>  
  <xsl:for-each select="fn:tokenize($text,'(\r)|(\n)|(\r\n)')">  
    <xsl:if test="fn:string-length(.) gt 0">  
      <name><xsl:value-of select="."/></name>  
    </xsl:if>  
  </xsl:for-each>  
  </Ordner>  
  
</xsl:template>  
  
</xsl:stylesheet>

3. Transformation mit einem XSLT 2.0-Prozessor ausführen, z. B. mit Saxon:
   java -jar x:\Pfad\zu\Saxon9\Java\saxon9.jar -o:ordner.xml -xsl:ordner.xsl -s:dummy.xml

-> Ergebnis ist die Ausgabedatei ordner.xml mit der gesuchten Struktur. (Die dummy.xml kann aus einem leeren Wurzelelement, <root/> bestehen, alternativ mittels Kernow arbeiten und dort den Karteireiter "Standalone" bzw. "Eigenständiges" wählen.)

Grüße,
Thomas