⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xml11documentscannerimpl.java

📁 java1.6众多例子参考
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                            }                        }                        else if (entityName == fGtSymbol) {                            fStringBuffer.append('>');                            if (DEBUG_ATTR_NORMALIZATION) {                                System.out.println("** valueB: \""                                                   + fStringBuffer.toString()                                                   + "\"");                            }                        }                        else if (entityName == fQuotSymbol) {                            fStringBuffer.append('"');                            if (DEBUG_ATTR_NORMALIZATION) {                                System.out.println("** valueD: \""                                                   + fStringBuffer.toString()                                                   + "\"");                            }                        }                        else {                            if (fEntityManager.isExternalEntity(entityName)) {                                reportFatalError("ReferenceToExternalEntity",                                                 new Object[] { entityName });                            }                            else {                                if (!fEntityManager.isDeclaredEntity(entityName)) {                                    //WFC & VC: Entity Declared                                    if (checkEntities) {                                        if (fValidation) {                                            fErrorReporter.reportError(XMLMessageFormatter.XML_DOMAIN,                                                                       "EntityNotDeclared",                                                                       new Object[]{entityName},                                                                       XMLErrorReporter.SEVERITY_ERROR);                                        }                                    }                                    else {                                        reportFatalError("EntityNotDeclared",                                                         new Object[]{entityName});                                    }                                }                                fEntityManager.startEntity(entityName, true);                            }                        }                    }                }                else if (c == '<') {                    reportFatalError("LessthanInAttValue",                                     new Object[] { eleName, atName });                    fEntityScanner.scanChar();                    if (entityDepth == fEntityDepth) {                        fStringBuffer2.append((char)c);                    }                }                else if (c == '%' || c == ']') {                    fEntityScanner.scanChar();                    fStringBuffer.append((char)c);                    if (entityDepth == fEntityDepth) {                        fStringBuffer2.append((char)c);                    }                    if (DEBUG_ATTR_NORMALIZATION) {                        System.out.println("** valueF: \""                                           + fStringBuffer.toString() + "\"");                    }                }                // note that none of these characters should ever get through                // XML11EntityScanner.  Not sure why                // this check was originally necessary.  - NG                else if (c == '\n' || c == '\r' || c == 0x85 || c == 0x2028) {                    fEntityScanner.scanChar();                    fStringBuffer.append(' ');                    if (entityDepth == fEntityDepth) {                        fStringBuffer2.append('\n');                    }                }                else if (c != -1 && XMLChar.isHighSurrogate(c)) {                    fStringBuffer3.clear();                    if (scanSurrogates(fStringBuffer3)) {                        fStringBuffer.append(fStringBuffer3);                        if (entityDepth == fEntityDepth) {                            fStringBuffer2.append(fStringBuffer3);                        }                        if (DEBUG_ATTR_NORMALIZATION) {                            System.out.println("** valueI: \""                                               + fStringBuffer.toString()                                               + "\"");                        }                    }                }                else if (c != -1 && XML11Char.isXML11Invalid(c)) {                    reportFatalError("InvalidCharInAttValue",                                     new Object[] {eleName, atName, Integer.toString(c, 16)});                    fEntityScanner.scanChar();                    if (entityDepth == fEntityDepth) {                        fStringBuffer2.append((char)c);                    }                }                c = fEntityScanner.scanLiteral(quote, value);                if (entityDepth == fEntityDepth) {                    fStringBuffer2.append(value);                }                normalizeWhitespace(value);            } while (c != quote || entityDepth != fEntityDepth);            fStringBuffer.append(value);            if (DEBUG_ATTR_NORMALIZATION) {                System.out.println("** valueN: \""                                   + fStringBuffer.toString() + "\"");            }            value.setValues(fStringBuffer);            fScanningAttribute = false;        }        nonNormalizedValue.setValues(fStringBuffer2);        // quote        int cquote = fEntityScanner.scanChar();        if (cquote != quote) {            reportFatalError("CloseQuoteExpected", new Object[]{eleName,atName});        }        return nonNormalizedValue.equals(value.ch, value.offset, value.length);    } // scanAttributeValue()    //    // XMLScanner methods    //    // NOTE:  this is a carbon copy of the code in XML11DTDScannerImpl;    // we need to override these methods in both places.      // this needs to be refactored!!!  - NG    /**     * Scans public ID literal.     *     * [12] PubidLiteral ::= '"' PubidChar* '"' | "'" (PubidChar - "'")* "'"      * [13] PubidChar::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]     *     * The returned string is normalized according to the following rule,     * from http://www.w3.org/TR/REC-xml#dt-pubid:     *     * Before a match is attempted, all strings of white space in the public     * identifier must be normalized to single space characters (#x20), and     * leading and trailing white space must be removed.     *     * @param literal The string to fill in with the public ID literal.     * @return True on success.     *     * <strong>Note:</strong> This method uses fStringBuffer, anything in it at     * the time of calling is lost.     */    protected boolean scanPubidLiteral(XMLString literal)        throws IOException, XNIException    {        int quote = fEntityScanner.scanChar();        if (quote != '\'' && quote != '"') {            reportFatalError("QuoteRequiredInPublicID", null);            return false;        }        fStringBuffer.clear();        // skip leading whitespace        boolean skipSpace = true;        boolean dataok = true;        while (true) {            int c = fEntityScanner.scanChar();            // REVISIT:  none of these except \n and 0x20 should make it past the entity scanner            if (c == ' ' || c == '\n' || c == '\r' || c == 0x85 || c == 0x2028) {                if (!skipSpace) {                    // take the first whitespace as a space and skip the others                    fStringBuffer.append(' ');                    skipSpace = true;                }            }            else if (c == quote) {                if (skipSpace) {                    // if we finished on a space let's trim it                    fStringBuffer.length--;                }                literal.setValues(fStringBuffer);                break;            }            else if (XMLChar.isPubid(c)) {                fStringBuffer.append((char)c);                skipSpace = false;            }            else if (c == -1) {                reportFatalError("PublicIDUnterminated", null);                return false;            }            else {                dataok = false;                reportFatalError("InvalidCharInPublicID",                                 new Object[]{Integer.toHexString(c)});            }        }        return dataok;   }       /**     * Normalize whitespace in an XMLString converting all whitespace     * characters to space characters.     */    protected void normalizeWhitespace(XMLString value) {        int end = value.offset + value.length;	    for (int i = value.offset; i < end; ++i) {           int c = value.ch[i];           if (XMLChar.isSpace(c)) {               value.ch[i] = ' ';           }       }    }        /**     * Normalize whitespace in an XMLString converting all whitespace     * characters to space characters.     */    protected void normalizeWhitespace(XMLString value, int fromIndex) {        int end = value.offset + value.length;        for (int i = value.offset + fromIndex; i < end; ++i) {            int c = value.ch[i];            if (XMLChar.isSpace(c)) {                value.ch[i] = ' ';            }        }    }        /**     * Checks whether this string would be unchanged by normalization.     *      * @return -1 if the value would be unchanged by normalization,     * otherwise the index of the first whitespace character which     * would be transformed.     */    protected int isUnchangedByNormalization(XMLString value) {        int end = value.offset + value.length;        for (int i = value.offset; i < end; ++i) {            int c = value.ch[i];            if (XMLChar.isSpace(c)) {                return i - value.offset;            }        }        return -1;    }    // returns true if the given character is not    // valid with respect to the version of    // XML understood by this scanner.    protected boolean isInvalid(int value) {        return (XML11Char.isXML11Invalid(value));     } // isInvalid(int):  boolean     // returns true if the given character is not    // valid or may not be used outside a character reference     // with respect to the version of XML understood by this scanner.    protected boolean isInvalidLiteral(int value) {        return (!XML11Char.isXML11ValidLiteral(value));     } // isInvalidLiteral(int):  boolean    // returns true if the given character is     // a valid nameChar with respect to the version of    // XML understood by this scanner.    protected boolean isValidNameChar(int value) {        return (XML11Char.isXML11Name(value));     } // isValidNameChar(int):  boolean    // returns true if the given character is     // a valid nameStartChar with respect to the version of    // XML understood by this scanner.    protected boolean isValidNameStartChar(int value) {        return (XML11Char.isXML11NameStart(value));     } // isValidNameStartChar(int):  boolean        // returns true if the given character is    // a valid NCName character with respect to the version of    // XML understood by this scanner.    protected boolean isValidNCName(int value) {        return (XML11Char.isXML11NCName(value));    } // isValidNCName(int):  boolean        // returns true if the given character is     // a valid high surrogate for a nameStartChar     // with respect to the version of XML understood     // by this scanner.    protected boolean isValidNameStartHighSurrogate(int value) {        return XML11Char.isXML11NameHighSurrogate(value);     } // isValidNameStartHighSurrogate(int):  boolean    protected boolean versionSupported(String version) {        return (version.equals("1.1") || version.equals("1.0"));    } // versionSupported(String):  boolean        // returns the error message key for unsupported    // versions of XML with respect to the version of    // XML understood by this scanner.    protected String getVersionNotSupportedKey () {        return "VersionNotSupported11";    } // getVersionNotSupportedKey: String} // class XML11DocumentScannerImpl

⌨️ 快捷键说明

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