As others have mentioned, there are MANY tools available that can do this, from open source & free to commercial. However, the first question you need to answer is WHY are you doing this - what are you looking to do with the HTML? Do you simply want the (styled) content? Do you need a "pixel perfect" rendering or would you rather have something that reflows? Do you plan to process the output in a secondary application or is it strictly for viewing. Each of those answers will help you select what tool(s) are accepted for the purpose.
The final decision on what is needed or not depends on each developer's knowledge and experience at the time of production. As a web enthusiast, one very cool thing about JavaScript is that there are SO MANY cool libraries out there. It can get REALLY overwhelming. And the reason for that is simple: JavaScript has been the most used language in the World for over 15 years. There are literally TONS of cool modules out there. So, if you look at all the HTML you are about to style, did you really need all those awesome modules? If you are interested in working on your own code, don't worry about the markup at all — use a free/open source tool and see how it works. The main thing is to make sure the code you create is easy to understand with no bugs. In fact, you might want to use a tool that.