#!/bin/sh # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library. If not, see # . set -e case $1 in -h | --h | --he | --hel | --help) cat <&2 exit 1 ;; esac XMLFILE="$1" TYPE="$2" if [ -z "$XMLFILE" ]; then echo "syntax: $0 XMLFILE [TYPE]" >&2 exit 1 fi if [ ! -f "$XMLFILE" ]; then echo "$0: document $XMLFILE does not exist" >&2 exit 2 fi if [ -z "$TYPE" ]; then ROOT=`xmllint --stream --debug "$XMLFILE" 2>/dev/null | grep "^0 1 " | awk '{ print $3 }'` case "$ROOT" in *domainsnapshot*) # Must come first, since *domain* is a substring TYPE="domainsnapshot" ;; *domain*) TYPE="domain" ;; *network*) TYPE="network" ;; *pool*) TYPE="storagepool" ;; *volume*) TYPE="storagevol" ;; *capabilities*) TYPE="capability" ;; *device*) TYPE="nodedev" ;; *filter*) TYPE="nwfilter" ;; *secret*) TYPE="secret" ;; *interface*) TYPE="interface" ;; *) echo "$0: cannot determine schema type for $XMLFILE" >&2 exit 3 esac fi SCHEMA="@schemadir@/${TYPE}.rng" if [ ! -f "$SCHEMA" ]; then echo "$0: schema $SCHEMA does not exist" >&2 exit 4 fi xmllint --noout --relaxng "$SCHEMA" "$XMLFILE" exit