I have a folder filled with 4chan threads, each thread can contain any number of comments. I want to create readable files for my Kindle, with multiple threads per book, with each thread clearly defined for the person reading it, each comment showing details that are present in the .xml file, such as 'date of post', the post number, the comment text, etc.

I want to be able to combine multiple threads from a single folder, so I can decide what threads I’d like to combine into a single ebook file.

My understanding is that the best way to do this would probably be to somehow represent the .xml data in an .html file which I can easily convert to .epub or .mobi format. My problem is I don’t know how to convert the .xml data into something readable and tidy in an .html file…and I don’t know how I’d do this en masse for many .xml files at once, combining some of them.

I’ve added a picture here

Two .xml files on the left, and the outcome that I want on the right.

showing basically the outcome I want, the formatting doesn’t have to be exact, I just want it tidy and readable, in a format that I can change the font size, etc on my Kindle as you would with any other ebook file.

  • the standard answer should be "use XSLT, and convert xml to xhtml", but I don't know of any free XSLT converter.
    – mau
    Commented May 28, 2020 at 18:13
  • There are command line tools eg from this so question stackoverflow.com/questions/6527112/… also there are addins to Eclipse
    – mmmmmm
    Commented Jun 8, 2020 at 11:46
  • 1
    If you're a little bit technically inclined, as @mau said, XSLT would be a typical/standard way to go. Indeed, as @mmmmmm pointed out, on the command line, there's many options, including xmlstarlet and xproc. I also made my own, but not a GUI for it yet. Main task could be to make the stylesheet, but if you don't need something too special, generating some HTML shouldn't be a problem. How to select the material? For bulk operation, I usually use find . -name '*.xml' -exec sh -c 'program "$1"' _ {} \; under GNU/Linux. If this is too technical/difficult, maybe there could be some other way?
    – skreutzer
    Commented Dec 17, 2022 at 1:22


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.