private void checkCloseTagChildren(HtmlCloseTagNode closeTag) {
    HtmlAttributeNode phNameAttribute =
        closeTag.getDirectAttributeNamed(MessagePlaceholders.PHNAME_ATTR);
    HtmlAttributeNode phExAttribute =
        closeTag.getDirectAttributeNamed(MessagePlaceholders.PHEX_ATTR);
    // the child at index 0 is the tag name
    for (int i = 1; i < closeTag.numChildren(); i++) {
      StandaloneNode child = closeTag.getChild(i);
      if (child == phNameAttribute || child == phExAttribute) {
        continue; // the phname and phex attributes are validated later and allowed in close nodes
      }
      errorReporter.report(child.getSourceLocation(), UNEXPECTED_CLOSE_TAG_CONTENT);
    }
  }
private void checkCloseTagChildren ( HtmlCloseTagNode closeTag ) { HtmlAttributeNode phNameAttribute = closeTag . getDirectAttributeNamed ( MessagePlaceholders . PHNAME_ATTR ) ; HtmlAttributeNode phExAttribute = closeTag . getDirectAttributeNamed ( MessagePlaceholders . PHEX_ATTR ) ; for ( int i = 1 ; i < closeTag . numChildren ( ) ; i ++ ) { StandaloneNode child = closeTag . getChild ( i ) ; if ( child == phNameAttribute || child == phExAttribute ) { continue ; } errorReporter . report ( child . getSourceLocation ( ) , UNEXPECTED_CLOSE_TAG_CONTENT ) ; } }
Validates that the only children of close tags can be {@code phname} attributes.

<p>Later passes validate that phnames for close tags only appear in messages.