The code below is an only slightly modified variant from the end of my answer to your previous question on the same topic, utilizing identical ways of doing the actual batch processing.
If the files that you want to process all match the pattern ./*.xhtml, i.e., if they have a .xhtml filename suffix and are in the current directory, then you would be able to process all those files with either of the above commands using a simple shell loop.
for name in ./*.xhtml; do
xmlstarlet fo --omit-decl --recover --html "$name" >"$name".new
done
The command in the loop outputs the resulting document to files with the same name as the old files but with a .new filename suffix appended.
To run the above on all XHTML files in a directory hierarchy, i.e., in a directory with several subdirectories, you may use find.
find . -type f -name '*.xhtml' -exec sh -c '
for name do
xmlstarlet fo --omit-decl --recover --html "$name" >"$name".new
done' sh {} +
xmlstarletcommand to what you show here. Did you try that? What issues did you run into when you tried? Do you want me to repeat the code in an answer here?