diff --git a/.github/workflows/format-validation.yml b/.github/workflows/format-validation.yml
index 1c0060cf8..2104f9da1 100644
--- a/.github/workflows/format-validation.yml
+++ b/.github/workflows/format-validation.yml
@@ -9,6 +9,7 @@ on:
       - 'test/writer.jats_articleauthoring'
       - 'test/writer.jats_publishing'
       - 'test/writer.jats_archiving'
+      - 'test/tables.jats_archiving'
   pull_request:
     branches:
       - '*'
@@ -17,6 +18,7 @@ on:
       - 'test/writer.jats_articleauthoring'
       - 'test/writer.jats_publishing'
       - 'test/writer.jats_archiving'
+      - 'test/tables.jats_archiving'
 
 jobs:
   jats:
@@ -31,19 +33,16 @@ jobs:
           - articleauthoring
           - publishing
           - archiving
-        file:
-          - writer
-          # tables are not supported yet, the files contain only snippets.
     steps:
       - name: Checkout
         uses: actions/checkout@v2
 
-      - name: Validate
+      - name: Validate writer output
         run: |
-          filename=test/${{ matrix.file }}.jats_${{ matrix.tagset }}
+          filename=test/writer.jats_${{ matrix.tagset }}
           printf "Validating file %s\n" "$filename"
           json="$(curl --form "xml=@${filename}" --silent "$VALIDATOR_URL")"
-          err_count="$(echo "$json" | jq '.errors | length')"
+          err_count="$(printf '%s' "$json" | jq '.errors | length')"
           if [ "$err_count" -eq 0 ]; then
               printf "File was validated successfully.\n"
               exit 0
@@ -51,3 +50,28 @@ jobs:
               printf "Validator report:\n%s" "$json"
               exit 1
           fi
+
+      - name: Validate tables
+        # Archiving has the simplest template, so we only check with that.
+        if: matrix.tagset == 'archiving'
+        run: |
+          tmpl="$(cat <<EOF
+          <?xml version="1.0" encoding="utf-8" ?>
+          <!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.2 20190208//EN"
+                  "JATS-archivearticle1.dtd">
+          <article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="1.2" article-type="other">
+          <front><article-meta></article-meta></front>
+          <body>%s</body></article>
+          EOF
+          )"
+          jats_file="$(mktemp jats-tables.XXXXX)"
+          printf "$tmpl" "$(cat test/tables.jats_archiving)" > "$jats_file"
+          json="$(curl --form "xml=@${jats_file}" --silent "$VALIDATOR_URL")"
+          err_count="$(printf "%s" "$json" | jq '.errors | length')"
+          if [ "$err_count" -eq 0 ]; then
+              printf "Table output is valid when used as body content.\n"
+              exit 0
+          else
+              printf "Validator report:\n%s" "$json"
+              exit 1
+          fi