void checkRestrictions(int context, DuplicateAttributeDetector dad, Alphabet alpha)
     throws RestrictionViolationException {
   switch (context) {
     case START_CONTEXT:
       throw new RestrictionViolationException("start_contains_attribute");
     case ELEMENT_CONTEXT:
       if (nameClass.isOpen())
         throw new RestrictionViolationException("open_name_class_not_repeated");
       break;
     case ELEMENT_REPEAT_GROUP_CONTEXT:
       throw new RestrictionViolationException("one_or_more_contains_group_contains_attribute");
     case ELEMENT_REPEAT_INTERLEAVE_CONTEXT:
       throw new RestrictionViolationException(
           "one_or_more_contains_interleave_contains_attribute");
     case LIST_CONTEXT:
       throw new RestrictionViolationException("list_contains_attribute");
     case ATTRIBUTE_CONTEXT:
       throw new RestrictionViolationException("attribute_contains_attribute");
     case DATA_EXCEPT_CONTEXT:
       throw new RestrictionViolationException("data_except_contains_attribute");
   }
   if (!dad.addAttribute(nameClass)) {
     if (nameClass instanceof SimpleNameClass)
       throw new RestrictionViolationException(
           "duplicate_attribute_detail", ((SimpleNameClass) nameClass).name);
     else throw new RestrictionViolationException("duplicate_attribute");
   }
   try {
     p.checkRestrictions(ATTRIBUTE_CONTEXT, null, null);
   } catch (RestrictionViolationException e) {
     e.maybeSetLocator(loc);
     throw e;
   }
 }
示例#2
0
  @Override
  void checkRestrictions(int context, DuplicateAttributeDetector dad, Alphabet alpha)
      throws RestrictionViolationException {
    switch (context) {
      case START_CONTEXT:
        throw new RestrictionViolationException("start_contains_one_or_more");
      case DATA_EXCEPT_CONTEXT:
        throw new RestrictionViolationException("data_except_contains_one_or_more");
    }

    p.checkRestrictions(context == ELEMENT_CONTEXT ? ELEMENT_REPEAT_CONTEXT : context, dad, alpha);
    if (context != LIST_CONTEXT && !contentTypeGroupable(p.getContentType(), p.getContentType()))
      throw new RestrictionViolationException("one_or_more_string");
  }