@@ -519,7 +519,7 @@ public void endDocument(final Augmentations augs) throws XNIException {
519519 fQName .setValues (null , body , body , null );
520520 callEndElement (fQName , synthesizedAugs ());
521521
522- final String ename = NAMES_UPPERCASE == fNamesElems ? "HTML" : "html" ;
522+ final String ename = NAMES_UPPERCASE == fNamesElems ? "HTML" : "html" ;
523523 fQName .setValues (null , ename , ename , null );
524524 callEndElement (fQName , synthesizedAugs ());
525525 }
@@ -660,7 +660,7 @@ public void startElement(final QName elem, XMLAttributes attrs, final Augmentati
660660
661661 if (!fTemplateFragment && fOpenedSelect ) {
662662 if (elementCode == HTMLElements .SELECT ) {
663- final QName head = createQName ("select" );
663+ final QName head = createQName (fNamesElems == NAMES_UPPERCASE ? "SELECT" : "select" );
664664 endElement (head , synthesizedAugs ());
665665
666666 notifyDiscardedStartElement (elem , attrs , augs );
@@ -693,7 +693,7 @@ else if (!fOpenedSvg && elementCode == HTMLElements.FRAMESET) {
693693 }
694694 // create <head></head> if none was present
695695 if (!fSeenHeadElement ) {
696- final QName head = createQName ("head" );
696+ final QName head = createQName (fNamesElems == NAMES_UPPERCASE ? "HEAD" : "head" );
697697 forceStartElement (head , new XMLAttributesImpl (), synthesizedAugs ());
698698 endElement (head , synthesizedAugs ());
699699 }
@@ -712,7 +712,7 @@ else if (!fOpenedSvg && elementCode == HTMLElements.FRAMESET) {
712712 else if (elementCode == HTMLElements .BODY ) {
713713 // create <head></head> if none was present
714714 if (!fSeenHeadElement ) {
715- final QName head = createQName ("head" );
715+ final QName head = createQName (fNamesElems == NAMES_UPPERCASE ? "HEAD" : "head" );
716716 forceStartElement (head , new XMLAttributesImpl (), synthesizedAugs ());
717717 endElement (head , synthesizedAugs ());
718718 }
@@ -749,7 +749,8 @@ else if (elementCode == HTMLElements.FORM) {
749749 || info .element .code == HTMLElements .TABLE ) {
750750 if (documentHandler_ != null ) {
751751 callStartElement (elem , attrs , augs );
752- callEndElement (createQName ("form" ), synthesizedAugs ());
752+ callEndElement (createQName (fNamesElems == NAMES_UPPERCASE ? "FORM" : "form" ),
753+ synthesizedAugs ());
753754 }
754755 fOpenedForm = false ;
755756 return ;
@@ -782,7 +783,7 @@ else if (elementCode == HTMLElements.TABLE) {
782783 || info .element .code == HTMLElements .TBODY
783784 || info .element .code == HTMLElements .TFOOT
784785 || info .element .code == HTMLElements .TABLE ) {
785- final QName table = createQName ("table" );
786+ final QName table = createQName (fNamesElems == NAMES_UPPERCASE ? "TABLE" : "table" );
786787 endElement (table , synthesizedAugs ());
787788 break ;
788789 }
@@ -804,7 +805,8 @@ else if (fTemplateFragment
804805 // nothing, don't force/check parent for the direct template children
805806 }
806807 else if (!fSeenRootElement && !fDocumentFragment ) {
807- final String pname = preferedParent .name ;
808+ final String pname = fNamesElems == NAMES_UPPERCASE
809+ ? preferedParent .name : preferedParent .lowercaseName ;
808810 if (fReportErrors ) {
809811 final String ename = elem .getRawname ();
810812 fErrorReporter .reportWarning ("HTML2002" , new Object []{ename , pname });
@@ -822,7 +824,8 @@ else if (!fSeenRootElement && !fDocumentFragment) {
822824 if (preferedParent .code != HTMLElements .HEAD || (!fSeenBodyElement && !fDocumentFragment )) {
823825 final int depth = getParentDepth (element );
824826 if (depth == -1 ) { // no parent found
825- final String pname = preferedParent .name ;
827+ final String pname = fNamesElems == NAMES_UPPERCASE
828+ ? preferedParent .name : preferedParent .lowercaseName ;
826829 if (fReportErrors ) {
827830 final String ename = elem .getRawname ();
828831 fErrorReporter .reportWarning ("HTML2004" , new Object []{ename , pname });
@@ -963,7 +966,7 @@ private boolean forceStartElement(final QName elem, final XMLAttributes attrs,
963966 return fElementStack .top > 0 && elem .equals (fElementStack .peek ().qname );
964967 }
965968
966- private QName createQName (String tagName ) {
969+ private static QName createQName (final String tagName ) {
967970 return new QName (null , tagName , tagName , NamespaceBinder .XHTML_1_0_URI );
968971 }
969972
@@ -987,7 +990,7 @@ public void emptyElement(final QName element, final XMLAttributes attrs,
987990 * Generates a missing <body> (which creates missing <head> when needed)
988991 */
989992 private void forceStartBody () {
990- final QName body = createQName ("body" );
993+ final QName body = createQName (fNamesElems == NAMES_UPPERCASE ? "BODY" : "body" );
991994 if (fReportErrors ) {
992995 fErrorReporter .reportWarning ("HTML2006" , new Object []{body .getLocalpart ()});
993996 }
@@ -1309,12 +1312,12 @@ protected final void callStartElement(final QName element, final XMLAttributes a
13091312 private void addBodyIfNeeded (final short element ) {
13101313 if (!fDocumentFragment && !fSeenFramesetElement && element == HTMLElements .HTML ) {
13111314 if (!fSeenHeadElement ) {
1312- final QName head = createQName ("head" );
1315+ final QName head = createQName (fNamesElems == NAMES_UPPERCASE ? "HEAD" : "head" );
13131316 callStartElement (head , new XMLAttributesImpl (), synthesizedAugs ());
13141317 callEndElement (head , synthesizedAugs ());
13151318 }
13161319 if (!fSeenBodyElement ) {
1317- final QName body = createQName ("body" );
1320+ final QName body = createQName (fNamesElems == NAMES_UPPERCASE ? "BODY" : "body" );
13181321 callStartElement (body , new XMLAttributesImpl (), synthesizedAugs ());
13191322 callEndElement (body , synthesizedAugs ());
13201323 }
0 commit comments