Java Code Examples for com.sun.org.apache.xerces.internal.xni.XMLString#setValues()

The following examples show how to use com.sun.org.apache.xerces.internal.xni.XMLString#setValues() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: XML11DTDScannerImpl.java    From jdk8u60 with GNU General Public License v2.0 4 votes vote down vote up
/**
  * 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:  it could really only be \n or 0x20; all else is normalized, no?  - neilg
         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;
}
 
Example 2
Source File: XML11DocumentScannerImpl.java    From Bytecoder with Apache License 2.0 4 votes vote down vote up
/**
  * 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(null);
     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(null);
         // 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;
}
 
Example 3
Source File: XML11DTDScannerImpl.java    From openjdk-8 with GNU General Public License v2.0 4 votes vote down vote up
/**
  * 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:  it could really only be \n or 0x20; all else is normalized, no?  - neilg
         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;
}
 
Example 4
Source File: XMLScanner.java    From openjdk-jdk8u with GNU General Public License v2.0 4 votes vote down vote up
/**
 * 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(null);
    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(null);
        if (c == ' ' || c == '\n' || c == '\r') {
            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;
}
 
Example 5
Source File: XMLScanner.java    From openjdk-jdk8u with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Scans a pseudo attribute.
 *
 * @param scanningTextDecl True if scanning this pseudo-attribute for a
 *                         TextDecl; false if scanning XMLDecl. This
 *                         flag is needed to report the correct type of
 *                         error.
 * @param value            The string to fill in with the attribute
 *                         value.
 *
 * @return The name of the attribute
 *
 * <strong>Note:</strong> This method uses fStringBuffer2, anything in it
 * at the time of calling is lost.
 */
protected String scanPseudoAttribute(boolean scanningTextDecl,
        XMLString value)
        throws IOException, XNIException {

    String name = scanPseudoAttributeName();
    // XMLEntityManager.print(fEntityManager.getCurrentEntity());

    if (name == null) {
        reportFatalError("PseudoAttrNameExpected", null);
    }
    fEntityScanner.skipSpaces();
    if (!fEntityScanner.skipChar('=', null)) {
        reportFatalError(scanningTextDecl ? "EqRequiredInTextDecl"
                : "EqRequiredInXMLDecl", new Object[]{name});
    }
    fEntityScanner.skipSpaces();
    int quote = fEntityScanner.peekChar();
    if (quote != '\'' && quote != '"') {
        reportFatalError(scanningTextDecl ? "QuoteRequiredInTextDecl"
                : "QuoteRequiredInXMLDecl" , new Object[]{name});
    }
    fEntityScanner.scanChar(NameType.ATTRIBUTE);
    int c = fEntityScanner.scanLiteral(quote, value, false);
    if (c != quote) {
        fStringBuffer2.clear();
        do {
            fStringBuffer2.append(value);
            if (c != -1) {
                if (c == '&' || c == '%' || c == '<' || c == ']') {
                    fStringBuffer2.append((char)fEntityScanner.scanChar(NameType.ATTRIBUTE));
                } else if (XMLChar.isHighSurrogate(c)) {
                    scanSurrogates(fStringBuffer2);
                } else if (isInvalidLiteral(c)) {
                    String key = scanningTextDecl
                            ? "InvalidCharInTextDecl" : "InvalidCharInXMLDecl";
                    reportFatalError(key,
                            new Object[] {Integer.toString(c, 16)});
                            fEntityScanner.scanChar(null);
                }
            }
            c = fEntityScanner.scanLiteral(quote, value, false);
        } while (c != quote);
        fStringBuffer2.append(value);
        value.setValues(fStringBuffer2);
    }
    if (!fEntityScanner.skipChar(quote, null)) {
        reportFatalError(scanningTextDecl ? "CloseQuoteMissingInTextDecl"
                : "CloseQuoteMissingInXMLDecl",
                new Object[]{name});
    }

    // return
    return name;

}
 
Example 6
Source File: XML11DTDScannerImpl.java    From hottub with GNU General Public License v2.0 4 votes vote down vote up
/**
  * 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:  it could really only be \n or 0x20; all else is normalized, no?  - neilg
         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;
}
 
Example 7
Source File: XML11DTDScannerImpl.java    From JDKSourceCode1.8 with MIT License 4 votes vote down vote up
/**
  * 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(null);
     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(null);
         // REVISIT:  it could really only be \n or 0x20; all else is normalized, no?  - neilg
         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;
}
 
Example 8
Source File: XML11DTDScannerImpl.java    From openjdk-jdk9 with GNU General Public License v2.0 4 votes vote down vote up
/**
  * 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(null);
     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(null);
         // REVISIT:  it could really only be \n or 0x20; all else is normalized, no?  - neilg
         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;
}
 
Example 9
Source File: XMLScanner.java    From JDKSourceCode1.8 with MIT License 4 votes vote down vote up
/**
 * Scans a pseudo attribute.
 *
 * @param scanningTextDecl True if scanning this pseudo-attribute for a
 *                         TextDecl; false if scanning XMLDecl. This
 *                         flag is needed to report the correct type of
 *                         error.
 * @param value            The string to fill in with the attribute
 *                         value.
 *
 * @return The name of the attribute
 *
 * <strong>Note:</strong> This method uses fStringBuffer2, anything in it
 * at the time of calling is lost.
 */
protected String scanPseudoAttribute(boolean scanningTextDecl,
        XMLString value)
        throws IOException, XNIException {

    String name = scanPseudoAttributeName();
    // XMLEntityManager.print(fEntityManager.getCurrentEntity());

    if (name == null) {
        reportFatalError("PseudoAttrNameExpected", null);
    }
    fEntityScanner.skipSpaces();
    if (!fEntityScanner.skipChar('=', null)) {
        reportFatalError(scanningTextDecl ? "EqRequiredInTextDecl"
                : "EqRequiredInXMLDecl", new Object[]{name});
    }
    fEntityScanner.skipSpaces();
    int quote = fEntityScanner.peekChar();
    if (quote != '\'' && quote != '"') {
        reportFatalError(scanningTextDecl ? "QuoteRequiredInTextDecl"
                : "QuoteRequiredInXMLDecl" , new Object[]{name});
    }
    fEntityScanner.scanChar(NameType.ATTRIBUTE);
    int c = fEntityScanner.scanLiteral(quote, value, false);
    if (c != quote) {
        fStringBuffer2.clear();
        do {
            fStringBuffer2.append(value);
            if (c != -1) {
                if (c == '&' || c == '%' || c == '<' || c == ']') {
                    fStringBuffer2.append((char)fEntityScanner.scanChar(NameType.ATTRIBUTE));
                } else if (XMLChar.isHighSurrogate(c)) {
                    scanSurrogates(fStringBuffer2);
                } else if (isInvalidLiteral(c)) {
                    String key = scanningTextDecl
                            ? "InvalidCharInTextDecl" : "InvalidCharInXMLDecl";
                    reportFatalError(key,
                            new Object[] {Integer.toString(c, 16)});
                            fEntityScanner.scanChar(null);
                }
            }
            c = fEntityScanner.scanLiteral(quote, value, false);
        } while (c != quote);
        fStringBuffer2.append(value);
        value.setValues(fStringBuffer2);
    }
    if (!fEntityScanner.skipChar(quote, null)) {
        reportFatalError(scanningTextDecl ? "CloseQuoteMissingInTextDecl"
                : "CloseQuoteMissingInXMLDecl",
                new Object[]{name});
    }

    // return
    return name;

}
 
Example 10
Source File: XML11DocumentScannerImpl.java    From jdk8u60 with GNU General Public License v2.0 4 votes vote down vote up
/**
  * 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;
}
 
Example 11
Source File: XMLScanner.java    From jdk1.8-source-analysis with Apache License 2.0 4 votes vote down vote up
/**
 * Scans a pseudo attribute.
 *
 * @param scanningTextDecl True if scanning this pseudo-attribute for a
 *                         TextDecl; false if scanning XMLDecl. This
 *                         flag is needed to report the correct type of
 *                         error.
 * @param value            The string to fill in with the attribute
 *                         value.
 *
 * @return The name of the attribute
 *
 * <strong>Note:</strong> This method uses fStringBuffer2, anything in it
 * at the time of calling is lost.
 */
protected String scanPseudoAttribute(boolean scanningTextDecl,
        XMLString value)
        throws IOException, XNIException {

    String name = scanPseudoAttributeName();
    // XMLEntityManager.print(fEntityManager.getCurrentEntity());

    if (name == null) {
        reportFatalError("PseudoAttrNameExpected", null);
    }
    fEntityScanner.skipSpaces();
    if (!fEntityScanner.skipChar('=', null)) {
        reportFatalError(scanningTextDecl ? "EqRequiredInTextDecl"
                : "EqRequiredInXMLDecl", new Object[]{name});
    }
    fEntityScanner.skipSpaces();
    int quote = fEntityScanner.peekChar();
    if (quote != '\'' && quote != '"') {
        reportFatalError(scanningTextDecl ? "QuoteRequiredInTextDecl"
                : "QuoteRequiredInXMLDecl" , new Object[]{name});
    }
    fEntityScanner.scanChar(NameType.ATTRIBUTE);
    int c = fEntityScanner.scanLiteral(quote, value, false);
    if (c != quote) {
        fStringBuffer2.clear();
        do {
            fStringBuffer2.append(value);
            if (c != -1) {
                if (c == '&' || c == '%' || c == '<' || c == ']') {
                    fStringBuffer2.append((char)fEntityScanner.scanChar(NameType.ATTRIBUTE));
                } else if (XMLChar.isHighSurrogate(c)) {
                    scanSurrogates(fStringBuffer2);
                } else if (isInvalidLiteral(c)) {
                    String key = scanningTextDecl
                            ? "InvalidCharInTextDecl" : "InvalidCharInXMLDecl";
                    reportFatalError(key,
                            new Object[] {Integer.toString(c, 16)});
                            fEntityScanner.scanChar(null);
                }
            }
            c = fEntityScanner.scanLiteral(quote, value, false);
        } while (c != quote);
        fStringBuffer2.append(value);
        value.setValues(fStringBuffer2);
    }
    if (!fEntityScanner.skipChar(quote, null)) {
        reportFatalError(scanningTextDecl ? "CloseQuoteMissingInTextDecl"
                : "CloseQuoteMissingInXMLDecl",
                new Object[]{name});
    }

    // return
    return name;

}
 
Example 12
Source File: XMLScanner.java    From openjdk-8-source with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Scans a pseudo attribute.
 *
 * @param scanningTextDecl True if scanning this pseudo-attribute for a
 *                         TextDecl; false if scanning XMLDecl. This
 *                         flag is needed to report the correct type of
 *                         error.
 * @param value            The string to fill in with the attribute
 *                         value.
 *
 * @return The name of the attribute
 *
 * <strong>Note:</strong> This method uses fStringBuffer2, anything in it
 * at the time of calling is lost.
 */
public String scanPseudoAttribute(boolean scanningTextDecl,
        XMLString value)
        throws IOException, XNIException {

    String name = scanPseudoAttributeName();
    // XMLEntityManager.print(fEntityManager.getCurrentEntity());

    if (name == null) {
        reportFatalError("PseudoAttrNameExpected", null);
    }
    fEntityScanner.skipSpaces();
    if (!fEntityScanner.skipChar('=')) {
        reportFatalError(scanningTextDecl ? "EqRequiredInTextDecl"
                : "EqRequiredInXMLDecl", new Object[]{name});
    }
    fEntityScanner.skipSpaces();
    int quote = fEntityScanner.peekChar();
    if (quote != '\'' && quote != '"') {
        reportFatalError(scanningTextDecl ? "QuoteRequiredInTextDecl"
                : "QuoteRequiredInXMLDecl" , new Object[]{name});
    }
    fEntityScanner.scanChar();
    int c = fEntityScanner.scanLiteral(quote, value);
    if (c != quote) {
        fStringBuffer2.clear();
        do {
            fStringBuffer2.append(value);
            if (c != -1) {
                if (c == '&' || c == '%' || c == '<' || c == ']') {
                    fStringBuffer2.append((char)fEntityScanner.scanChar());
                } else if (XMLChar.isHighSurrogate(c)) {
                    scanSurrogates(fStringBuffer2);
                } else if (isInvalidLiteral(c)) {
                    String key = scanningTextDecl
                            ? "InvalidCharInTextDecl" : "InvalidCharInXMLDecl";
                    reportFatalError(key,
                            new Object[] {Integer.toString(c, 16)});
                            fEntityScanner.scanChar();
                }
            }
            c = fEntityScanner.scanLiteral(quote, value);
        } while (c != quote);
        fStringBuffer2.append(value);
        value.setValues(fStringBuffer2);
    }
    if (!fEntityScanner.skipChar(quote)) {
        reportFatalError(scanningTextDecl ? "CloseQuoteMissingInTextDecl"
                : "CloseQuoteMissingInXMLDecl",
                new Object[]{name});
    }

    // return
    return name;

}
 
Example 13
Source File: XMLScanner.java    From jdk8u60 with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Scans a pseudo attribute.
 *
 * @param scanningTextDecl True if scanning this pseudo-attribute for a
 *                         TextDecl; false if scanning XMLDecl. This
 *                         flag is needed to report the correct type of
 *                         error.
 * @param value            The string to fill in with the attribute
 *                         value.
 *
 * @return The name of the attribute
 *
 * <strong>Note:</strong> This method uses fStringBuffer2, anything in it
 * at the time of calling is lost.
 */
public String scanPseudoAttribute(boolean scanningTextDecl,
        XMLString value)
        throws IOException, XNIException {

    String name = scanPseudoAttributeName();
    // XMLEntityManager.print(fEntityManager.getCurrentEntity());

    if (name == null) {
        reportFatalError("PseudoAttrNameExpected", null);
    }
    fEntityScanner.skipSpaces();
    if (!fEntityScanner.skipChar('=')) {
        reportFatalError(scanningTextDecl ? "EqRequiredInTextDecl"
                : "EqRequiredInXMLDecl", new Object[]{name});
    }
    fEntityScanner.skipSpaces();
    int quote = fEntityScanner.peekChar();
    if (quote != '\'' && quote != '"') {
        reportFatalError(scanningTextDecl ? "QuoteRequiredInTextDecl"
                : "QuoteRequiredInXMLDecl" , new Object[]{name});
    }
    fEntityScanner.scanChar();
    int c = fEntityScanner.scanLiteral(quote, value);
    if (c != quote) {
        fStringBuffer2.clear();
        do {
            fStringBuffer2.append(value);
            if (c != -1) {
                if (c == '&' || c == '%' || c == '<' || c == ']') {
                    fStringBuffer2.append((char)fEntityScanner.scanChar());
                } else if (XMLChar.isHighSurrogate(c)) {
                    scanSurrogates(fStringBuffer2);
                } else if (isInvalidLiteral(c)) {
                    String key = scanningTextDecl
                            ? "InvalidCharInTextDecl" : "InvalidCharInXMLDecl";
                    reportFatalError(key,
                            new Object[] {Integer.toString(c, 16)});
                            fEntityScanner.scanChar();
                }
            }
            c = fEntityScanner.scanLiteral(quote, value);
        } while (c != quote);
        fStringBuffer2.append(value);
        value.setValues(fStringBuffer2);
    }
    if (!fEntityScanner.skipChar(quote)) {
        reportFatalError(scanningTextDecl ? "CloseQuoteMissingInTextDecl"
                : "CloseQuoteMissingInXMLDecl",
                new Object[]{name});
    }

    // return
    return name;

}
 
Example 14
Source File: XML11DocumentScannerImpl.java    From TencentKona-8 with GNU General Public License v2.0 4 votes vote down vote up
/**
  * 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(null);
     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(null);
         // 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;
}
 
Example 15
Source File: XMLScanner.java    From openjdk-jdk9 with GNU General Public License v2.0 4 votes vote down vote up
/**
 * 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(null);
    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(null);
        if (c == ' ' || c == '\n' || c == '\r') {
            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;
}
 
Example 16
Source File: XMLScanner.java    From openjdk-8 with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Scans a pseudo attribute.
 *
 * @param scanningTextDecl True if scanning this pseudo-attribute for a
 *                         TextDecl; false if scanning XMLDecl. This
 *                         flag is needed to report the correct type of
 *                         error.
 * @param value            The string to fill in with the attribute
 *                         value.
 *
 * @return The name of the attribute
 *
 * <strong>Note:</strong> This method uses fStringBuffer2, anything in it
 * at the time of calling is lost.
 */
public String scanPseudoAttribute(boolean scanningTextDecl,
        XMLString value)
        throws IOException, XNIException {

    String name = scanPseudoAttributeName();
    // XMLEntityManager.print(fEntityManager.getCurrentEntity());

    if (name == null) {
        reportFatalError("PseudoAttrNameExpected", null);
    }
    fEntityScanner.skipSpaces();
    if (!fEntityScanner.skipChar('=')) {
        reportFatalError(scanningTextDecl ? "EqRequiredInTextDecl"
                : "EqRequiredInXMLDecl", new Object[]{name});
    }
    fEntityScanner.skipSpaces();
    int quote = fEntityScanner.peekChar();
    if (quote != '\'' && quote != '"') {
        reportFatalError(scanningTextDecl ? "QuoteRequiredInTextDecl"
                : "QuoteRequiredInXMLDecl" , new Object[]{name});
    }
    fEntityScanner.scanChar();
    int c = fEntityScanner.scanLiteral(quote, value);
    if (c != quote) {
        fStringBuffer2.clear();
        do {
            fStringBuffer2.append(value);
            if (c != -1) {
                if (c == '&' || c == '%' || c == '<' || c == ']') {
                    fStringBuffer2.append((char)fEntityScanner.scanChar());
                } else if (XMLChar.isHighSurrogate(c)) {
                    scanSurrogates(fStringBuffer2);
                } else if (isInvalidLiteral(c)) {
                    String key = scanningTextDecl
                            ? "InvalidCharInTextDecl" : "InvalidCharInXMLDecl";
                    reportFatalError(key,
                            new Object[] {Integer.toString(c, 16)});
                            fEntityScanner.scanChar();
                }
            }
            c = fEntityScanner.scanLiteral(quote, value);
        } while (c != quote);
        fStringBuffer2.append(value);
        value.setValues(fStringBuffer2);
    }
    if (!fEntityScanner.skipChar(quote)) {
        reportFatalError(scanningTextDecl ? "CloseQuoteMissingInTextDecl"
                : "CloseQuoteMissingInXMLDecl",
                new Object[]{name});
    }

    // return
    return name;

}
 
Example 17
Source File: XMLScanner.java    From TencentKona-8 with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Scans a pseudo attribute.
 *
 * @param scanningTextDecl True if scanning this pseudo-attribute for a
 *                         TextDecl; false if scanning XMLDecl. This
 *                         flag is needed to report the correct type of
 *                         error.
 * @param value            The string to fill in with the attribute
 *                         value.
 *
 * @return The name of the attribute
 *
 * <strong>Note:</strong> This method uses fStringBuffer2, anything in it
 * at the time of calling is lost.
 */
protected String scanPseudoAttribute(boolean scanningTextDecl,
        XMLString value)
        throws IOException, XNIException {

    String name = scanPseudoAttributeName();
    // XMLEntityManager.print(fEntityManager.getCurrentEntity());

    if (name == null) {
        reportFatalError("PseudoAttrNameExpected", null);
    }
    fEntityScanner.skipSpaces();
    if (!fEntityScanner.skipChar('=', null)) {
        reportFatalError(scanningTextDecl ? "EqRequiredInTextDecl"
                : "EqRequiredInXMLDecl", new Object[]{name});
    }
    fEntityScanner.skipSpaces();
    int quote = fEntityScanner.peekChar();
    if (quote != '\'' && quote != '"') {
        reportFatalError(scanningTextDecl ? "QuoteRequiredInTextDecl"
                : "QuoteRequiredInXMLDecl" , new Object[]{name});
    }
    fEntityScanner.scanChar(NameType.ATTRIBUTE);
    int c = fEntityScanner.scanLiteral(quote, value, false);
    if (c != quote) {
        fStringBuffer2.clear();
        do {
            fStringBuffer2.append(value);
            if (c != -1) {
                if (c == '&' || c == '%' || c == '<' || c == ']') {
                    fStringBuffer2.append((char)fEntityScanner.scanChar(NameType.ATTRIBUTE));
                } else if (XMLChar.isHighSurrogate(c)) {
                    scanSurrogates(fStringBuffer2);
                } else if (isInvalidLiteral(c)) {
                    String key = scanningTextDecl
                            ? "InvalidCharInTextDecl" : "InvalidCharInXMLDecl";
                    reportFatalError(key,
                            new Object[] {Integer.toString(c, 16)});
                            fEntityScanner.scanChar(null);
                }
            }
            c = fEntityScanner.scanLiteral(quote, value, false);
        } while (c != quote);
        fStringBuffer2.append(value);
        value.setValues(fStringBuffer2);
    }
    if (!fEntityScanner.skipChar(quote, null)) {
        reportFatalError(scanningTextDecl ? "CloseQuoteMissingInTextDecl"
                : "CloseQuoteMissingInXMLDecl",
                new Object[]{name});
    }

    // return
    return name;

}
 
Example 18
Source File: XML11DTDScannerImpl.java    From Bytecoder with Apache License 2.0 4 votes vote down vote up
/**
  * 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(null);
     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(null);
         // REVISIT:  it could really only be \n or 0x20; all else is normalized, no?  - neilg
         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;
}
 
Example 19
Source File: XML11DTDScannerImpl.java    From jdk1.8-source-analysis with Apache License 2.0 4 votes vote down vote up
/**
  * 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(null);
     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(null);
         // REVISIT:  it could really only be \n or 0x20; all else is normalized, no?  - neilg
         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;
}
 
Example 20
Source File: XMLScanner.java    From Bytecoder with Apache License 2.0 4 votes vote down vote up
/**
 * Scans a pseudo attribute.
 *
 * @param scanningTextDecl True if scanning this pseudo-attribute for a
 *                         TextDecl; false if scanning XMLDecl. This
 *                         flag is needed to report the correct type of
 *                         error.
 * @param value            The string to fill in with the attribute
 *                         value.
 *
 * @return The name of the attribute
 *
 * <strong>Note:</strong> This method uses fStringBuffer2, anything in it
 * at the time of calling is lost.
 */
protected String scanPseudoAttribute(boolean scanningTextDecl,
        XMLString value)
        throws IOException, XNIException {

    String name = scanPseudoAttributeName();
    // XMLEntityManager.print(fEntityManager.getCurrentEntity());

    if (name == null) {
        reportFatalError("PseudoAttrNameExpected", null);
    }
    fEntityScanner.skipSpaces();
    if (!fEntityScanner.skipChar('=', null)) {
        reportFatalError(scanningTextDecl ? "EqRequiredInTextDecl"
                : "EqRequiredInXMLDecl", new Object[]{name});
    }
    fEntityScanner.skipSpaces();
    int quote = fEntityScanner.peekChar();
    if (quote != '\'' && quote != '"') {
        reportFatalError(scanningTextDecl ? "QuoteRequiredInTextDecl"
                : "QuoteRequiredInXMLDecl" , new Object[]{name});
    }
    fEntityScanner.scanChar(NameType.ATTRIBUTE);
    int c = fEntityScanner.scanLiteral(quote, value, false);
    if (c != quote) {
        fStringBuffer2.clear();
        do {
            fStringBuffer2.append(value);
            if (c != -1) {
                if (c == '&' || c == '%' || c == '<' || c == ']') {
                    fStringBuffer2.append((char)fEntityScanner.scanChar(NameType.ATTRIBUTE));
                } else if (XMLChar.isHighSurrogate(c)) {
                    scanSurrogates(fStringBuffer2);
                } else if (isInvalidLiteral(c)) {
                    String key = scanningTextDecl
                            ? "InvalidCharInTextDecl" : "InvalidCharInXMLDecl";
                    reportFatalError(key,
                            new Object[] {Integer.toString(c, 16)});
                            fEntityScanner.scanChar(null);
                }
            }
            c = fEntityScanner.scanLiteral(quote, value, false);
        } while (c != quote);
        fStringBuffer2.append(value);
        value.setValues(fStringBuffer2);
    }
    if (!fEntityScanner.skipChar(quote, null)) {
        reportFatalError(scanningTextDecl ? "CloseQuoteMissingInTextDecl"
                : "CloseQuoteMissingInXMLDecl",
                new Object[]{name});
    }

    // return
    return name;

}