########################################################################
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
#
# Copyright 2009, 2010 Oracle and/or its affiliates. All rights reserved.
#
# Use is subject to license terms.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy
# of the License at http://www.apache.org/licenses/LICENSE-2.0. You can also
# obtain a copy of the License at http://odftoolkit.org/docs/license.txt
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#
# See the License for the specific language governing permissions and
# limitations under the License.
#
########################################################################/

# The following properties have to be set either in this file, or in the
# nbproject/private/private.properties file of the project.

# location of the odfxsltrunner project (This property cannot be set in private properties.
project.odfxsltrunner=../conformancetools~odf-xslt-runner-src

# ODF2XHTML style sheet
reference.odf2xhtml.xsl=

# saxon.jar
reference.saxon.jar=

# xmllint executable
exec.xmllint=

# xmllint path extensions
exec.xmllint.path=
