diff options
| author | kstranacher <kstranacher@d688527b-c9ab-4aba-bd8d-4036d912da1d> | 2012-02-14 13:44:52 +0000 | 
|---|---|---|
| committer | kstranacher <kstranacher@d688527b-c9ab-4aba-bd8d-4036d912da1d> | 2012-02-14 13:44:52 +0000 | 
| commit | 5d5eaaa2580163023dbc8f2336c5e996e0bcbad0 (patch) | |
| tree | ae1381255198fd1cb225387370f93874c30279c6 /common/src/main/java/at/gv | |
| parent | 94eeead3b212889231ef633c4a721bba6993d8af (diff) | |
| download | moa-id-spss-5d5eaaa2580163023dbc8f2336c5e996e0bcbad0.tar.gz moa-id-spss-5d5eaaa2580163023dbc8f2336c5e996e0bcbad0.tar.bz2 moa-id-spss-5d5eaaa2580163023dbc8f2336c5e996e0bcbad0.zip | |
* Update DOMUtils
* Update MOA-SPSS Konfiguration Dokumentation
* Update Resolver
git-svn-id: https://joinup.ec.europa.eu/svn/moa-idspss/trunk@1240 d688527b-c9ab-4aba-bd8d-4036d912da1d
Diffstat (limited to 'common/src/main/java/at/gv')
| -rw-r--r-- | common/src/main/java/at/gv/egovernment/moa/util/DOMUtils.java | 68 | 
1 files changed, 68 insertions, 0 deletions
| diff --git a/common/src/main/java/at/gv/egovernment/moa/util/DOMUtils.java b/common/src/main/java/at/gv/egovernment/moa/util/DOMUtils.java index a3416d44a..102d3a31f 100644 --- a/common/src/main/java/at/gv/egovernment/moa/util/DOMUtils.java +++ b/common/src/main/java/at/gv/egovernment/moa/util/DOMUtils.java @@ -535,6 +535,74 @@ public class DOMUtils {      return true;    } +   +  /** +   * Schema validate a given DOM element. +   *  +   * @param element The element to validate. +   * @param externalSchemaLocations A <code>String</code> containing namespace +   * URI to schema location pairs, the same way it is accepted by the <code>xsi: +   * schemaLocation</code> attribute.  +   * @param externalNoNamespaceSchemaLocation The schema location of the +   * schema for elements without a namespace, the same way it is accepted by the +   * <code>xsi:noNamespaceSchemaLocation</code> attribute. +   * @return <code>true</code>, if the <code>element</code> validates against +   * the schemas declared in it. +   * @throws SAXException An error occurred parsing the document. +   * @throws IOException An error occurred reading the document from its +   * serialized representation. +   * @throws ParserConfigurationException An error occurred configuring the XML +   * @throws TransformerException An error occurred serializing the element. +   */ +  public static boolean validateElement( +    Element element, +    String externalSchemaLocations, +    String externalNoNamespaceSchemaLocation, +    EntityResolver entityResolver) +    throws +      ParserConfigurationException, +      IOException, +      SAXException, +      TransformerException { + +    byte[] docBytes; +    SAXParser parser; + +    // create the SAX parser +    if (symbolTable != null) { +      parser = new SAXParser(symbolTable, grammarPool); +    } else { +      parser = new SAXParser(); +    } + +    // serialize the document +    docBytes = serializeNode(element, "UTF-8"); + +    // set up parser features and attributes +    parser.setFeature(NAMESPACES_FEATURE, true); +    parser.setFeature(VALIDATION_FEATURE, true); +    parser.setFeature(SCHEMA_VALIDATION_FEATURE, true); +     +    if (externalSchemaLocations != null) { +      parser.setProperty( +        EXTERNAL_SCHEMA_LOCATION_PROPERTY, +        externalSchemaLocations); +    } +    if (externalNoNamespaceSchemaLocation != null) { +      parser.setProperty( +        EXTERNAL_NO_NAMESPACE_SCHEMA_LOCATION_PROPERTY, +        "externalNoNamespaceSchemaLocation"); +    } + +    // set up entity resolver and error handler +    parser.setEntityResolver(entityResolver); +    parser.setErrorHandler(new MOAErrorHandler()); + +    // parse validating +    parser.parse(new InputSource(new ByteArrayInputStream(docBytes))); +    return true; +  } +      /**     * Serialize the given DOM node.     *  | 
