public CSSValue createValue(StyleKey name, LexicalUnit value) { if (value.getLexicalUnitType() == LexicalUnit.SAC_IDENT) { final String text = value.getStringValue(); if (ContentValues.NONE.getCSSText().equals(text)) { return ContentValues.NONE; } if (ContentValues.INHIBIT.getCSSText().equals(text)) { return ContentValues.INHIBIT; } if (ContentValues.NORMAL.getCSSText().equals(text)) { return ContentValues.NORMAL; } } final ArrayList contents = new ArrayList(); final ArrayList contentList = new ArrayList(); while (value != null) { if (value.getLexicalUnitType() == LexicalUnit.SAC_IDENT) { CSSValue o = lookupValue(value); if (o == null) { // parse error ... return null; } contentList.add(o); } else if (value.getLexicalUnitType() == LexicalUnit.SAC_STRING_VALUE) { contentList.add(new CSSStringValue(CSSStringType.STRING, value.getStringValue())); } else if (value.getLexicalUnitType() == LexicalUnit.SAC_URI) { final CSSStringValue uriValue = CSSValueFactory.createUriValue(value); if (uriValue == null) { return null; } contentList.add(uriValue); } else if (value.getLexicalUnitType() == LexicalUnit.SAC_FUNCTION || value.getLexicalUnitType() == LexicalUnit.SAC_COUNTER_FUNCTION || value.getLexicalUnitType() == LexicalUnit.SAC_COUNTERS_FUNCTION) { final CSSFunctionValue functionValue = CSSValueFactory.parseFunction(value); if (functionValue == null) { return null; } contentList.add(functionValue); } else if (value.getLexicalUnitType() == LexicalUnit.SAC_ATTR) { final CSSAttrFunction attrFn = CSSValueFactory.parseAttrFunction(value); if (attrFn == null) { return null; } contentList.add(attrFn); } else if (value.getLexicalUnitType() == LexicalUnit.SAC_OPERATOR_COMMA) { final CSSValue[] values = (CSSValue[]) contentList.toArray(new CSSValue[contentList.size()]); contents.add(new CSSValueList(values)); contentList.clear(); } value = value.getNextLexicalUnit(); } final CSSValue[] values = (CSSValue[]) contentList.toArray(new CSSValue[contentList.size()]); contents.add(new CSSValueList(values)); return new CSSValueList(contents); }