All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.thaiopensource.relaxng.parse.sax.SAXParseable Maven / Gradle / Ivy

Go to download

Jing is a validator for RELAX NG and other schema languages. This project was taken from http://code.google.com/p/jing-trang and mavenized for inclusion in the Wicket Stuff HTML Validator. The code was taken from the 20091111 release.

There is a newer version: 1.11
Show newest version
package com.thaiopensource.relaxng.parse.sax;

import com.thaiopensource.relaxng.parse.Annotations;
import com.thaiopensource.relaxng.parse.BuildException;
import com.thaiopensource.relaxng.parse.CommentList;
import com.thaiopensource.relaxng.parse.IllegalSchemaException;
import com.thaiopensource.relaxng.parse.IncludedGrammar;
import com.thaiopensource.relaxng.parse.SchemaBuilder;
import com.thaiopensource.relaxng.parse.Scope;
import com.thaiopensource.relaxng.parse.SubParseable;
import com.thaiopensource.resolver.xml.sax.SAXResolver;
import com.thaiopensource.util.Uri;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;

import javax.xml.transform.sax.SAXSource;
import java.io.IOException;

public class SAXParseable, A extends Annotations>
        extends SAXSubParser implements SubParseable {
  private final SAXSource source;

  /**
   *
   * @param source  XMLReader must be non-null
   * @param resolver
   * @param eh
   */
  public SAXParseable(SAXSource source, SAXResolver resolver, ErrorHandler eh) {
    super(resolver, eh);
    this.source = source;
  }

  public P parse(SchemaBuilder schemaBuilder, Scope scope) throws BuildException, IllegalSchemaException {
    try {
      XMLReader xr = source.getXMLReader();
      SchemaParser sp = new SchemaParser(xr, eh, schemaBuilder, null, scope);
      xr.parse(source.getInputSource());
      return sp.getParsedPattern();
    }
    catch (SAXException e) {
      throw BuildException.fromSAXException(e);
    }
    catch (IOException e) {
      throw new BuildException(e);
    }
  }

  public P parseAsInclude(SchemaBuilder schemaBuilder, IncludedGrammar g)
          throws BuildException, IllegalSchemaException {
    try {
      XMLReader xr = source.getXMLReader();
      SchemaParser sp = new SchemaParser(xr, eh, schemaBuilder, g, g);
      xr.parse(source.getInputSource());
      return sp.getParsedPattern();
    }
    catch (SAXException e) {
      throw BuildException.fromSAXException(e);
    }
    catch (IOException e) {
      throw new BuildException(e);
    }
  }

  public String getUri() {
    final String uri = source.getInputSource().getSystemId();
    if (uri == null)
      return null;
    return Uri.escapeDisallowedChars(uri);
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy