blob: 3d7584c8c19ff16f21aab41b75c1cc190b0eb736 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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
*
* 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.
*/
package org.apache.openjpa.lib.meta;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
/**
* Custom non-validating SAX parser which can be used to get the version and
* schema location attributes from the root node.
*
* @author Jeremy Bauer
*/
public class XMLVersionParser extends XMLMetaDataParser {
public static final String VERSION_1_0 = "1.0";
public static final String VERSION_2_0 = "2.0";
public static final String VERSION_2_1 = "2.1";
static private final String VERSION_ATTR = "version";
static private final String XSI_NS =
"http://www.w3.org/2001/XMLSchema-instance";
static private final String SCHEMA_LOCATION = "schemaLocation";
private String _rootElement;
private String _version;
private String _schemaLocation;
public XMLVersionParser(String rootElement) {
_rootElement = rootElement;
setCaching(false);
setValidating(false);
setParseText(false);
}
@Override
protected void endElement(String name) throws SAXException {
}
@Override
protected boolean startElement(String name, Attributes attrs)
throws SAXException {
if (name.equals(_rootElement)) {
// save the version and schema location attributes
_version = attrs.getValue("", VERSION_ATTR);
_schemaLocation = attrs.getValue(XSI_NS, SCHEMA_LOCATION);
// ignore remaining content
ignoreContent(true);
}
return false;
}
/**
* Get the string value of the version attribute on the root element
* @return doc version
*/
public String getVersion() {
return _version;
}
/**
* Get the string value of the schema location attribute on the root element
* @return doc schema location
*/
public String getSchemaLocation() {
return _schemaLocation;
}
}