aboutsummaryrefslogtreecommitdiff
path: root/tools/validate-docx.sh
blob: 4494393296709478f68ed6001b091b458add1f8c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/sh
# Modified by edwintorok from https://github.com/devoidfury/docx-validator
# to look at more files than just document.xml.
# Further modified by jgm for portability.
tmpdir=$(mktemp -d)
error_files=""
errors=0
for file in "$@"; do
  file_errors=0
  echo "*** Checking $file"
  rm -rf "$tmpdir"
  unzip -q -o -j "$file" "word/*.xml" -d "$tmpdir"
  for i in "$tmpdir"/*.xml ; do
    xmllint --format "${i}" > "${i}.pretty.xml"
  done
  XSD="./docx-validator/schemas/microsoft/wml-2010.xsd"
  for i in "$tmpdir"/*.pretty.xml; do
    xmllint -noout -nonet \
      -schema "${XSD}" \
      "${i}" 2>&1 || file_errors=$((file_errors + 1))
  done
  if [ $file_errors -gt 0 ]; then
      errors=$((file_errors + errors))
      error_files="$error_files\n$file"
  fi
done
if [ $errors -gt 0 ]; then
   echo "These files failed validation:$error_files"
fi
exit $errors