########################################################################
#
# 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.

# Directory where the OpenDocument v1.2 schemas are located
# These properties are used by targets which add or check information
# in specification documents based on the schema.
opendocument.v12.part1.schema.dir=
opendocument.v12.part3.schema.dir=

# OpenDocument v1.2 specification editorial version source document
# These properties are used by targets which convert editorial versions into
# product versions.
opendocument.v12.part0.spec-source=
opendocument.v12.part1.spec-source=
opendocument.v12.part2.spec-source=
opendocument.v12.part3.spec-source=

# Directory where the OpenDocument v1.2 product specification documents are located
# This property is used by the XHTML creation target.
opendocument.v12.product.dir=