/usr/bin/xmlrev is in xmldiff-xmlrev 0.6.10-2.1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | #!/bin/bash
#
# (c) 2001-2004 Nicolas Chauvat <nicolas.chauvat@logilab.fr> - License is GPL
set -e
DIFF="xmldiff -x"
TMPFILE_S=$(mktemp /tmp/xmlrev.start.XXXXXX) || exit 1
TMPFILE_X=$(mktemp /tmp/xmlrev.dest.XXXXXX) || exit 1
TMPFILE_D=$(mktemp /tmp/xmlrev.xupdate.XXXXXX) || exit 1
TMPFILE_XSLT=$(mktemp /tmp/xmlrev.xslt.XXXXXX) || exit 1
TMPFILES="$TMPFILE_S $TMPFILE_X $TMPFILE_D $TMPFILE_XSLT"
function guess_doc_type() {
# $1 filepath
FT=`file -b -- "$1"`
case "$FT" in
*SGML*)
echo SGML
;;
*XML*)
echo XML
;;
*text*)
case "$1" in
*.xml|*.XML|*.xsl|*.XSL|*.xslt|*.XSLT)
echo XML
;;
esac
;;
esac
}
function sgml_to_xml() {
# $1 filepath
sgmlnorm "$1" > "$TMPFILE_S"
xmllint --sgml --nowarning "$TMPFILE_S" | grep -v "<!DOCTYPE"
}
function normalize() {
# $1 filepath
DT=`guess_doc_type "$1"`
case "$DT" in
SGML)
sgml_to_xml "$1" > "$TMPFILE_X"
echo $TMPFILE_X
;;
XML)
echo $1
;;
esac
}
function check_args(){
if [ -z "$1" ] || [ -z "$2" ]
then
usage
exit 1
fi
for filename in "$1" "$2"
do
if [ ! -e "$filename" ]
then
echo Error:
echo $filename not found
echo
usage
exit 2
fi
DOC=`normalize "$filename"`
if [ -z "$DOC" ]
then
echo Error: $filename is not an XML or SGML file
usage
exit 3
fi
done
}
function diff() {
check_args "$1" "$2"
DOC_OLD=`normalize "$1"`
DOC_NEW=`normalize "$2"`
$DIFF "$DOC_OLD" "$DOC_NEW" || true
}
function revision() {
check_args "$1" "$2"
DOC_OLD=`normalize "$1"`
DOC_NEW=`normalize "$2"`
$DIFF "$DOC_OLD" "$DOC_NEW" > "$TMPFILE_D" || true
xsltproc "$ML_DIR"/xmlrev.xslt "$TMPFILE_D" > "$TMPFILE_XSLT"
xsltproc "$TMPFILE_XSLT" "$DOC_OLD"
}
function usage(){
echo "USAGE: $0 [OPTIONS] from_file to_file"
echo
echo OPTIONS:
echo " --revision"
echo " show difference between revisions as an HTML file (default)"
echo " --diff"
echo " show difference between revisions as xupdate"
}
ML_DIR=/usr/share/sgml/stylesheet/xmldiff
case "$1" in
--help)
usage
exit 0
;;
--revision)
revision "$2" "$3"
;;
--diff)
diff "$2" "$3"
;;
*)
revision "$1" "$2"
;;
esac
rm -f $TMPFILES
|