/
validateXmlWithProfile.sh
executable file
·55 lines (42 loc) · 1.2 KB
/
validateXmlWithProfile.sh
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/bin/bash
XML=$1
CONFIG=$2
source $CONFIG
pushd . > /dev/null
SCRIPT_PATH="${BASH_SOURCE[0]}";
if ([ -h "${SCRIPT_PATH}" ]) then
while([ -h "${SCRIPT_PATH}" ]) do cd `dirname "$SCRIPT_PATH"`; SCRIPT_PATH=`readlink "${SCRIPT_PATH}"`; done
fi
cd `dirname ${SCRIPT_PATH}` > /dev/null
SCRIPT_PATH=`pwd`;
popd > /dev/null
source $SCRIPT_PATH/logging.sh
breakup() {
if [ -n "$1" ]; then
error "$*"
rm -r $TEMPDIR
exit 1
fi
}
TEMPDIR=`mktemp -d`
#transform the profile to xslt
ERRORS=`xsltproc -o $TEMPDIR/step1.xsl $SCRIPT_PATH/schematron/iso_dsdl_include.xsl $PROFILE 2>&1`
breakup "$ERRORS"
ERRORS=`xsltproc -o $TEMPDIR/step2.xsl $SCRIPT_PATH/schematron/iso_abstract_expand.xsl $TEMPDIR/step1.xsl 2>&1`
breakup "$ERRORS"
ERRORS=`xsltproc -o $TEMPDIR/step3.xsl $SCRIPT_PATH/schematron/iso_schematron_message.xsl $TEMPDIR/step2.xsl 2>&1`
breakup "$ERRORS"
#notify "transformation done"
#evaluate the profile
ERRORS=`xsltproc $TEMPDIR/step3.xsl $XML 2> $TEMPDIR/result.xml 2>&1`
breakup "$ERRORS"
if [ -s $TEMPDIR/result.xml ]; then
error "`cat $TEMPDIR/result.xml`"
cat $TEMPDIR/result.xml
rm -r $TEMPDIR
else
echo "{"
echo "\"valid\" : true"
echo "}"
rm -r $TEMPDIR
fi