Java Code Examples for com.sun.org.apache.xerces.internal.impl.dv.XSSimpleType#WS_COLLAPSE

The following examples show how to use com.sun.org.apache.xerces.internal.impl.dv.XSSimpleType#WS_COLLAPSE . 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: FullDVFactory.java    From openjdk-jdk8u-backup with GNU General Public License v2.0 4 votes vote down vote up
static void createBuiltInTypes(SymbolHash types) {
    // create base types first
    BaseDVFactory.createBuiltInTypes(types);

    // full schema simple type names
    final String DOUBLE            = "double";
    final String DURATION          = "duration";
    final String ENTITY            = "ENTITY";
    final String ENTITIES          = "ENTITIES";
    final String FLOAT             = "float";
    final String HEXBINARY         = "hexBinary";
    final String ID                = "ID";
    final String IDREF             = "IDREF";
    final String IDREFS            = "IDREFS";
    final String NAME              = "Name";
    final String NCNAME            = "NCName";
    final String NMTOKEN           = "NMTOKEN";
    final String NMTOKENS          = "NMTOKENS";
    final String LANGUAGE          = "language";
    final String NORMALIZEDSTRING  = "normalizedString";
    final String NOTATION          = "NOTATION";
    final String QNAME             = "QName";
    final String STRING            = "string";
    final String TOKEN             = "token";

    final XSFacets facets = new XSFacets();

    XSSimpleTypeDecl anySimpleType = XSSimpleTypeDecl.fAnySimpleType;
    XSSimpleTypeDecl stringDV = (XSSimpleTypeDecl)types.get(STRING);

    types.put(FLOAT, new XSSimpleTypeDecl(anySimpleType, FLOAT, XSSimpleTypeDecl.DV_FLOAT, XSSimpleType.ORDERED_PARTIAL, true, true, true, true, XSConstants.FLOAT_DT));
    types.put(DOUBLE, new XSSimpleTypeDecl(anySimpleType, DOUBLE, XSSimpleTypeDecl.DV_DOUBLE, XSSimpleType.ORDERED_PARTIAL, true, true, true, true, XSConstants.DOUBLE_DT));
    types.put(DURATION, new XSSimpleTypeDecl(anySimpleType, DURATION, XSSimpleTypeDecl.DV_DURATION, XSSimpleType.ORDERED_PARTIAL, false, false, false, true, XSConstants.DURATION_DT));
    types.put(HEXBINARY, new XSSimpleTypeDecl(anySimpleType, HEXBINARY, XSSimpleTypeDecl.DV_HEXBINARY, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.HEXBINARY_DT));
    types.put(QNAME, new XSSimpleTypeDecl(anySimpleType, QNAME, XSSimpleTypeDecl.DV_QNAME, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.QNAME_DT));
    types.put(NOTATION, new XSSimpleTypeDecl(anySimpleType, NOTATION, XSSimpleTypeDecl.DV_NOTATION, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.NOTATION_DT));

    facets.whiteSpace =  XSSimpleType.WS_REPLACE;
    XSSimpleTypeDecl normalizedDV = new XSSimpleTypeDecl(stringDV, NORMALIZEDSTRING , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NORMALIZEDSTRING_DT);
    normalizedDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0 );
    types.put(NORMALIZEDSTRING, normalizedDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl tokenDV = new XSSimpleTypeDecl(normalizedDV, TOKEN , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.TOKEN_DT);
    tokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0 );
    types.put(TOKEN, tokenDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    facets.pattern  = "([a-zA-Z]{1,8})(-[a-zA-Z0-9]{1,8})*";
    XSSimpleTypeDecl languageDV = new XSSimpleTypeDecl(tokenDV, LANGUAGE , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.LANGUAGE_DT);
    languageDV.applyFacets1(facets, (short)(XSSimpleType.FACET_WHITESPACE | XSSimpleType.FACET_PATTERN) ,(short)0);
    types.put(LANGUAGE, languageDV);

    facets.whiteSpace =  XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl nameDV = new XSSimpleTypeDecl(tokenDV, NAME , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NAME_DT);
    nameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NAME);
    types.put(NAME, nameDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl ncnameDV = new XSSimpleTypeDecl(nameDV, NCNAME , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NCNAME_DT) ;
    ncnameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NCNAME);
    types.put(NCNAME, ncnameDV);

    types.put(ID, new XSSimpleTypeDecl(ncnameDV,  ID, XSSimpleTypeDecl.DV_ID, XSSimpleType.ORDERED_FALSE, false, false, false , true, XSConstants.ID_DT));
    XSSimpleTypeDecl idrefDV = new XSSimpleTypeDecl(ncnameDV,  IDREF , XSSimpleTypeDecl.DV_IDREF, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.IDREF_DT);
    types.put(IDREF, idrefDV);

    facets.minLength = 1;
    XSSimpleTypeDecl tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, idrefDV, true, null);
    XSSimpleTypeDecl idrefsDV = new XSSimpleTypeDecl(tempDV, IDREFS, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    idrefsDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(IDREFS, idrefsDV);

    XSSimpleTypeDecl entityDV = new XSSimpleTypeDecl(ncnameDV, ENTITY , XSSimpleTypeDecl.DV_ENTITY, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.ENTITY_DT);
    types.put(ENTITY, entityDV);

    facets.minLength = 1;
    tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, entityDV, true, null);
    XSSimpleTypeDecl entitiesDV = new XSSimpleTypeDecl(tempDV, ENTITIES, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    entitiesDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(ENTITIES, entitiesDV);


    facets.whiteSpace  = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl nmtokenDV = new XSSimpleTypeDecl(tokenDV, NMTOKEN, URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NMTOKEN_DT);
    nmtokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NMTOKEN);
    types.put(NMTOKEN, nmtokenDV);

    facets.minLength = 1;
    tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, nmtokenDV, true, null);
    XSSimpleTypeDecl nmtokensDV = new XSSimpleTypeDecl(tempDV, NMTOKENS, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    nmtokensDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(NMTOKENS, nmtokensDV);
}
 
Example 2
Source File: XMLSchemaValidator.java    From openjdk-8 with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Normalize whitespace in an XMLString according to the rules defined
 * in XML Schema specifications.
 * @param value    The string to normalize.
 * @param collapse replace or collapse
 */
private void normalizeWhitespace(XMLString value, boolean collapse) {
    boolean skipSpace = collapse;
    boolean sawNonWS = false;
    boolean leading = false;
    boolean trailing = false;
    char c;
    int size = value.offset + value.length;

    // ensure the ch array is big enough
    if (fNormalizedStr.ch == null || fNormalizedStr.ch.length < value.length + 1) {
        fNormalizedStr.ch = new char[value.length + 1];
    }
    // don't include the leading ' ' for now. might include it later.
    fNormalizedStr.offset = 1;
    fNormalizedStr.length = 1;

    for (int i = value.offset; i < size; i++) {
        c = value.ch[i];
        if (XMLChar.isSpace(c)) {
            if (!skipSpace) {
                // take the first whitespace as a space and skip the others
                fNormalizedStr.ch[fNormalizedStr.length++] = ' ';
                skipSpace = collapse;
            }
            if (!sawNonWS) {
                // this is a leading whitespace, record it
                leading = true;
            }
        } else {
            fNormalizedStr.ch[fNormalizedStr.length++] = c;
            skipSpace = false;
            sawNonWS = true;
        }
    }
    if (skipSpace) {
        if (fNormalizedStr.length > 1) {
            // if we finished on a space trim it but also record it
            fNormalizedStr.length--;
            trailing = true;
        } else if (leading && !fFirstChunk) {
            // if all we had was whitespace we skipped record it as
            // trailing whitespace as well
            trailing = true;
        }
    }

    if (fNormalizedStr.length > 1) {
        if (!fFirstChunk && (fWhiteSpace == XSSimpleType.WS_COLLAPSE)) {
            if (fTrailing) {
                // previous chunk ended on whitespace
                // insert whitespace
                fNormalizedStr.offset = 0;
                fNormalizedStr.ch[0] = ' ';
            } else if (leading) {
                // previous chunk ended on character,
                // this chunk starts with whitespace
                fNormalizedStr.offset = 0;
                fNormalizedStr.ch[0] = ' ';
            }
        }
    }

    // The length includes the leading ' '. Now removing it.
    fNormalizedStr.length -= fNormalizedStr.offset;

    fTrailing = trailing;

    if (trailing || sawNonWS)
        fFirstChunk = false;
}
 
Example 3
Source File: FullDVFactory.java    From openjdk-8-source with GNU General Public License v2.0 4 votes vote down vote up
static void createBuiltInTypes(SymbolHash types) {
    // create base types first
    BaseDVFactory.createBuiltInTypes(types);

    // full schema simple type names
    final String DOUBLE            = "double";
    final String DURATION          = "duration";
    final String ENTITY            = "ENTITY";
    final String ENTITIES          = "ENTITIES";
    final String FLOAT             = "float";
    final String HEXBINARY         = "hexBinary";
    final String ID                = "ID";
    final String IDREF             = "IDREF";
    final String IDREFS            = "IDREFS";
    final String NAME              = "Name";
    final String NCNAME            = "NCName";
    final String NMTOKEN           = "NMTOKEN";
    final String NMTOKENS          = "NMTOKENS";
    final String LANGUAGE          = "language";
    final String NORMALIZEDSTRING  = "normalizedString";
    final String NOTATION          = "NOTATION";
    final String QNAME             = "QName";
    final String STRING            = "string";
    final String TOKEN             = "token";

    final XSFacets facets = new XSFacets();

    XSSimpleTypeDecl anySimpleType = XSSimpleTypeDecl.fAnySimpleType;
    XSSimpleTypeDecl stringDV = (XSSimpleTypeDecl)types.get(STRING);

    types.put(FLOAT, new XSSimpleTypeDecl(anySimpleType, FLOAT, XSSimpleTypeDecl.DV_FLOAT, XSSimpleType.ORDERED_PARTIAL, true, true, true, true, XSConstants.FLOAT_DT));
    types.put(DOUBLE, new XSSimpleTypeDecl(anySimpleType, DOUBLE, XSSimpleTypeDecl.DV_DOUBLE, XSSimpleType.ORDERED_PARTIAL, true, true, true, true, XSConstants.DOUBLE_DT));
    types.put(DURATION, new XSSimpleTypeDecl(anySimpleType, DURATION, XSSimpleTypeDecl.DV_DURATION, XSSimpleType.ORDERED_PARTIAL, false, false, false, true, XSConstants.DURATION_DT));
    types.put(HEXBINARY, new XSSimpleTypeDecl(anySimpleType, HEXBINARY, XSSimpleTypeDecl.DV_HEXBINARY, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.HEXBINARY_DT));
    types.put(QNAME, new XSSimpleTypeDecl(anySimpleType, QNAME, XSSimpleTypeDecl.DV_QNAME, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.QNAME_DT));
    types.put(NOTATION, new XSSimpleTypeDecl(anySimpleType, NOTATION, XSSimpleTypeDecl.DV_NOTATION, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.NOTATION_DT));

    facets.whiteSpace =  XSSimpleType.WS_REPLACE;
    XSSimpleTypeDecl normalizedDV = new XSSimpleTypeDecl(stringDV, NORMALIZEDSTRING , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NORMALIZEDSTRING_DT);
    normalizedDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0 );
    types.put(NORMALIZEDSTRING, normalizedDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl tokenDV = new XSSimpleTypeDecl(normalizedDV, TOKEN , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.TOKEN_DT);
    tokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0 );
    types.put(TOKEN, tokenDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    facets.pattern  = "([a-zA-Z]{1,8})(-[a-zA-Z0-9]{1,8})*";
    XSSimpleTypeDecl languageDV = new XSSimpleTypeDecl(tokenDV, LANGUAGE , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.LANGUAGE_DT);
    languageDV.applyFacets1(facets, (short)(XSSimpleType.FACET_WHITESPACE | XSSimpleType.FACET_PATTERN) ,(short)0);
    types.put(LANGUAGE, languageDV);

    facets.whiteSpace =  XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl nameDV = new XSSimpleTypeDecl(tokenDV, NAME , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NAME_DT);
    nameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NAME);
    types.put(NAME, nameDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl ncnameDV = new XSSimpleTypeDecl(nameDV, NCNAME , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NCNAME_DT) ;
    ncnameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NCNAME);
    types.put(NCNAME, ncnameDV);

    types.put(ID, new XSSimpleTypeDecl(ncnameDV,  ID, XSSimpleTypeDecl.DV_ID, XSSimpleType.ORDERED_FALSE, false, false, false , true, XSConstants.ID_DT));
    XSSimpleTypeDecl idrefDV = new XSSimpleTypeDecl(ncnameDV,  IDREF , XSSimpleTypeDecl.DV_IDREF, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.IDREF_DT);
    types.put(IDREF, idrefDV);

    facets.minLength = 1;
    XSSimpleTypeDecl tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, idrefDV, true, null);
    XSSimpleTypeDecl idrefsDV = new XSSimpleTypeDecl(tempDV, IDREFS, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    idrefsDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(IDREFS, idrefsDV);

    XSSimpleTypeDecl entityDV = new XSSimpleTypeDecl(ncnameDV, ENTITY , XSSimpleTypeDecl.DV_ENTITY, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.ENTITY_DT);
    types.put(ENTITY, entityDV);

    facets.minLength = 1;
    tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, entityDV, true, null);
    XSSimpleTypeDecl entitiesDV = new XSSimpleTypeDecl(tempDV, ENTITIES, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    entitiesDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(ENTITIES, entitiesDV);


    facets.whiteSpace  = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl nmtokenDV = new XSSimpleTypeDecl(tokenDV, NMTOKEN, URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NMTOKEN_DT);
    nmtokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NMTOKEN);
    types.put(NMTOKEN, nmtokenDV);

    facets.minLength = 1;
    tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, nmtokenDV, true, null);
    XSSimpleTypeDecl nmtokensDV = new XSSimpleTypeDecl(tempDV, NMTOKENS, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    nmtokensDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(NMTOKENS, nmtokensDV);
}
 
Example 4
Source File: FullDVFactory.java    From openjdk-8 with GNU General Public License v2.0 4 votes vote down vote up
static void createBuiltInTypes(SymbolHash types) {
    // create base types first
    BaseDVFactory.createBuiltInTypes(types);

    // full schema simple type names
    final String DOUBLE            = "double";
    final String DURATION          = "duration";
    final String ENTITY            = "ENTITY";
    final String ENTITIES          = "ENTITIES";
    final String FLOAT             = "float";
    final String HEXBINARY         = "hexBinary";
    final String ID                = "ID";
    final String IDREF             = "IDREF";
    final String IDREFS            = "IDREFS";
    final String NAME              = "Name";
    final String NCNAME            = "NCName";
    final String NMTOKEN           = "NMTOKEN";
    final String NMTOKENS          = "NMTOKENS";
    final String LANGUAGE          = "language";
    final String NORMALIZEDSTRING  = "normalizedString";
    final String NOTATION          = "NOTATION";
    final String QNAME             = "QName";
    final String STRING            = "string";
    final String TOKEN             = "token";

    final XSFacets facets = new XSFacets();

    XSSimpleTypeDecl anySimpleType = XSSimpleTypeDecl.fAnySimpleType;
    XSSimpleTypeDecl stringDV = (XSSimpleTypeDecl)types.get(STRING);

    types.put(FLOAT, new XSSimpleTypeDecl(anySimpleType, FLOAT, XSSimpleTypeDecl.DV_FLOAT, XSSimpleType.ORDERED_PARTIAL, true, true, true, true, XSConstants.FLOAT_DT));
    types.put(DOUBLE, new XSSimpleTypeDecl(anySimpleType, DOUBLE, XSSimpleTypeDecl.DV_DOUBLE, XSSimpleType.ORDERED_PARTIAL, true, true, true, true, XSConstants.DOUBLE_DT));
    types.put(DURATION, new XSSimpleTypeDecl(anySimpleType, DURATION, XSSimpleTypeDecl.DV_DURATION, XSSimpleType.ORDERED_PARTIAL, false, false, false, true, XSConstants.DURATION_DT));
    types.put(HEXBINARY, new XSSimpleTypeDecl(anySimpleType, HEXBINARY, XSSimpleTypeDecl.DV_HEXBINARY, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.HEXBINARY_DT));
    types.put(QNAME, new XSSimpleTypeDecl(anySimpleType, QNAME, XSSimpleTypeDecl.DV_QNAME, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.QNAME_DT));
    types.put(NOTATION, new XSSimpleTypeDecl(anySimpleType, NOTATION, XSSimpleTypeDecl.DV_NOTATION, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.NOTATION_DT));

    facets.whiteSpace =  XSSimpleType.WS_REPLACE;
    XSSimpleTypeDecl normalizedDV = new XSSimpleTypeDecl(stringDV, NORMALIZEDSTRING , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NORMALIZEDSTRING_DT);
    normalizedDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0 );
    types.put(NORMALIZEDSTRING, normalizedDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl tokenDV = new XSSimpleTypeDecl(normalizedDV, TOKEN , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.TOKEN_DT);
    tokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0 );
    types.put(TOKEN, tokenDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    facets.pattern  = "([a-zA-Z]{1,8})(-[a-zA-Z0-9]{1,8})*";
    XSSimpleTypeDecl languageDV = new XSSimpleTypeDecl(tokenDV, LANGUAGE , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.LANGUAGE_DT);
    languageDV.applyFacets1(facets, (short)(XSSimpleType.FACET_WHITESPACE | XSSimpleType.FACET_PATTERN) ,(short)0);
    types.put(LANGUAGE, languageDV);

    facets.whiteSpace =  XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl nameDV = new XSSimpleTypeDecl(tokenDV, NAME , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NAME_DT);
    nameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NAME);
    types.put(NAME, nameDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl ncnameDV = new XSSimpleTypeDecl(nameDV, NCNAME , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NCNAME_DT) ;
    ncnameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NCNAME);
    types.put(NCNAME, ncnameDV);

    types.put(ID, new XSSimpleTypeDecl(ncnameDV,  ID, XSSimpleTypeDecl.DV_ID, XSSimpleType.ORDERED_FALSE, false, false, false , true, XSConstants.ID_DT));
    XSSimpleTypeDecl idrefDV = new XSSimpleTypeDecl(ncnameDV,  IDREF , XSSimpleTypeDecl.DV_IDREF, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.IDREF_DT);
    types.put(IDREF, idrefDV);

    facets.minLength = 1;
    XSSimpleTypeDecl tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, idrefDV, true, null);
    XSSimpleTypeDecl idrefsDV = new XSSimpleTypeDecl(tempDV, IDREFS, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    idrefsDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(IDREFS, idrefsDV);

    XSSimpleTypeDecl entityDV = new XSSimpleTypeDecl(ncnameDV, ENTITY , XSSimpleTypeDecl.DV_ENTITY, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.ENTITY_DT);
    types.put(ENTITY, entityDV);

    facets.minLength = 1;
    tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, entityDV, true, null);
    XSSimpleTypeDecl entitiesDV = new XSSimpleTypeDecl(tempDV, ENTITIES, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    entitiesDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(ENTITIES, entitiesDV);


    facets.whiteSpace  = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl nmtokenDV = new XSSimpleTypeDecl(tokenDV, NMTOKEN, URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NMTOKEN_DT);
    nmtokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NMTOKEN);
    types.put(NMTOKEN, nmtokenDV);

    facets.minLength = 1;
    tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, nmtokenDV, true, null);
    XSSimpleTypeDecl nmtokensDV = new XSSimpleTypeDecl(tempDV, NMTOKENS, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    nmtokensDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(NMTOKENS, nmtokensDV);
}
 
Example 5
Source File: FullDVFactory.java    From hottub with GNU General Public License v2.0 4 votes vote down vote up
static void createBuiltInTypes(SymbolHash types) {
    // create base types first
    BaseDVFactory.createBuiltInTypes(types);

    // full schema simple type names
    final String DOUBLE            = "double";
    final String DURATION          = "duration";
    final String ENTITY            = "ENTITY";
    final String ENTITIES          = "ENTITIES";
    final String FLOAT             = "float";
    final String HEXBINARY         = "hexBinary";
    final String ID                = "ID";
    final String IDREF             = "IDREF";
    final String IDREFS            = "IDREFS";
    final String NAME              = "Name";
    final String NCNAME            = "NCName";
    final String NMTOKEN           = "NMTOKEN";
    final String NMTOKENS          = "NMTOKENS";
    final String LANGUAGE          = "language";
    final String NORMALIZEDSTRING  = "normalizedString";
    final String NOTATION          = "NOTATION";
    final String QNAME             = "QName";
    final String STRING            = "string";
    final String TOKEN             = "token";

    final XSFacets facets = new XSFacets();

    XSSimpleTypeDecl anySimpleType = XSSimpleTypeDecl.fAnySimpleType;
    XSSimpleTypeDecl stringDV = (XSSimpleTypeDecl)types.get(STRING);

    types.put(FLOAT, new XSSimpleTypeDecl(anySimpleType, FLOAT, XSSimpleTypeDecl.DV_FLOAT, XSSimpleType.ORDERED_PARTIAL, true, true, true, true, XSConstants.FLOAT_DT));
    types.put(DOUBLE, new XSSimpleTypeDecl(anySimpleType, DOUBLE, XSSimpleTypeDecl.DV_DOUBLE, XSSimpleType.ORDERED_PARTIAL, true, true, true, true, XSConstants.DOUBLE_DT));
    types.put(DURATION, new XSSimpleTypeDecl(anySimpleType, DURATION, XSSimpleTypeDecl.DV_DURATION, XSSimpleType.ORDERED_PARTIAL, false, false, false, true, XSConstants.DURATION_DT));
    types.put(HEXBINARY, new XSSimpleTypeDecl(anySimpleType, HEXBINARY, XSSimpleTypeDecl.DV_HEXBINARY, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.HEXBINARY_DT));
    types.put(QNAME, new XSSimpleTypeDecl(anySimpleType, QNAME, XSSimpleTypeDecl.DV_QNAME, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.QNAME_DT));
    types.put(NOTATION, new XSSimpleTypeDecl(anySimpleType, NOTATION, XSSimpleTypeDecl.DV_NOTATION, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.NOTATION_DT));

    facets.whiteSpace =  XSSimpleType.WS_REPLACE;
    XSSimpleTypeDecl normalizedDV = new XSSimpleTypeDecl(stringDV, NORMALIZEDSTRING , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NORMALIZEDSTRING_DT);
    normalizedDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0 );
    types.put(NORMALIZEDSTRING, normalizedDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl tokenDV = new XSSimpleTypeDecl(normalizedDV, TOKEN , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.TOKEN_DT);
    tokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0 );
    types.put(TOKEN, tokenDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    facets.pattern  = "([a-zA-Z]{1,8})(-[a-zA-Z0-9]{1,8})*";
    XSSimpleTypeDecl languageDV = new XSSimpleTypeDecl(tokenDV, LANGUAGE , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.LANGUAGE_DT);
    languageDV.applyFacets1(facets, (short)(XSSimpleType.FACET_WHITESPACE | XSSimpleType.FACET_PATTERN) ,(short)0);
    types.put(LANGUAGE, languageDV);

    facets.whiteSpace =  XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl nameDV = new XSSimpleTypeDecl(tokenDV, NAME , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NAME_DT);
    nameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NAME);
    types.put(NAME, nameDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl ncnameDV = new XSSimpleTypeDecl(nameDV, NCNAME , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NCNAME_DT) ;
    ncnameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NCNAME);
    types.put(NCNAME, ncnameDV);

    types.put(ID, new XSSimpleTypeDecl(ncnameDV,  ID, XSSimpleTypeDecl.DV_ID, XSSimpleType.ORDERED_FALSE, false, false, false , true, XSConstants.ID_DT));
    XSSimpleTypeDecl idrefDV = new XSSimpleTypeDecl(ncnameDV,  IDREF , XSSimpleTypeDecl.DV_IDREF, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.IDREF_DT);
    types.put(IDREF, idrefDV);

    facets.minLength = 1;
    XSSimpleTypeDecl tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, idrefDV, true, null);
    XSSimpleTypeDecl idrefsDV = new XSSimpleTypeDecl(tempDV, IDREFS, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    idrefsDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(IDREFS, idrefsDV);

    XSSimpleTypeDecl entityDV = new XSSimpleTypeDecl(ncnameDV, ENTITY , XSSimpleTypeDecl.DV_ENTITY, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.ENTITY_DT);
    types.put(ENTITY, entityDV);

    facets.minLength = 1;
    tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, entityDV, true, null);
    XSSimpleTypeDecl entitiesDV = new XSSimpleTypeDecl(tempDV, ENTITIES, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    entitiesDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(ENTITIES, entitiesDV);


    facets.whiteSpace  = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl nmtokenDV = new XSSimpleTypeDecl(tokenDV, NMTOKEN, URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NMTOKEN_DT);
    nmtokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NMTOKEN);
    types.put(NMTOKEN, nmtokenDV);

    facets.minLength = 1;
    tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, nmtokenDV, true, null);
    XSSimpleTypeDecl nmtokensDV = new XSSimpleTypeDecl(tempDV, NMTOKENS, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    nmtokensDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(NMTOKENS, nmtokensDV);
}
 
Example 6
Source File: XMLSchemaValidator.java    From openjdk-jdk9 with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Normalize whitespace in an XMLString according to the rules defined
 * in XML Schema specifications.
 * @param value    The string to normalize.
 * @param collapse replace or collapse
 */
private void normalizeWhitespace(XMLString value, boolean collapse) {
    boolean skipSpace = collapse;
    boolean sawNonWS = false;
    boolean leading = false;
    boolean trailing = false;
    char c;
    int size = value.offset + value.length;

    // ensure the ch array is big enough
    if (fNormalizedStr.ch == null || fNormalizedStr.ch.length < value.length + 1) {
        fNormalizedStr.ch = new char[value.length + 1];
    }
    // don't include the leading ' ' for now. might include it later.
    fNormalizedStr.offset = 1;
    fNormalizedStr.length = 1;

    for (int i = value.offset; i < size; i++) {
        c = value.ch[i];
        if (XMLChar.isSpace(c)) {
            if (!skipSpace) {
                // take the first whitespace as a space and skip the others
                fNormalizedStr.ch[fNormalizedStr.length++] = ' ';
                skipSpace = collapse;
            }
            if (!sawNonWS) {
                // this is a leading whitespace, record it
                leading = true;
            }
        } else {
            fNormalizedStr.ch[fNormalizedStr.length++] = c;
            skipSpace = false;
            sawNonWS = true;
        }
    }
    if (skipSpace) {
        if (fNormalizedStr.length > 1) {
            // if we finished on a space trim it but also record it
            fNormalizedStr.length--;
            trailing = true;
        } else if (leading && !fFirstChunk) {
            // if all we had was whitespace we skipped record it as
            // trailing whitespace as well
            trailing = true;
        }
    }

    if (fNormalizedStr.length > 1) {
        if (!fFirstChunk && (fWhiteSpace == XSSimpleType.WS_COLLAPSE)) {
            if (fTrailing) {
                // previous chunk ended on whitespace
                // insert whitespace
                fNormalizedStr.offset = 0;
                fNormalizedStr.ch[0] = ' ';
            } else if (leading) {
                // previous chunk ended on character,
                // this chunk starts with whitespace
                fNormalizedStr.offset = 0;
                fNormalizedStr.ch[0] = ' ';
            }
        }
    }

    // The length includes the leading ' '. Now removing it.
    fNormalizedStr.length -= fNormalizedStr.offset;

    fTrailing = trailing;

    if (trailing || sawNonWS)
        fFirstChunk = false;
}
 
Example 7
Source File: FullDVFactory.java    From openjdk-jdk9 with GNU General Public License v2.0 4 votes vote down vote up
static void createBuiltInTypes(SymbolHash types) {
    // create base types first
    BaseDVFactory.createBuiltInTypes(types);

    // full schema simple type names
    final String DOUBLE            = "double";
    final String DURATION          = "duration";
    final String ENTITY            = "ENTITY";
    final String ENTITIES          = "ENTITIES";
    final String FLOAT             = "float";
    final String HEXBINARY         = "hexBinary";
    final String ID                = "ID";
    final String IDREF             = "IDREF";
    final String IDREFS            = "IDREFS";
    final String NAME              = "Name";
    final String NCNAME            = "NCName";
    final String NMTOKEN           = "NMTOKEN";
    final String NMTOKENS          = "NMTOKENS";
    final String LANGUAGE          = "language";
    final String NORMALIZEDSTRING  = "normalizedString";
    final String NOTATION          = "NOTATION";
    final String QNAME             = "QName";
    final String STRING            = "string";
    final String TOKEN             = "token";

    final XSFacets facets = new XSFacets();

    XSSimpleTypeDecl anySimpleType = XSSimpleTypeDecl.fAnySimpleType;
    XSSimpleTypeDecl stringDV = (XSSimpleTypeDecl)types.get(STRING);

    types.put(FLOAT, new XSSimpleTypeDecl(anySimpleType, FLOAT, XSSimpleTypeDecl.DV_FLOAT, XSSimpleType.ORDERED_PARTIAL, true, true, true, true, XSConstants.FLOAT_DT));
    types.put(DOUBLE, new XSSimpleTypeDecl(anySimpleType, DOUBLE, XSSimpleTypeDecl.DV_DOUBLE, XSSimpleType.ORDERED_PARTIAL, true, true, true, true, XSConstants.DOUBLE_DT));
    types.put(DURATION, new XSSimpleTypeDecl(anySimpleType, DURATION, XSSimpleTypeDecl.DV_DURATION, XSSimpleType.ORDERED_PARTIAL, false, false, false, true, XSConstants.DURATION_DT));
    types.put(HEXBINARY, new XSSimpleTypeDecl(anySimpleType, HEXBINARY, XSSimpleTypeDecl.DV_HEXBINARY, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.HEXBINARY_DT));
    types.put(QNAME, new XSSimpleTypeDecl(anySimpleType, QNAME, XSSimpleTypeDecl.DV_QNAME, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.QNAME_DT));
    types.put(NOTATION, new XSSimpleTypeDecl(anySimpleType, NOTATION, XSSimpleTypeDecl.DV_NOTATION, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.NOTATION_DT));

    facets.whiteSpace =  XSSimpleType.WS_REPLACE;
    XSSimpleTypeDecl normalizedDV = new XSSimpleTypeDecl(stringDV, NORMALIZEDSTRING , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NORMALIZEDSTRING_DT);
    normalizedDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0 );
    types.put(NORMALIZEDSTRING, normalizedDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl tokenDV = new XSSimpleTypeDecl(normalizedDV, TOKEN , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.TOKEN_DT);
    tokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0 );
    types.put(TOKEN, tokenDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    facets.pattern  = "([a-zA-Z]{1,8})(-[a-zA-Z0-9]{1,8})*";
    XSSimpleTypeDecl languageDV = new XSSimpleTypeDecl(tokenDV, LANGUAGE , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.LANGUAGE_DT);
    languageDV.applyFacets1(facets, (short)(XSSimpleType.FACET_WHITESPACE | XSSimpleType.FACET_PATTERN) ,(short)0);
    types.put(LANGUAGE, languageDV);

    facets.whiteSpace =  XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl nameDV = new XSSimpleTypeDecl(tokenDV, NAME , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NAME_DT);
    nameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NAME);
    types.put(NAME, nameDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl ncnameDV = new XSSimpleTypeDecl(nameDV, NCNAME , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NCNAME_DT) ;
    ncnameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NCNAME);
    types.put(NCNAME, ncnameDV);

    types.put(ID, new XSSimpleTypeDecl(ncnameDV,  ID, XSSimpleTypeDecl.DV_ID, XSSimpleType.ORDERED_FALSE, false, false, false , true, XSConstants.ID_DT));
    XSSimpleTypeDecl idrefDV = new XSSimpleTypeDecl(ncnameDV,  IDREF , XSSimpleTypeDecl.DV_IDREF, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.IDREF_DT);
    types.put(IDREF, idrefDV);

    facets.minLength = 1;
    XSSimpleTypeDecl tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, idrefDV, true, null);
    XSSimpleTypeDecl idrefsDV = new XSSimpleTypeDecl(tempDV, IDREFS, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    idrefsDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(IDREFS, idrefsDV);

    XSSimpleTypeDecl entityDV = new XSSimpleTypeDecl(ncnameDV, ENTITY , XSSimpleTypeDecl.DV_ENTITY, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.ENTITY_DT);
    types.put(ENTITY, entityDV);

    facets.minLength = 1;
    tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, entityDV, true, null);
    XSSimpleTypeDecl entitiesDV = new XSSimpleTypeDecl(tempDV, ENTITIES, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    entitiesDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(ENTITIES, entitiesDV);


    facets.whiteSpace  = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl nmtokenDV = new XSSimpleTypeDecl(tokenDV, NMTOKEN, URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NMTOKEN_DT);
    nmtokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NMTOKEN);
    types.put(NMTOKEN, nmtokenDV);

    facets.minLength = 1;
    tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, nmtokenDV, true, null);
    XSSimpleTypeDecl nmtokensDV = new XSSimpleTypeDecl(tempDV, NMTOKENS, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    nmtokensDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(NMTOKENS, nmtokensDV);
}
 
Example 8
Source File: XMLSchemaValidator.java    From Bytecoder with Apache License 2.0 4 votes vote down vote up
/**
 * Normalize whitespace in an XMLString according to the rules defined
 * in XML Schema specifications.
 * @param value    The string to normalize.
 * @param collapse replace or collapse
 */
private void normalizeWhitespace(XMLString value, boolean collapse) {
    boolean skipSpace = collapse;
    boolean sawNonWS = false;
    boolean leading = false;
    boolean trailing = false;
    char c;
    int size = value.offset + value.length;

    // ensure the ch array is big enough
    if (fNormalizedStr.ch == null || fNormalizedStr.ch.length < value.length + 1) {
        fNormalizedStr.ch = new char[value.length + 1];
    }
    // don't include the leading ' ' for now. might include it later.
    fNormalizedStr.offset = 1;
    fNormalizedStr.length = 1;

    for (int i = value.offset; i < size; i++) {
        c = value.ch[i];
        if (XMLChar.isSpace(c)) {
            if (!skipSpace) {
                // take the first whitespace as a space and skip the others
                fNormalizedStr.ch[fNormalizedStr.length++] = ' ';
                skipSpace = collapse;
            }
            if (!sawNonWS) {
                // this is a leading whitespace, record it
                leading = true;
            }
        } else {
            fNormalizedStr.ch[fNormalizedStr.length++] = c;
            skipSpace = false;
            sawNonWS = true;
        }
    }
    if (skipSpace) {
        if (fNormalizedStr.length > 1) {
            // if we finished on a space trim it but also record it
            fNormalizedStr.length--;
            trailing = true;
        } else if (leading && !fFirstChunk) {
            // if all we had was whitespace we skipped record it as
            // trailing whitespace as well
            trailing = true;
        }
    }

    if (fNormalizedStr.length > 1) {
        if (!fFirstChunk && (fWhiteSpace == XSSimpleType.WS_COLLAPSE)) {
            if (fTrailing) {
                // previous chunk ended on whitespace
                // insert whitespace
                fNormalizedStr.offset = 0;
                fNormalizedStr.ch[0] = ' ';
            } else if (leading) {
                // previous chunk ended on character,
                // this chunk starts with whitespace
                fNormalizedStr.offset = 0;
                fNormalizedStr.ch[0] = ' ';
            }
        }
    }

    // The length includes the leading ' '. Now removing it.
    fNormalizedStr.length -= fNormalizedStr.offset;

    fTrailing = trailing;

    if (trailing || sawNonWS)
        fFirstChunk = false;
}
 
Example 9
Source File: FullDVFactory.java    From Bytecoder with Apache License 2.0 4 votes vote down vote up
static void createBuiltInTypes(SymbolHash types) {
    // create base types first
    BaseDVFactory.createBuiltInTypes(types);

    // full schema simple type names
    final String DOUBLE            = "double";
    final String DURATION          = "duration";
    final String ENTITY            = "ENTITY";
    final String ENTITIES          = "ENTITIES";
    final String FLOAT             = "float";
    final String HEXBINARY         = "hexBinary";
    final String ID                = "ID";
    final String IDREF             = "IDREF";
    final String IDREFS            = "IDREFS";
    final String NAME              = "Name";
    final String NCNAME            = "NCName";
    final String NMTOKEN           = "NMTOKEN";
    final String NMTOKENS          = "NMTOKENS";
    final String LANGUAGE          = "language";
    final String NORMALIZEDSTRING  = "normalizedString";
    final String NOTATION          = "NOTATION";
    final String QNAME             = "QName";
    final String STRING            = "string";
    final String TOKEN             = "token";

    final XSFacets facets = new XSFacets();

    XSSimpleTypeDecl anySimpleType = XSSimpleTypeDecl.fAnySimpleType;
    XSSimpleTypeDecl stringDV = (XSSimpleTypeDecl)types.get(STRING);

    types.put(FLOAT, new XSSimpleTypeDecl(anySimpleType, FLOAT, XSSimpleTypeDecl.DV_FLOAT, XSSimpleType.ORDERED_PARTIAL, true, true, true, true, XSConstants.FLOAT_DT));
    types.put(DOUBLE, new XSSimpleTypeDecl(anySimpleType, DOUBLE, XSSimpleTypeDecl.DV_DOUBLE, XSSimpleType.ORDERED_PARTIAL, true, true, true, true, XSConstants.DOUBLE_DT));
    types.put(DURATION, new XSSimpleTypeDecl(anySimpleType, DURATION, XSSimpleTypeDecl.DV_DURATION, XSSimpleType.ORDERED_PARTIAL, false, false, false, true, XSConstants.DURATION_DT));
    types.put(HEXBINARY, new XSSimpleTypeDecl(anySimpleType, HEXBINARY, XSSimpleTypeDecl.DV_HEXBINARY, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.HEXBINARY_DT));
    types.put(QNAME, new XSSimpleTypeDecl(anySimpleType, QNAME, XSSimpleTypeDecl.DV_QNAME, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.QNAME_DT));
    types.put(NOTATION, new XSSimpleTypeDecl(anySimpleType, NOTATION, XSSimpleTypeDecl.DV_NOTATION, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.NOTATION_DT));

    facets.whiteSpace =  XSSimpleType.WS_REPLACE;
    XSSimpleTypeDecl normalizedDV = new XSSimpleTypeDecl(stringDV, NORMALIZEDSTRING , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NORMALIZEDSTRING_DT);
    normalizedDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0 );
    types.put(NORMALIZEDSTRING, normalizedDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl tokenDV = new XSSimpleTypeDecl(normalizedDV, TOKEN , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.TOKEN_DT);
    tokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0 );
    types.put(TOKEN, tokenDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    facets.pattern  = "([a-zA-Z]{1,8})(-[a-zA-Z0-9]{1,8})*";
    XSSimpleTypeDecl languageDV = new XSSimpleTypeDecl(tokenDV, LANGUAGE , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.LANGUAGE_DT);
    languageDV.applyFacets1(facets, (short)(XSSimpleType.FACET_WHITESPACE | XSSimpleType.FACET_PATTERN) ,(short)0);
    types.put(LANGUAGE, languageDV);

    facets.whiteSpace =  XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl nameDV = new XSSimpleTypeDecl(tokenDV, NAME , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NAME_DT);
    nameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NAME);
    types.put(NAME, nameDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl ncnameDV = new XSSimpleTypeDecl(nameDV, NCNAME , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NCNAME_DT) ;
    ncnameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NCNAME);
    types.put(NCNAME, ncnameDV);

    types.put(ID, new XSSimpleTypeDecl(ncnameDV,  ID, XSSimpleTypeDecl.DV_ID, XSSimpleType.ORDERED_FALSE, false, false, false , true, XSConstants.ID_DT));
    XSSimpleTypeDecl idrefDV = new XSSimpleTypeDecl(ncnameDV,  IDREF , XSSimpleTypeDecl.DV_IDREF, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.IDREF_DT);
    types.put(IDREF, idrefDV);

    facets.minLength = 1;
    XSSimpleTypeDecl tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, idrefDV, true, null);
    XSSimpleTypeDecl idrefsDV = new XSSimpleTypeDecl(tempDV, IDREFS, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    idrefsDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(IDREFS, idrefsDV);

    XSSimpleTypeDecl entityDV = new XSSimpleTypeDecl(ncnameDV, ENTITY , XSSimpleTypeDecl.DV_ENTITY, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.ENTITY_DT);
    types.put(ENTITY, entityDV);

    facets.minLength = 1;
    tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, entityDV, true, null);
    XSSimpleTypeDecl entitiesDV = new XSSimpleTypeDecl(tempDV, ENTITIES, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    entitiesDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(ENTITIES, entitiesDV);


    facets.whiteSpace  = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl nmtokenDV = new XSSimpleTypeDecl(tokenDV, NMTOKEN, URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NMTOKEN_DT);
    nmtokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NMTOKEN);
    types.put(NMTOKEN, nmtokenDV);

    facets.minLength = 1;
    tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, nmtokenDV, true, null);
    XSSimpleTypeDecl nmtokensDV = new XSSimpleTypeDecl(tempDV, NMTOKENS, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    nmtokensDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(NMTOKENS, nmtokensDV);
}
 
Example 10
Source File: XMLSchemaValidator.java    From openjdk-jdk8u-backup with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Normalize whitespace in an XMLString according to the rules defined
 * in XML Schema specifications.
 * @param value    The string to normalize.
 * @param collapse replace or collapse
 */
private void normalizeWhitespace(XMLString value, boolean collapse) {
    boolean skipSpace = collapse;
    boolean sawNonWS = false;
    boolean leading = false;
    boolean trailing = false;
    char c;
    int size = value.offset + value.length;

    // ensure the ch array is big enough
    if (fNormalizedStr.ch == null || fNormalizedStr.ch.length < value.length + 1) {
        fNormalizedStr.ch = new char[value.length + 1];
    }
    // don't include the leading ' ' for now. might include it later.
    fNormalizedStr.offset = 1;
    fNormalizedStr.length = 1;

    for (int i = value.offset; i < size; i++) {
        c = value.ch[i];
        if (XMLChar.isSpace(c)) {
            if (!skipSpace) {
                // take the first whitespace as a space and skip the others
                fNormalizedStr.ch[fNormalizedStr.length++] = ' ';
                skipSpace = collapse;
            }
            if (!sawNonWS) {
                // this is a leading whitespace, record it
                leading = true;
            }
        } else {
            fNormalizedStr.ch[fNormalizedStr.length++] = c;
            skipSpace = false;
            sawNonWS = true;
        }
    }
    if (skipSpace) {
        if (fNormalizedStr.length > 1) {
            // if we finished on a space trim it but also record it
            fNormalizedStr.length--;
            trailing = true;
        } else if (leading && !fFirstChunk) {
            // if all we had was whitespace we skipped record it as
            // trailing whitespace as well
            trailing = true;
        }
    }

    if (fNormalizedStr.length > 1) {
        if (!fFirstChunk && (fWhiteSpace == XSSimpleType.WS_COLLAPSE)) {
            if (fTrailing) {
                // previous chunk ended on whitespace
                // insert whitespace
                fNormalizedStr.offset = 0;
                fNormalizedStr.ch[0] = ' ';
            } else if (leading) {
                // previous chunk ended on character,
                // this chunk starts with whitespace
                fNormalizedStr.offset = 0;
                fNormalizedStr.ch[0] = ' ';
            }
        }
    }

    // The length includes the leading ' '. Now removing it.
    fNormalizedStr.length -= fNormalizedStr.offset;

    fTrailing = trailing;

    if (trailing || sawNonWS)
        fFirstChunk = false;
}
 
Example 11
Source File: FullDVFactory.java    From jdk1.8-source-analysis with Apache License 2.0 4 votes vote down vote up
static void createBuiltInTypes(SymbolHash types) {
    // create base types first
    BaseDVFactory.createBuiltInTypes(types);

    // full schema simple type names
    final String DOUBLE            = "double";
    final String DURATION          = "duration";
    final String ENTITY            = "ENTITY";
    final String ENTITIES          = "ENTITIES";
    final String FLOAT             = "float";
    final String HEXBINARY         = "hexBinary";
    final String ID                = "ID";
    final String IDREF             = "IDREF";
    final String IDREFS            = "IDREFS";
    final String NAME              = "Name";
    final String NCNAME            = "NCName";
    final String NMTOKEN           = "NMTOKEN";
    final String NMTOKENS          = "NMTOKENS";
    final String LANGUAGE          = "language";
    final String NORMALIZEDSTRING  = "normalizedString";
    final String NOTATION          = "NOTATION";
    final String QNAME             = "QName";
    final String STRING            = "string";
    final String TOKEN             = "token";

    final XSFacets facets = new XSFacets();

    XSSimpleTypeDecl anySimpleType = XSSimpleTypeDecl.fAnySimpleType;
    XSSimpleTypeDecl stringDV = (XSSimpleTypeDecl)types.get(STRING);

    types.put(FLOAT, new XSSimpleTypeDecl(anySimpleType, FLOAT, XSSimpleTypeDecl.DV_FLOAT, XSSimpleType.ORDERED_PARTIAL, true, true, true, true, XSConstants.FLOAT_DT));
    types.put(DOUBLE, new XSSimpleTypeDecl(anySimpleType, DOUBLE, XSSimpleTypeDecl.DV_DOUBLE, XSSimpleType.ORDERED_PARTIAL, true, true, true, true, XSConstants.DOUBLE_DT));
    types.put(DURATION, new XSSimpleTypeDecl(anySimpleType, DURATION, XSSimpleTypeDecl.DV_DURATION, XSSimpleType.ORDERED_PARTIAL, false, false, false, true, XSConstants.DURATION_DT));
    types.put(HEXBINARY, new XSSimpleTypeDecl(anySimpleType, HEXBINARY, XSSimpleTypeDecl.DV_HEXBINARY, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.HEXBINARY_DT));
    types.put(QNAME, new XSSimpleTypeDecl(anySimpleType, QNAME, XSSimpleTypeDecl.DV_QNAME, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.QNAME_DT));
    types.put(NOTATION, new XSSimpleTypeDecl(anySimpleType, NOTATION, XSSimpleTypeDecl.DV_NOTATION, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.NOTATION_DT));

    facets.whiteSpace =  XSSimpleType.WS_REPLACE;
    XSSimpleTypeDecl normalizedDV = new XSSimpleTypeDecl(stringDV, NORMALIZEDSTRING , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NORMALIZEDSTRING_DT);
    normalizedDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0 );
    types.put(NORMALIZEDSTRING, normalizedDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl tokenDV = new XSSimpleTypeDecl(normalizedDV, TOKEN , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.TOKEN_DT);
    tokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0 );
    types.put(TOKEN, tokenDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    facets.pattern  = "([a-zA-Z]{1,8})(-[a-zA-Z0-9]{1,8})*";
    XSSimpleTypeDecl languageDV = new XSSimpleTypeDecl(tokenDV, LANGUAGE , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.LANGUAGE_DT);
    languageDV.applyFacets1(facets, (short)(XSSimpleType.FACET_WHITESPACE | XSSimpleType.FACET_PATTERN) ,(short)0);
    types.put(LANGUAGE, languageDV);

    facets.whiteSpace =  XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl nameDV = new XSSimpleTypeDecl(tokenDV, NAME , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NAME_DT);
    nameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NAME);
    types.put(NAME, nameDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl ncnameDV = new XSSimpleTypeDecl(nameDV, NCNAME , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NCNAME_DT) ;
    ncnameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NCNAME);
    types.put(NCNAME, ncnameDV);

    types.put(ID, new XSSimpleTypeDecl(ncnameDV,  ID, XSSimpleTypeDecl.DV_ID, XSSimpleType.ORDERED_FALSE, false, false, false , true, XSConstants.ID_DT));
    XSSimpleTypeDecl idrefDV = new XSSimpleTypeDecl(ncnameDV,  IDREF , XSSimpleTypeDecl.DV_IDREF, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.IDREF_DT);
    types.put(IDREF, idrefDV);

    facets.minLength = 1;
    XSSimpleTypeDecl tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, idrefDV, true, null);
    XSSimpleTypeDecl idrefsDV = new XSSimpleTypeDecl(tempDV, IDREFS, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    idrefsDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(IDREFS, idrefsDV);

    XSSimpleTypeDecl entityDV = new XSSimpleTypeDecl(ncnameDV, ENTITY , XSSimpleTypeDecl.DV_ENTITY, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.ENTITY_DT);
    types.put(ENTITY, entityDV);

    facets.minLength = 1;
    tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, entityDV, true, null);
    XSSimpleTypeDecl entitiesDV = new XSSimpleTypeDecl(tempDV, ENTITIES, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    entitiesDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(ENTITIES, entitiesDV);


    facets.whiteSpace  = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl nmtokenDV = new XSSimpleTypeDecl(tokenDV, NMTOKEN, URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NMTOKEN_DT);
    nmtokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NMTOKEN);
    types.put(NMTOKEN, nmtokenDV);

    facets.minLength = 1;
    tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, nmtokenDV, true, null);
    XSSimpleTypeDecl nmtokensDV = new XSSimpleTypeDecl(tempDV, NMTOKENS, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    nmtokensDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(NMTOKENS, nmtokensDV);
}
 
Example 12
Source File: XMLSchemaValidator.java    From openjdk-jdk8u with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Normalize whitespace in an XMLString according to the rules defined
 * in XML Schema specifications.
 * @param value    The string to normalize.
 * @param collapse replace or collapse
 */
private void normalizeWhitespace(XMLString value, boolean collapse) {
    boolean skipSpace = collapse;
    boolean sawNonWS = false;
    boolean leading = false;
    boolean trailing = false;
    char c;
    int size = value.offset + value.length;

    // ensure the ch array is big enough
    if (fNormalizedStr.ch == null || fNormalizedStr.ch.length < value.length + 1) {
        fNormalizedStr.ch = new char[value.length + 1];
    }
    // don't include the leading ' ' for now. might include it later.
    fNormalizedStr.offset = 1;
    fNormalizedStr.length = 1;

    for (int i = value.offset; i < size; i++) {
        c = value.ch[i];
        if (XMLChar.isSpace(c)) {
            if (!skipSpace) {
                // take the first whitespace as a space and skip the others
                fNormalizedStr.ch[fNormalizedStr.length++] = ' ';
                skipSpace = collapse;
            }
            if (!sawNonWS) {
                // this is a leading whitespace, record it
                leading = true;
            }
        } else {
            fNormalizedStr.ch[fNormalizedStr.length++] = c;
            skipSpace = false;
            sawNonWS = true;
        }
    }
    if (skipSpace) {
        if (fNormalizedStr.length > 1) {
            // if we finished on a space trim it but also record it
            fNormalizedStr.length--;
            trailing = true;
        } else if (leading && !fFirstChunk) {
            // if all we had was whitespace we skipped record it as
            // trailing whitespace as well
            trailing = true;
        }
    }

    if (fNormalizedStr.length > 1) {
        if (!fFirstChunk && (fWhiteSpace == XSSimpleType.WS_COLLAPSE)) {
            if (fTrailing) {
                // previous chunk ended on whitespace
                // insert whitespace
                fNormalizedStr.offset = 0;
                fNormalizedStr.ch[0] = ' ';
            } else if (leading) {
                // previous chunk ended on character,
                // this chunk starts with whitespace
                fNormalizedStr.offset = 0;
                fNormalizedStr.ch[0] = ' ';
            }
        }
    }

    // The length includes the leading ' '. Now removing it.
    fNormalizedStr.length -= fNormalizedStr.offset;

    fTrailing = trailing;

    if (trailing || sawNonWS)
        fFirstChunk = false;
}
 
Example 13
Source File: FullDVFactory.java    From openjdk-jdk8u with GNU General Public License v2.0 4 votes vote down vote up
static void createBuiltInTypes(SymbolHash types) {
    // create base types first
    BaseDVFactory.createBuiltInTypes(types);

    // full schema simple type names
    final String DOUBLE            = "double";
    final String DURATION          = "duration";
    final String ENTITY            = "ENTITY";
    final String ENTITIES          = "ENTITIES";
    final String FLOAT             = "float";
    final String HEXBINARY         = "hexBinary";
    final String ID                = "ID";
    final String IDREF             = "IDREF";
    final String IDREFS            = "IDREFS";
    final String NAME              = "Name";
    final String NCNAME            = "NCName";
    final String NMTOKEN           = "NMTOKEN";
    final String NMTOKENS          = "NMTOKENS";
    final String LANGUAGE          = "language";
    final String NORMALIZEDSTRING  = "normalizedString";
    final String NOTATION          = "NOTATION";
    final String QNAME             = "QName";
    final String STRING            = "string";
    final String TOKEN             = "token";

    final XSFacets facets = new XSFacets();

    XSSimpleTypeDecl anySimpleType = XSSimpleTypeDecl.fAnySimpleType;
    XSSimpleTypeDecl stringDV = (XSSimpleTypeDecl)types.get(STRING);

    types.put(FLOAT, new XSSimpleTypeDecl(anySimpleType, FLOAT, XSSimpleTypeDecl.DV_FLOAT, XSSimpleType.ORDERED_PARTIAL, true, true, true, true, XSConstants.FLOAT_DT));
    types.put(DOUBLE, new XSSimpleTypeDecl(anySimpleType, DOUBLE, XSSimpleTypeDecl.DV_DOUBLE, XSSimpleType.ORDERED_PARTIAL, true, true, true, true, XSConstants.DOUBLE_DT));
    types.put(DURATION, new XSSimpleTypeDecl(anySimpleType, DURATION, XSSimpleTypeDecl.DV_DURATION, XSSimpleType.ORDERED_PARTIAL, false, false, false, true, XSConstants.DURATION_DT));
    types.put(HEXBINARY, new XSSimpleTypeDecl(anySimpleType, HEXBINARY, XSSimpleTypeDecl.DV_HEXBINARY, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.HEXBINARY_DT));
    types.put(QNAME, new XSSimpleTypeDecl(anySimpleType, QNAME, XSSimpleTypeDecl.DV_QNAME, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.QNAME_DT));
    types.put(NOTATION, new XSSimpleTypeDecl(anySimpleType, NOTATION, XSSimpleTypeDecl.DV_NOTATION, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.NOTATION_DT));

    facets.whiteSpace =  XSSimpleType.WS_REPLACE;
    XSSimpleTypeDecl normalizedDV = new XSSimpleTypeDecl(stringDV, NORMALIZEDSTRING , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NORMALIZEDSTRING_DT);
    normalizedDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0 );
    types.put(NORMALIZEDSTRING, normalizedDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl tokenDV = new XSSimpleTypeDecl(normalizedDV, TOKEN , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.TOKEN_DT);
    tokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0 );
    types.put(TOKEN, tokenDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    facets.pattern  = "([a-zA-Z]{1,8})(-[a-zA-Z0-9]{1,8})*";
    XSSimpleTypeDecl languageDV = new XSSimpleTypeDecl(tokenDV, LANGUAGE , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.LANGUAGE_DT);
    languageDV.applyFacets1(facets, (short)(XSSimpleType.FACET_WHITESPACE | XSSimpleType.FACET_PATTERN) ,(short)0);
    types.put(LANGUAGE, languageDV);

    facets.whiteSpace =  XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl nameDV = new XSSimpleTypeDecl(tokenDV, NAME , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NAME_DT);
    nameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NAME);
    types.put(NAME, nameDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl ncnameDV = new XSSimpleTypeDecl(nameDV, NCNAME , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NCNAME_DT) ;
    ncnameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NCNAME);
    types.put(NCNAME, ncnameDV);

    types.put(ID, new XSSimpleTypeDecl(ncnameDV,  ID, XSSimpleTypeDecl.DV_ID, XSSimpleType.ORDERED_FALSE, false, false, false , true, XSConstants.ID_DT));
    XSSimpleTypeDecl idrefDV = new XSSimpleTypeDecl(ncnameDV,  IDREF , XSSimpleTypeDecl.DV_IDREF, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.IDREF_DT);
    types.put(IDREF, idrefDV);

    facets.minLength = 1;
    XSSimpleTypeDecl tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, idrefDV, true, null);
    XSSimpleTypeDecl idrefsDV = new XSSimpleTypeDecl(tempDV, IDREFS, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    idrefsDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(IDREFS, idrefsDV);

    XSSimpleTypeDecl entityDV = new XSSimpleTypeDecl(ncnameDV, ENTITY , XSSimpleTypeDecl.DV_ENTITY, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.ENTITY_DT);
    types.put(ENTITY, entityDV);

    facets.minLength = 1;
    tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, entityDV, true, null);
    XSSimpleTypeDecl entitiesDV = new XSSimpleTypeDecl(tempDV, ENTITIES, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    entitiesDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(ENTITIES, entitiesDV);


    facets.whiteSpace  = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl nmtokenDV = new XSSimpleTypeDecl(tokenDV, NMTOKEN, URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NMTOKEN_DT);
    nmtokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NMTOKEN);
    types.put(NMTOKEN, nmtokenDV);

    facets.minLength = 1;
    tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, nmtokenDV, true, null);
    XSSimpleTypeDecl nmtokensDV = new XSSimpleTypeDecl(tempDV, NMTOKENS, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    nmtokensDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(NMTOKENS, nmtokensDV);
}
 
Example 14
Source File: XMLSchemaValidator.java    From JDKSourceCode1.8 with MIT License 4 votes vote down vote up
/**
 * Normalize whitespace in an XMLString according to the rules defined
 * in XML Schema specifications.
 * @param value    The string to normalize.
 * @param collapse replace or collapse
 */
private void normalizeWhitespace(XMLString value, boolean collapse) {
    boolean skipSpace = collapse;
    boolean sawNonWS = false;
    boolean leading = false;
    boolean trailing = false;
    char c;
    int size = value.offset + value.length;

    // ensure the ch array is big enough
    if (fNormalizedStr.ch == null || fNormalizedStr.ch.length < value.length + 1) {
        fNormalizedStr.ch = new char[value.length + 1];
    }
    // don't include the leading ' ' for now. might include it later.
    fNormalizedStr.offset = 1;
    fNormalizedStr.length = 1;

    for (int i = value.offset; i < size; i++) {
        c = value.ch[i];
        if (XMLChar.isSpace(c)) {
            if (!skipSpace) {
                // take the first whitespace as a space and skip the others
                fNormalizedStr.ch[fNormalizedStr.length++] = ' ';
                skipSpace = collapse;
            }
            if (!sawNonWS) {
                // this is a leading whitespace, record it
                leading = true;
            }
        } else {
            fNormalizedStr.ch[fNormalizedStr.length++] = c;
            skipSpace = false;
            sawNonWS = true;
        }
    }
    if (skipSpace) {
        if (fNormalizedStr.length > 1) {
            // if we finished on a space trim it but also record it
            fNormalizedStr.length--;
            trailing = true;
        } else if (leading && !fFirstChunk) {
            // if all we had was whitespace we skipped record it as
            // trailing whitespace as well
            trailing = true;
        }
    }

    if (fNormalizedStr.length > 1) {
        if (!fFirstChunk && (fWhiteSpace == XSSimpleType.WS_COLLAPSE)) {
            if (fTrailing) {
                // previous chunk ended on whitespace
                // insert whitespace
                fNormalizedStr.offset = 0;
                fNormalizedStr.ch[0] = ' ';
            } else if (leading) {
                // previous chunk ended on character,
                // this chunk starts with whitespace
                fNormalizedStr.offset = 0;
                fNormalizedStr.ch[0] = ' ';
            }
        }
    }

    // The length includes the leading ' '. Now removing it.
    fNormalizedStr.length -= fNormalizedStr.offset;

    fTrailing = trailing;

    if (trailing || sawNonWS)
        fFirstChunk = false;
}
 
Example 15
Source File: FullDVFactory.java    From JDKSourceCode1.8 with MIT License 4 votes vote down vote up
static void createBuiltInTypes(SymbolHash types) {
    // create base types first
    BaseDVFactory.createBuiltInTypes(types);

    // full schema simple type names
    final String DOUBLE            = "double";
    final String DURATION          = "duration";
    final String ENTITY            = "ENTITY";
    final String ENTITIES          = "ENTITIES";
    final String FLOAT             = "float";
    final String HEXBINARY         = "hexBinary";
    final String ID                = "ID";
    final String IDREF             = "IDREF";
    final String IDREFS            = "IDREFS";
    final String NAME              = "Name";
    final String NCNAME            = "NCName";
    final String NMTOKEN           = "NMTOKEN";
    final String NMTOKENS          = "NMTOKENS";
    final String LANGUAGE          = "language";
    final String NORMALIZEDSTRING  = "normalizedString";
    final String NOTATION          = "NOTATION";
    final String QNAME             = "QName";
    final String STRING            = "string";
    final String TOKEN             = "token";

    final XSFacets facets = new XSFacets();

    XSSimpleTypeDecl anySimpleType = XSSimpleTypeDecl.fAnySimpleType;
    XSSimpleTypeDecl stringDV = (XSSimpleTypeDecl)types.get(STRING);

    types.put(FLOAT, new XSSimpleTypeDecl(anySimpleType, FLOAT, XSSimpleTypeDecl.DV_FLOAT, XSSimpleType.ORDERED_PARTIAL, true, true, true, true, XSConstants.FLOAT_DT));
    types.put(DOUBLE, new XSSimpleTypeDecl(anySimpleType, DOUBLE, XSSimpleTypeDecl.DV_DOUBLE, XSSimpleType.ORDERED_PARTIAL, true, true, true, true, XSConstants.DOUBLE_DT));
    types.put(DURATION, new XSSimpleTypeDecl(anySimpleType, DURATION, XSSimpleTypeDecl.DV_DURATION, XSSimpleType.ORDERED_PARTIAL, false, false, false, true, XSConstants.DURATION_DT));
    types.put(HEXBINARY, new XSSimpleTypeDecl(anySimpleType, HEXBINARY, XSSimpleTypeDecl.DV_HEXBINARY, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.HEXBINARY_DT));
    types.put(QNAME, new XSSimpleTypeDecl(anySimpleType, QNAME, XSSimpleTypeDecl.DV_QNAME, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.QNAME_DT));
    types.put(NOTATION, new XSSimpleTypeDecl(anySimpleType, NOTATION, XSSimpleTypeDecl.DV_NOTATION, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.NOTATION_DT));

    facets.whiteSpace =  XSSimpleType.WS_REPLACE;
    XSSimpleTypeDecl normalizedDV = new XSSimpleTypeDecl(stringDV, NORMALIZEDSTRING , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NORMALIZEDSTRING_DT);
    normalizedDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0 );
    types.put(NORMALIZEDSTRING, normalizedDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl tokenDV = new XSSimpleTypeDecl(normalizedDV, TOKEN , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.TOKEN_DT);
    tokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0 );
    types.put(TOKEN, tokenDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    facets.pattern  = "([a-zA-Z]{1,8})(-[a-zA-Z0-9]{1,8})*";
    XSSimpleTypeDecl languageDV = new XSSimpleTypeDecl(tokenDV, LANGUAGE , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.LANGUAGE_DT);
    languageDV.applyFacets1(facets, (short)(XSSimpleType.FACET_WHITESPACE | XSSimpleType.FACET_PATTERN) ,(short)0);
    types.put(LANGUAGE, languageDV);

    facets.whiteSpace =  XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl nameDV = new XSSimpleTypeDecl(tokenDV, NAME , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NAME_DT);
    nameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NAME);
    types.put(NAME, nameDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl ncnameDV = new XSSimpleTypeDecl(nameDV, NCNAME , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NCNAME_DT) ;
    ncnameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NCNAME);
    types.put(NCNAME, ncnameDV);

    types.put(ID, new XSSimpleTypeDecl(ncnameDV,  ID, XSSimpleTypeDecl.DV_ID, XSSimpleType.ORDERED_FALSE, false, false, false , true, XSConstants.ID_DT));
    XSSimpleTypeDecl idrefDV = new XSSimpleTypeDecl(ncnameDV,  IDREF , XSSimpleTypeDecl.DV_IDREF, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.IDREF_DT);
    types.put(IDREF, idrefDV);

    facets.minLength = 1;
    XSSimpleTypeDecl tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, idrefDV, true, null);
    XSSimpleTypeDecl idrefsDV = new XSSimpleTypeDecl(tempDV, IDREFS, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    idrefsDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(IDREFS, idrefsDV);

    XSSimpleTypeDecl entityDV = new XSSimpleTypeDecl(ncnameDV, ENTITY , XSSimpleTypeDecl.DV_ENTITY, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.ENTITY_DT);
    types.put(ENTITY, entityDV);

    facets.minLength = 1;
    tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, entityDV, true, null);
    XSSimpleTypeDecl entitiesDV = new XSSimpleTypeDecl(tempDV, ENTITIES, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    entitiesDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(ENTITIES, entitiesDV);


    facets.whiteSpace  = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl nmtokenDV = new XSSimpleTypeDecl(tokenDV, NMTOKEN, URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NMTOKEN_DT);
    nmtokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NMTOKEN);
    types.put(NMTOKEN, nmtokenDV);

    facets.minLength = 1;
    tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, nmtokenDV, true, null);
    XSSimpleTypeDecl nmtokensDV = new XSSimpleTypeDecl(tempDV, NMTOKENS, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    nmtokensDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(NMTOKENS, nmtokensDV);
}
 
Example 16
Source File: XMLSchemaValidator.java    From jdk8u60 with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Normalize whitespace in an XMLString according to the rules defined
 * in XML Schema specifications.
 * @param value    The string to normalize.
 * @param collapse replace or collapse
 */
private void normalizeWhitespace(XMLString value, boolean collapse) {
    boolean skipSpace = collapse;
    boolean sawNonWS = false;
    boolean leading = false;
    boolean trailing = false;
    char c;
    int size = value.offset + value.length;

    // ensure the ch array is big enough
    if (fNormalizedStr.ch == null || fNormalizedStr.ch.length < value.length + 1) {
        fNormalizedStr.ch = new char[value.length + 1];
    }
    // don't include the leading ' ' for now. might include it later.
    fNormalizedStr.offset = 1;
    fNormalizedStr.length = 1;

    for (int i = value.offset; i < size; i++) {
        c = value.ch[i];
        if (XMLChar.isSpace(c)) {
            if (!skipSpace) {
                // take the first whitespace as a space and skip the others
                fNormalizedStr.ch[fNormalizedStr.length++] = ' ';
                skipSpace = collapse;
            }
            if (!sawNonWS) {
                // this is a leading whitespace, record it
                leading = true;
            }
        } else {
            fNormalizedStr.ch[fNormalizedStr.length++] = c;
            skipSpace = false;
            sawNonWS = true;
        }
    }
    if (skipSpace) {
        if (fNormalizedStr.length > 1) {
            // if we finished on a space trim it but also record it
            fNormalizedStr.length--;
            trailing = true;
        } else if (leading && !fFirstChunk) {
            // if all we had was whitespace we skipped record it as
            // trailing whitespace as well
            trailing = true;
        }
    }

    if (fNormalizedStr.length > 1) {
        if (!fFirstChunk && (fWhiteSpace == XSSimpleType.WS_COLLAPSE)) {
            if (fTrailing) {
                // previous chunk ended on whitespace
                // insert whitespace
                fNormalizedStr.offset = 0;
                fNormalizedStr.ch[0] = ' ';
            } else if (leading) {
                // previous chunk ended on character,
                // this chunk starts with whitespace
                fNormalizedStr.offset = 0;
                fNormalizedStr.ch[0] = ' ';
            }
        }
    }

    // The length includes the leading ' '. Now removing it.
    fNormalizedStr.length -= fNormalizedStr.offset;

    fTrailing = trailing;

    if (trailing || sawNonWS)
        fFirstChunk = false;
}
 
Example 17
Source File: FullDVFactory.java    From jdk8u60 with GNU General Public License v2.0 4 votes vote down vote up
static void createBuiltInTypes(SymbolHash types) {
    // create base types first
    BaseDVFactory.createBuiltInTypes(types);

    // full schema simple type names
    final String DOUBLE            = "double";
    final String DURATION          = "duration";
    final String ENTITY            = "ENTITY";
    final String ENTITIES          = "ENTITIES";
    final String FLOAT             = "float";
    final String HEXBINARY         = "hexBinary";
    final String ID                = "ID";
    final String IDREF             = "IDREF";
    final String IDREFS            = "IDREFS";
    final String NAME              = "Name";
    final String NCNAME            = "NCName";
    final String NMTOKEN           = "NMTOKEN";
    final String NMTOKENS          = "NMTOKENS";
    final String LANGUAGE          = "language";
    final String NORMALIZEDSTRING  = "normalizedString";
    final String NOTATION          = "NOTATION";
    final String QNAME             = "QName";
    final String STRING            = "string";
    final String TOKEN             = "token";

    final XSFacets facets = new XSFacets();

    XSSimpleTypeDecl anySimpleType = XSSimpleTypeDecl.fAnySimpleType;
    XSSimpleTypeDecl stringDV = (XSSimpleTypeDecl)types.get(STRING);

    types.put(FLOAT, new XSSimpleTypeDecl(anySimpleType, FLOAT, XSSimpleTypeDecl.DV_FLOAT, XSSimpleType.ORDERED_PARTIAL, true, true, true, true, XSConstants.FLOAT_DT));
    types.put(DOUBLE, new XSSimpleTypeDecl(anySimpleType, DOUBLE, XSSimpleTypeDecl.DV_DOUBLE, XSSimpleType.ORDERED_PARTIAL, true, true, true, true, XSConstants.DOUBLE_DT));
    types.put(DURATION, new XSSimpleTypeDecl(anySimpleType, DURATION, XSSimpleTypeDecl.DV_DURATION, XSSimpleType.ORDERED_PARTIAL, false, false, false, true, XSConstants.DURATION_DT));
    types.put(HEXBINARY, new XSSimpleTypeDecl(anySimpleType, HEXBINARY, XSSimpleTypeDecl.DV_HEXBINARY, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.HEXBINARY_DT));
    types.put(QNAME, new XSSimpleTypeDecl(anySimpleType, QNAME, XSSimpleTypeDecl.DV_QNAME, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.QNAME_DT));
    types.put(NOTATION, new XSSimpleTypeDecl(anySimpleType, NOTATION, XSSimpleTypeDecl.DV_NOTATION, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.NOTATION_DT));

    facets.whiteSpace =  XSSimpleType.WS_REPLACE;
    XSSimpleTypeDecl normalizedDV = new XSSimpleTypeDecl(stringDV, NORMALIZEDSTRING , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NORMALIZEDSTRING_DT);
    normalizedDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0 );
    types.put(NORMALIZEDSTRING, normalizedDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl tokenDV = new XSSimpleTypeDecl(normalizedDV, TOKEN , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.TOKEN_DT);
    tokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0 );
    types.put(TOKEN, tokenDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    facets.pattern  = "([a-zA-Z]{1,8})(-[a-zA-Z0-9]{1,8})*";
    XSSimpleTypeDecl languageDV = new XSSimpleTypeDecl(tokenDV, LANGUAGE , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.LANGUAGE_DT);
    languageDV.applyFacets1(facets, (short)(XSSimpleType.FACET_WHITESPACE | XSSimpleType.FACET_PATTERN) ,(short)0);
    types.put(LANGUAGE, languageDV);

    facets.whiteSpace =  XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl nameDV = new XSSimpleTypeDecl(tokenDV, NAME , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NAME_DT);
    nameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NAME);
    types.put(NAME, nameDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl ncnameDV = new XSSimpleTypeDecl(nameDV, NCNAME , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NCNAME_DT) ;
    ncnameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NCNAME);
    types.put(NCNAME, ncnameDV);

    types.put(ID, new XSSimpleTypeDecl(ncnameDV,  ID, XSSimpleTypeDecl.DV_ID, XSSimpleType.ORDERED_FALSE, false, false, false , true, XSConstants.ID_DT));
    XSSimpleTypeDecl idrefDV = new XSSimpleTypeDecl(ncnameDV,  IDREF , XSSimpleTypeDecl.DV_IDREF, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.IDREF_DT);
    types.put(IDREF, idrefDV);

    facets.minLength = 1;
    XSSimpleTypeDecl tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, idrefDV, true, null);
    XSSimpleTypeDecl idrefsDV = new XSSimpleTypeDecl(tempDV, IDREFS, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    idrefsDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(IDREFS, idrefsDV);

    XSSimpleTypeDecl entityDV = new XSSimpleTypeDecl(ncnameDV, ENTITY , XSSimpleTypeDecl.DV_ENTITY, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.ENTITY_DT);
    types.put(ENTITY, entityDV);

    facets.minLength = 1;
    tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, entityDV, true, null);
    XSSimpleTypeDecl entitiesDV = new XSSimpleTypeDecl(tempDV, ENTITIES, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    entitiesDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(ENTITIES, entitiesDV);


    facets.whiteSpace  = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl nmtokenDV = new XSSimpleTypeDecl(tokenDV, NMTOKEN, URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NMTOKEN_DT);
    nmtokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NMTOKEN);
    types.put(NMTOKEN, nmtokenDV);

    facets.minLength = 1;
    tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, nmtokenDV, true, null);
    XSSimpleTypeDecl nmtokensDV = new XSSimpleTypeDecl(tempDV, NMTOKENS, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    nmtokensDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(NMTOKENS, nmtokensDV);
}
 
Example 18
Source File: XMLSchemaValidator.java    From TencentKona-8 with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Normalize whitespace in an XMLString according to the rules defined
 * in XML Schema specifications.
 * @param value    The string to normalize.
 * @param collapse replace or collapse
 */
private void normalizeWhitespace(XMLString value, boolean collapse) {
    boolean skipSpace = collapse;
    boolean sawNonWS = false;
    boolean leading = false;
    boolean trailing = false;
    char c;
    int size = value.offset + value.length;

    // ensure the ch array is big enough
    if (fNormalizedStr.ch == null || fNormalizedStr.ch.length < value.length + 1) {
        fNormalizedStr.ch = new char[value.length + 1];
    }
    // don't include the leading ' ' for now. might include it later.
    fNormalizedStr.offset = 1;
    fNormalizedStr.length = 1;

    for (int i = value.offset; i < size; i++) {
        c = value.ch[i];
        if (XMLChar.isSpace(c)) {
            if (!skipSpace) {
                // take the first whitespace as a space and skip the others
                fNormalizedStr.ch[fNormalizedStr.length++] = ' ';
                skipSpace = collapse;
            }
            if (!sawNonWS) {
                // this is a leading whitespace, record it
                leading = true;
            }
        } else {
            fNormalizedStr.ch[fNormalizedStr.length++] = c;
            skipSpace = false;
            sawNonWS = true;
        }
    }
    if (skipSpace) {
        if (fNormalizedStr.length > 1) {
            // if we finished on a space trim it but also record it
            fNormalizedStr.length--;
            trailing = true;
        } else if (leading && !fFirstChunk) {
            // if all we had was whitespace we skipped record it as
            // trailing whitespace as well
            trailing = true;
        }
    }

    if (fNormalizedStr.length > 1) {
        if (!fFirstChunk && (fWhiteSpace == XSSimpleType.WS_COLLAPSE)) {
            if (fTrailing) {
                // previous chunk ended on whitespace
                // insert whitespace
                fNormalizedStr.offset = 0;
                fNormalizedStr.ch[0] = ' ';
            } else if (leading) {
                // previous chunk ended on character,
                // this chunk starts with whitespace
                fNormalizedStr.offset = 0;
                fNormalizedStr.ch[0] = ' ';
            }
        }
    }

    // The length includes the leading ' '. Now removing it.
    fNormalizedStr.length -= fNormalizedStr.offset;

    fTrailing = trailing;

    if (trailing || sawNonWS)
        fFirstChunk = false;
}
 
Example 19
Source File: FullDVFactory.java    From TencentKona-8 with GNU General Public License v2.0 4 votes vote down vote up
static void createBuiltInTypes(SymbolHash types) {
    // create base types first
    BaseDVFactory.createBuiltInTypes(types);

    // full schema simple type names
    final String DOUBLE            = "double";
    final String DURATION          = "duration";
    final String ENTITY            = "ENTITY";
    final String ENTITIES          = "ENTITIES";
    final String FLOAT             = "float";
    final String HEXBINARY         = "hexBinary";
    final String ID                = "ID";
    final String IDREF             = "IDREF";
    final String IDREFS            = "IDREFS";
    final String NAME              = "Name";
    final String NCNAME            = "NCName";
    final String NMTOKEN           = "NMTOKEN";
    final String NMTOKENS          = "NMTOKENS";
    final String LANGUAGE          = "language";
    final String NORMALIZEDSTRING  = "normalizedString";
    final String NOTATION          = "NOTATION";
    final String QNAME             = "QName";
    final String STRING            = "string";
    final String TOKEN             = "token";

    final XSFacets facets = new XSFacets();

    XSSimpleTypeDecl anySimpleType = XSSimpleTypeDecl.fAnySimpleType;
    XSSimpleTypeDecl stringDV = (XSSimpleTypeDecl)types.get(STRING);

    types.put(FLOAT, new XSSimpleTypeDecl(anySimpleType, FLOAT, XSSimpleTypeDecl.DV_FLOAT, XSSimpleType.ORDERED_PARTIAL, true, true, true, true, XSConstants.FLOAT_DT));
    types.put(DOUBLE, new XSSimpleTypeDecl(anySimpleType, DOUBLE, XSSimpleTypeDecl.DV_DOUBLE, XSSimpleType.ORDERED_PARTIAL, true, true, true, true, XSConstants.DOUBLE_DT));
    types.put(DURATION, new XSSimpleTypeDecl(anySimpleType, DURATION, XSSimpleTypeDecl.DV_DURATION, XSSimpleType.ORDERED_PARTIAL, false, false, false, true, XSConstants.DURATION_DT));
    types.put(HEXBINARY, new XSSimpleTypeDecl(anySimpleType, HEXBINARY, XSSimpleTypeDecl.DV_HEXBINARY, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.HEXBINARY_DT));
    types.put(QNAME, new XSSimpleTypeDecl(anySimpleType, QNAME, XSSimpleTypeDecl.DV_QNAME, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.QNAME_DT));
    types.put(NOTATION, new XSSimpleTypeDecl(anySimpleType, NOTATION, XSSimpleTypeDecl.DV_NOTATION, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.NOTATION_DT));

    facets.whiteSpace =  XSSimpleType.WS_REPLACE;
    XSSimpleTypeDecl normalizedDV = new XSSimpleTypeDecl(stringDV, NORMALIZEDSTRING , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NORMALIZEDSTRING_DT);
    normalizedDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0 );
    types.put(NORMALIZEDSTRING, normalizedDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl tokenDV = new XSSimpleTypeDecl(normalizedDV, TOKEN , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.TOKEN_DT);
    tokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0 );
    types.put(TOKEN, tokenDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    facets.pattern  = "([a-zA-Z]{1,8})(-[a-zA-Z0-9]{1,8})*";
    XSSimpleTypeDecl languageDV = new XSSimpleTypeDecl(tokenDV, LANGUAGE , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.LANGUAGE_DT);
    languageDV.applyFacets1(facets, (short)(XSSimpleType.FACET_WHITESPACE | XSSimpleType.FACET_PATTERN) ,(short)0);
    types.put(LANGUAGE, languageDV);

    facets.whiteSpace =  XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl nameDV = new XSSimpleTypeDecl(tokenDV, NAME , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NAME_DT);
    nameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NAME);
    types.put(NAME, nameDV);

    facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl ncnameDV = new XSSimpleTypeDecl(nameDV, NCNAME , URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NCNAME_DT) ;
    ncnameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NCNAME);
    types.put(NCNAME, ncnameDV);

    types.put(ID, new XSSimpleTypeDecl(ncnameDV,  ID, XSSimpleTypeDecl.DV_ID, XSSimpleType.ORDERED_FALSE, false, false, false , true, XSConstants.ID_DT));
    XSSimpleTypeDecl idrefDV = new XSSimpleTypeDecl(ncnameDV,  IDREF , XSSimpleTypeDecl.DV_IDREF, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.IDREF_DT);
    types.put(IDREF, idrefDV);

    facets.minLength = 1;
    XSSimpleTypeDecl tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, idrefDV, true, null);
    XSSimpleTypeDecl idrefsDV = new XSSimpleTypeDecl(tempDV, IDREFS, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    idrefsDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(IDREFS, idrefsDV);

    XSSimpleTypeDecl entityDV = new XSSimpleTypeDecl(ncnameDV, ENTITY , XSSimpleTypeDecl.DV_ENTITY, XSSimpleType.ORDERED_FALSE, false, false, false, true, XSConstants.ENTITY_DT);
    types.put(ENTITY, entityDV);

    facets.minLength = 1;
    tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, entityDV, true, null);
    XSSimpleTypeDecl entitiesDV = new XSSimpleTypeDecl(tempDV, ENTITIES, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    entitiesDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(ENTITIES, entitiesDV);


    facets.whiteSpace  = XSSimpleType.WS_COLLAPSE;
    XSSimpleTypeDecl nmtokenDV = new XSSimpleTypeDecl(tokenDV, NMTOKEN, URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NMTOKEN_DT);
    nmtokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NMTOKEN);
    types.put(NMTOKEN, nmtokenDV);

    facets.minLength = 1;
    tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0, nmtokenDV, true, null);
    XSSimpleTypeDecl nmtokensDV = new XSSimpleTypeDecl(tempDV, NMTOKENS, URI_SCHEMAFORSCHEMA, (short)0, false, null);
    nmtokensDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
    types.put(NMTOKENS, nmtokensDV);
}
 
Example 20
Source File: XMLSchemaValidator.java    From jdk1.8-source-analysis with Apache License 2.0 4 votes vote down vote up
/**
 * Normalize whitespace in an XMLString according to the rules defined
 * in XML Schema specifications.
 * @param value    The string to normalize.
 * @param collapse replace or collapse
 */
private void normalizeWhitespace(XMLString value, boolean collapse) {
    boolean skipSpace = collapse;
    boolean sawNonWS = false;
    boolean leading = false;
    boolean trailing = false;
    char c;
    int size = value.offset + value.length;

    // ensure the ch array is big enough
    if (fNormalizedStr.ch == null || fNormalizedStr.ch.length < value.length + 1) {
        fNormalizedStr.ch = new char[value.length + 1];
    }
    // don't include the leading ' ' for now. might include it later.
    fNormalizedStr.offset = 1;
    fNormalizedStr.length = 1;

    for (int i = value.offset; i < size; i++) {
        c = value.ch[i];
        if (XMLChar.isSpace(c)) {
            if (!skipSpace) {
                // take the first whitespace as a space and skip the others
                fNormalizedStr.ch[fNormalizedStr.length++] = ' ';
                skipSpace = collapse;
            }
            if (!sawNonWS) {
                // this is a leading whitespace, record it
                leading = true;
            }
        } else {
            fNormalizedStr.ch[fNormalizedStr.length++] = c;
            skipSpace = false;
            sawNonWS = true;
        }
    }
    if (skipSpace) {
        if (fNormalizedStr.length > 1) {
            // if we finished on a space trim it but also record it
            fNormalizedStr.length--;
            trailing = true;
        } else if (leading && !fFirstChunk) {
            // if all we had was whitespace we skipped record it as
            // trailing whitespace as well
            trailing = true;
        }
    }

    if (fNormalizedStr.length > 1) {
        if (!fFirstChunk && (fWhiteSpace == XSSimpleType.WS_COLLAPSE)) {
            if (fTrailing) {
                // previous chunk ended on whitespace
                // insert whitespace
                fNormalizedStr.offset = 0;
                fNormalizedStr.ch[0] = ' ';
            } else if (leading) {
                // previous chunk ended on character,
                // this chunk starts with whitespace
                fNormalizedStr.offset = 0;
                fNormalizedStr.ch[0] = ' ';
            }
        }
    }

    // The length includes the leading ' '. Now removing it.
    fNormalizedStr.length -= fNormalizedStr.offset;

    fTrailing = trailing;

    if (trailing || sawNonWS)
        fFirstChunk = false;
}