xmlschemavalidator.java

来自「JAVA 所有包」· Java 代码 · 共 1,737 行 · 第 1/5 页

JAVA
1,737
字号
     * @param attributes The element attributes.     * @param augs     Additional information that may include infoset augmentations     *     * @throws XNIException Thrown by handler to signal an error.     */    public void emptyElement(QName element, XMLAttributes attributes, Augmentations augs)        throws XNIException {        Augmentations modifiedAugs = handleStartElement(element, attributes, augs);        // in the case where there is a {value constraint}, and the element        // doesn't have any text content, change emptyElement call to        // start + characters + end        fDefaultValue = null;        // fElementDepth == -2 indicates that the schema validator was removed        // from the pipeline. then we don't need to call handleEndElement.        if (fElementDepth != -2)            modifiedAugs = handleEndElement(element, modifiedAugs);        // call handlers        if (fDocumentHandler != null) {            if (!fSchemaElementDefault || fDefaultValue == null) {                fDocumentHandler.emptyElement(element, attributes, modifiedAugs);            } else {                fDocumentHandler.startElement(element, attributes, modifiedAugs);                fDocumentHandler.characters(fDefaultValue, null);                fDocumentHandler.endElement(element, modifiedAugs);            }        }    } // emptyElement(QName,XMLAttributes, Augmentations)    /**     * Character content.     *     * @param text The content.     * @param augs     Additional information that may include infoset augmentations     *     * @throws XNIException Thrown by handler to signal an error.     */    public void characters(XMLString text, Augmentations augs) throws XNIException {        text = handleCharacters(text);        // call handlers        if (fDocumentHandler != null) {            if (fNormalizeData && fUnionType) {                // for union types we can't normalize data                // thus we only need to send augs information if any;                // the normalized data for union will be send                // after normalization is performed (at the endElement())                if (augs != null)                    fDocumentHandler.characters(fEmptyXMLStr, augs);            } else {                fDocumentHandler.characters(text, augs);            }        }    } // characters(XMLString)    /**     * Ignorable whitespace. For this method to be called, the document     * source must have some way of determining that the text containing     * only whitespace characters should be considered ignorable. For     * example, the validator can determine if a length of whitespace     * characters in the document are ignorable based on the element     * content model.     *     * @param text The ignorable whitespace.     * @param augs     Additional information that may include infoset augmentations     *     * @throws XNIException Thrown by handler to signal an error.     */    public void ignorableWhitespace(XMLString text, Augmentations augs) throws XNIException {        handleIgnorableWhitespace(text);        // call handlers        if (fDocumentHandler != null) {            fDocumentHandler.ignorableWhitespace(text, augs);        }    } // ignorableWhitespace(XMLString)    /**     * The end of an element.     *     * @param element The name of the element.     * @param augs     Additional information that may include infoset augmentations     *     * @throws XNIException Thrown by handler to signal an error.     */    public void endElement(QName element, Augmentations augs) throws XNIException {        // in the case where there is a {value constraint}, and the element        // doesn't have any text content, add a characters call.        fDefaultValue = null;        Augmentations modifiedAugs = handleEndElement(element, augs);        // call handlers        if (fDocumentHandler != null) {            if (!fSchemaElementDefault || fDefaultValue == null) {                fDocumentHandler.endElement(element, modifiedAugs);            } else {                fDocumentHandler.characters(fDefaultValue, null);                fDocumentHandler.endElement(element, modifiedAugs);            }        }    } // endElement(QName, Augmentations)    /**    * The start of a CDATA section.    *    * @param augs     Additional information that may include infoset augmentations    *    * @throws XNIException Thrown by handler to signal an error.    */    public void startCDATA(Augmentations augs) throws XNIException {        // REVISIT: what should we do here if schema normalization is on??        fInCDATA = true;        // call handlers        if (fDocumentHandler != null) {            fDocumentHandler.startCDATA(augs);        }    } // startCDATA()    /**     * The end of a CDATA section.     *     * @param augs     Additional information that may include infoset augmentations     *     * @throws XNIException Thrown by handler to signal an error.     */    public void endCDATA(Augmentations augs) throws XNIException {        // call handlers        fInCDATA = false;        if (fDocumentHandler != null) {            fDocumentHandler.endCDATA(augs);        }    } // endCDATA()    /**     * The end of the document.     *     * @param augs     Additional information that may include infoset augmentations     *     * @throws XNIException Thrown by handler to signal an error.     */    public void endDocument(Augmentations augs) throws XNIException {        handleEndDocument();        // call handlers        if (fDocumentHandler != null) {            fDocumentHandler.endDocument(augs);        }        fLocator = null;    } // endDocument(Augmentations)    //    // DOMRevalidationHandler methods    //    public boolean characterData(String data, Augmentations augs) {        fSawText = fSawText || data.length() > 0;        // REVISIT: this methods basically duplicates implementation of        //          handleCharacters(). We should be able to reuse some code        // if whitespace == -1 skip normalization, because it is a complexType        // or a union type.        if (fNormalizeData && fWhiteSpace != -1 && fWhiteSpace != XSSimpleType.WS_PRESERVE) {            // normalize data            normalizeWhitespace(data, fWhiteSpace == XSSimpleType.WS_COLLAPSE);            fBuffer.append(fNormalizedStr.ch, fNormalizedStr.offset, fNormalizedStr.length);        } else {            if (fAppendBuffer)                fBuffer.append(data);        }        // When it's a complex type with element-only content, we need to        // find out whether the content contains any non-whitespace character.        boolean allWhiteSpace = true;        if (fCurrentType != null            && fCurrentType.getTypeCategory() == XSTypeDefinition.COMPLEX_TYPE) {            XSComplexTypeDecl ctype = (XSComplexTypeDecl) fCurrentType;            if (ctype.fContentType == XSComplexTypeDecl.CONTENTTYPE_ELEMENT) {                // data outside of element content                for (int i = 0; i < data.length(); i++) {                    if (!XMLChar.isSpace(data.charAt(i))) {                        allWhiteSpace = false;                        fSawCharacters = true;                        break;                    }                }            }        }        return allWhiteSpace;    }    public void elementDefault(String data) {        // no-op    }    //    // XMLDocumentHandler and XMLDTDHandler methods    //    /**     * This method notifies the start of a general entity.     * <p>     * <strong>Note:</strong> This method is not called for entity references     * appearing as part of attribute values.     *     * @param name     The name of the general entity.     * @param identifier The resource identifier.     * @param encoding The auto-detected IANA encoding name of the entity     *                 stream. This value will be null in those situations     *                 where the entity encoding is not auto-detected (e.g.     *                 internal entities or a document entity that is     *                 parsed from a java.io.Reader).     * @param augs     Additional information that may include infoset augmentations     *     * @exception XNIException Thrown by handler to signal an error.     */    public void startGeneralEntity(        String name,        XMLResourceIdentifier identifier,        String encoding,        Augmentations augs)        throws XNIException {        // REVISIT: what should happen if normalize_data_ is on??        fEntityRef = true;        // call handlers        if (fDocumentHandler != null) {            fDocumentHandler.startGeneralEntity(name, identifier, encoding, augs);        }    } // startEntity(String,String,String,String,String)    /**     * Notifies of the presence of a TextDecl line in an entity. If present,     * this method will be called immediately following the startEntity call.     * <p>     * <strong>Note:</strong> This method will never be called for the     * document entity; it is only called for external general entities     * referenced in document content.     * <p>     * <strong>Note:</strong> This method is not called for entity references     * appearing as part of attribute values.     *     * @param version  The XML version, or null if not specified.     * @param encoding The IANA encoding name of the entity.     * @param augs     Additional information that may include infoset augmentations     *     * @throws XNIException Thrown by handler to signal an error.     */    public void textDecl(String version, String encoding, Augmentations augs) throws XNIException {        // call handlers        if (fDocumentHandler != null) {            fDocumentHandler.textDecl(version, encoding, augs);        }    } // textDecl(String,String)    /**     * A comment.     *     * @param text The text in the comment.     * @param augs     Additional information that may include infoset augmentations     *     * @throws XNIException Thrown by application to signal an error.     */    public void comment(XMLString text, Augmentations augs) throws XNIException {                // call handlers        if (fDocumentHandler != null) {            fDocumentHandler.comment(text, augs);        }    } // comment(XMLString)    /**     * A processing instruction. Processing instructions consist of a     * target name and, optionally, text data. The data is only meaningful     * to the application.     * <p>     * Typically, a processing instruction's data will contain a series     * of pseudo-attributes. These pseudo-attributes follow the form of     * element attributes but are <strong>not</strong> parsed or presented     * to the application as anything other than text. The application is     * responsible for parsing the data.     *     * @param target The target.     * @param data   The data or null if none specified.     * @param augs     Additional information that may include infoset augmentations     *     * @throws XNIException Thrown by handler to signal an error.     */    public void processingInstruction(String target, XMLString data, Augmentations augs)        throws XNIException {        // call handlers        if (fDocumentHandler != null) {            fDocumentHandler.processingInstruction(target, data, augs);        }    } // processingInstruction(String,XMLString)    /**     * This method notifies the end of a general entity.     * <p>     * <strong>Note:</strong> This method is not called for entity references     * appearing as part of attribute values.     *     * @param name   The name of the entity.     * @param augs   Additional information that may include infoset augmentations     *     * @exception XNIException     *                   Thrown by handler to signal an error.     */    public void endGeneralEntity(String name, Augmentations augs) throws XNIException {        // call handlers        fEntityRef = false;        if (fDocumentHandler != null) {            fDocumentHandler.endGeneralEntity(name, augs);        }    } // endEntity(String)    // constants    static final int INITIAL_STACK_SIZE = 8;    static final int INC_STACK_SIZE = 8;    //    // Data    //

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?