001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.juneau.bean.html5;
018
019/**
020 * Various useful static methods for creating HTML elements.
021 *
022 * <p>
023 * The HtmlBuilder class contains lots of static creator methods to minimize the amount of code needed to produce HTML DOMs.
024 * Instead of using constructors directly, you can use these static methods for more concise code.
025 *
026 * <h5 class='section'>Examples:</h5>
027 * <p class='bcode w800'>
028 *    <jk>import static</jk> org.apache.juneau.bean.html5.HtmlBuilder.*;
029 * 
030 *    <jc>// Instead of this...</jc>
031 *    P <jv>address</jv> = <jk>new</jk> P()
032 *       .children(
033 *          <js>"John Doe"</js>,
034 *          <jk>new</jk> Br(),
035 *          <js>"123 Main Street"</js>,
036 *          <jk>new</jk> Br(),
037 *          <js>"Anytown, ST 12345"</js>
038 *       );
039 * 
040 *    <jc>// ...you can write this...</jc>
041 *    P <jv>address</jv> = <jsm>p</jsm>(
042 *       <js>"John Doe"</js>,
043 *       <jsm>br</jsm>(),
044 *       <js>"123 Main Street"</js>,
045 *       <jsm>br</jsm>(),
046 *       <js>"Anytown, ST 12345"</js>
047 *    );
048 * 
049 *    <jc>// Form with builder methods</jc>
050 *    Form <jv>form</jv> = <jsm>form</jsm>(<js>"/submit"</js>,
051 *       <jsm>input</jsm>(<js>"text"</js>).name(<js>"username"</js>).placeholder(<js>"Username"</js>),
052 *       <jsm>input</jsm>(<js>"password"</js>).name(<js>"password"</js>).placeholder(<js>"Password"</js>),
053 *       <jsm>button</jsm>(<js>"submit"</js>, <js>"Login"</js>)
054 *    );
055 * 
056 *    <jc>// Table with builder methods</jc>
057 *    Table <jv>table</jv> = <jsm>table</jsm>(
058 *       <jsm>thead</jsm>(
059 *          <jsm>tr</jsm>(
060 *             <jsm>th</jsm>(<js>"Name"</js>),
061 *             <jsm>th</jsm>(<js>"Age"</js>),
062 *             <jsm>th</jsm>(<js>"City"</js>)
063 *          )
064 *       ),
065 *       <jsm>tbody</jsm>(
066 *          <jsm>tr</jsm>(
067 *             <jsm>td</jsm>(<js>"John Doe"</js>),
068 *             <jsm>td</jsm>(<js>"25"</js>),
069 *             <jsm>td</jsm>(<js>"New York"</js>)
070 *          ),
071 *          <jsm>tr</jsm>(
072 *             <jsm>td</jsm>(<js>"Jane Smith"</js>),
073 *             <jsm>td</jsm>(<js>"30"</js>),
074 *             <jsm>td</jsm>(<js>"Los Angeles"</js>)
075 *          )
076 *       )
077 *    );
078 * 
079 *    <jc>// Navigation menu</jc>
080 *    Nav <jv>nav</jv> = <jsm>nav</jsm>(
081 *       <jsm>ul</jsm>(
082 *          <jsm>li</jsm>(<jsm>a</jsm>(<js>"/home"</js>, <js>"Home"</js>)),
083 *          <jsm>li</jsm>(<jsm>a</jsm>(<js>"/about"</js>, <js>"About"</js>)),
084 *          <jsm>li</jsm>(<jsm>a</jsm>(<js>"/contact"</js>, <js>"Contact"</js>))
085 *       )
086 *    );
087 * 
088 *    <jc>// Fieldset with attributes after children</jc>
089 *    Fieldset <jv>fieldset</jv> = <jsm>fieldset</jsm>(
090 *       <jsm>legend</jsm>(<js>"User Information"</js>),
091 *       <jsm>input</jsm>(<js>"text"</js>).name(<js>"firstName"</js>).placeholder(<js>"First Name"</js>),
092 *       <jsm>input</jsm>(<js>"text"</js>).name(<js>"lastName"</js>).placeholder(<js>"Last Name"</js>)
093 *    ).disabled(<jk>true</jk>);
094 * 
095 *    <jc>// List with mixed content</jc>
096 *    Ul <jv>list</jv> = <jsm>ul</jsm>(
097 *       <jsm>li</jsm>(<js>"Simple item"</js>),
098 *       <jsm>li</jsm>(<jsm>strong</jsm>(<js>"Bold item"</js>)),
099 *       <jsm>li</jsm>(
100 *          <js>"Item with "</js>,
101 *          <jsm>em</jsm>(<js>"emphasis"</js>),
102 *          <js>" and "</js>,
103 *          <jsm>code</jsm>(<js>"code"</js>)
104 *       )
105 *    );
106 * 
107 *    <jc>// Media elements</jc>
108 *    Video <jv>video</jv> = <jsm>video</jsm>(<js>"/path/to/video.mp4"</js>)
109 *       .controls(<jk>true</jk>)
110 *       .width(640)
111 *       .height(480)
112 *       .children(
113 *          <jsm>track</jsm>(<js>"/path/to/subtitles.vtt"</js>, <js>"captions"</js>).srclang(<js>"en"</js>).label(<js>"English"</js>)
114 *       );
115 * 
116 *    Audio <jv>audio</jv> = <jsm>audio</jsm>(<js>"/path/to/audio.mp3"</js>)
117 *       .controls(<jk>true</jk>)
118 *       .autoplay(<jk>false</jk>)
119 *       .children(
120 *          <jsm>source</jsm>(<js>"/path/to/audio.ogg"</js>, <js>"audio/ogg"</js>),
121 *          <jsm>source</jsm>(<js>"/path/to/audio.mp3"</js>, <js>"audio/mpeg"</js>)
122 *       );
123 * </p>
124 *
125 * <h5 class='section'>See Also:</h5><ul>
126 *    <li class='link'><a class="doclink" href="https://juneau.apache.org/docs/topics/JuneauBeanHtml5">juneau-bean-html5</a>
127 * </ul>
128 */
129public class HtmlBuilder {
130
131   /**
132    * Constructor.
133    */
134   protected HtmlBuilder() {}
135
136   /**
137    * Creates an empty {@link A} element.
138    *
139    * @return The new element.
140    */
141   public static final A a() {
142      return new A();
143   }
144
145   /**
146    * Creates an {@link A} element with the specified {@link A#href(Object)} attribute and {@link A#children(Object[])}
147    * nodes.
148    *
149    * @param href The {@link A#href(Object)} attribute.
150    * @param children The {@link A#children(Object[])} nodes.
151    * @return The new element.
152    */
153   public static final A a(Object href, Object...children) {
154      return new A(href, children);
155   }
156
157   /**
158    * Creates an empty {@link Abbr} element.
159    *
160    * @return The new element.
161    */
162   public static final Abbr abbr() {
163      return new Abbr();
164   }
165
166   /**
167    * Creates an {@link Abbr} element with the specified {@link Abbr#title(String)} attribute and
168    * {@link Abbr#children(Object[])} nodes.
169    *
170    * @param title The {@link Abbr#title(String)} attribute.
171    * @param children The {@link Abbr#children(Object[])} nodes.
172    * @return The new element.
173    */
174   public static final Abbr abbr(String title, Object...children) {
175      return new Abbr(title, children);
176   }
177
178   /**
179    * Creates an empty {@link Address} element.
180    *
181    * @return The new element.
182    */
183   public static final Address address() {
184      return new Address();
185   }
186
187   /**
188    * Creates an {@link Address} element with the specified child nodes.
189    *
190    * @param children The child nodes.
191    * @return The new element.
192    */
193   public static final Address address(Object...children) {
194      return new Address(children);
195   }
196
197   /**
198    * Creates an empty {@link Area} element.
199    *
200    * @return The new element.
201    */
202   public static final Area area() {
203      return new Area();
204   }
205
206   /**
207    * Creates an {@link Area} element with the specified {@link Area#shape(String)}, {@link Area#coords(String)},
208    * and {@link Area#href(Object)} attributes.
209    *
210    * @param shape The {@link Area#shape(String)} attribute.
211    * @param coords The {@link Area#coords(String)} attribute.
212    * @param href The {@link Area#href(Object)} attribute.
213    * @return The new element.
214    */
215   public static final Area area(String shape, String coords, Object href) {
216      return new Area(shape, coords, href);
217   }
218
219   /**
220    * Creates an empty {@link Article} element.
221    *
222    * @return The new element.
223    */
224   public static final Article article() {
225      return new Article();
226   }
227
228   /**
229    * Creates an {@link Article} element with the specified child nodes.
230    *
231    * @param children The child nodes.
232    * @return The new element.
233    */
234   public static final Article article(Object...children) {
235      return new Article(children);
236   }
237
238   /**
239    * Creates an empty {@link Aside} element.
240    *
241    * @return The new element.
242    */
243   public static final Aside aside() {
244      return new Aside();
245   }
246
247   /**
248    * Creates an {@link Aside} element with the specified child nodes.
249    *
250    * @param children The child nodes.
251    * @return The new element.
252    */
253   public static final Aside aside(Object...children) {
254      return new Aside(children);
255   }
256
257   /**
258    * Creates an empty {@link Audio} element.
259    *
260    * @return The new element.
261    */
262   public static final Audio audio() {
263      return new Audio();
264   }
265
266   /**
267    * Creates an {@link Audio} element with the specified {@link Audio#src(Object)} attribute.
268    *
269    * @param src The {@link Audio#src(Object)} attribute.
270    * @return The new element.
271    */
272   public static final Audio audio(String src) {
273      return new Audio(src);
274   }
275
276   /**
277    * Creates an empty {@link B} element.
278    *
279    * @return The new element.
280    */
281   public static final B b() {
282      return new B();
283   }
284
285   /**
286    * Creates a {@link B} element with the specified child nodes.
287    *
288    * @param children The child nodes.
289    * @return The new element.
290    */
291   public static final B b(Object...children) {
292      return new B(children);
293   }
294
295   /**
296    * Creates an empty {@link Base} element.
297    *
298    * @return The new element.
299    */
300   public static final Base base() {
301      return new Base();
302   }
303
304   /**
305    * Creates a {@link Base} element with the specified {@link Base#href(Object)} attribute.
306    *
307    * @param href The {@link Base#href(Object)} attribute.
308    * @return The new element.
309    */
310   public static final Base base(Object href) {
311      return new Base(href);
312   }
313
314   /**
315    * Creates an empty {@link Bdi} element.
316    *
317    * @return The new element.
318    */
319   public static final Bdi bdi() {
320      return new Bdi();
321   }
322
323   /**
324    * Creates a {@link Bdi} element with the specified {@link Bdi#text(Object)} node.
325    *
326    * @param text The {@link Bdi#text(Object)} node.
327    * @return The new element.
328    */
329   public static final Bdi bdi(Object text) {
330      return new Bdi(text);
331   }
332
333   /**
334    * Creates an empty {@link Bdo} element.
335    *
336    * @return The new element.
337    */
338   public static final Bdo bdo() {
339      return new Bdo();
340   }
341
342   /**
343    * Creates a {@link Bdo} element with the specified {@link Bdo#dir(String)} attribute and child nodes.
344    *
345    * @param dir The {@link Bdo#dir(String)} attribute.
346    * @param children The child nodes.
347    * @return The new element.
348    */
349   public static final Bdo bdo(String dir, Object...children) {
350      return new Bdo(dir, children);
351   }
352
353   /**
354    * Creates an empty {@link Blockquote} element.
355    *
356    * @return The new element.
357    */
358   public static final Blockquote blockquote() {
359      return new Blockquote();
360   }
361
362   /**
363    * Creates a {@link Blockquote} element with the specified child nodes.
364    *
365    * @param children The child nodes.
366    * @return The new element.
367    */
368   public static final Blockquote blockquote(Object...children) {
369      return new Blockquote(children);
370   }
371
372   /**
373    * Creates an empty {@link Body} element.
374    *
375    * @return The new element.
376    */
377   public static final Body body() {
378      return new Body();
379   }
380
381   /**
382    * Creates a {@link Body} element with the specified child nodes.
383    *
384    * @param children The child nodes.
385    * @return The new element.
386    */
387   public static final Body body(Object...children) {
388      return new Body(children);
389   }
390
391   /**
392    * Creates an empty {@link Br} element.
393    *
394    * @return The new element.
395    */
396   public static final Br br() {
397      return new Br();
398   }
399
400   /**
401    * Creates an empty {@link Button} element.
402    *
403    * @return The new element.
404    */
405   public static final Button button() {
406      return new Button();
407   }
408
409   /**
410    * Creates a {@link Button} element with the specified {@link Button#type(String)} attribute.
411    *
412    * @param type The {@link Button#type(String)} attribute.
413    * @return The new element.
414    */
415   public static final Button button(String type) {
416      return new Button(type);
417   }
418
419   /**
420    * Creates a {@link Button} element with the specified {@link Button#type(String)} attribute and
421    * {@link Button#children(Object[])} nodes.
422    *
423    * @param type The {@link Button#type(String)} attribute.
424    * @param children The {@link Button#children(Object[])} nodes.
425    * @return The new element.
426    */
427   public static final Button button(String type, Object...children) {
428      return new Button(type, children);
429   }
430
431   /**
432    * Creates an empty {@link Canvas} element.
433    * @return The new element.
434    */
435   public static final Canvas canvas() {
436      return new Canvas();
437   }
438
439   /**
440    * Creates a {@link Canvas} element with the specified {@link Canvas#width(Object)} and
441    * {@link Canvas#height(Object)} attributes.
442    *
443    * @param width The {@link Canvas#width(Object)} attribute.
444    * @param height The {@link Canvas#height(Object)} attribute.
445    * @return The new element.
446    */
447   public static final Canvas canvas(Number width, Number height) {
448      return new Canvas(width, height);
449   }
450
451   /**
452    * Creates an empty {@link Caption} element.
453    *
454    * @return The new element.
455    */
456   public static final Caption caption() {
457      return new Caption();
458   }
459
460   /**
461    * Creates a {@link Caption} element with the specified child nodes.
462    *
463    * @param children The child nodes.
464    * @return The new element.
465    */
466   public static final Caption caption(Object...children) {
467      return new Caption(children);
468   }
469
470   /**
471    * Creates an empty {@link Cite} element.
472    *
473    * @return The new element.
474    */
475   public static final Cite cite() {
476      return new Cite();
477   }
478
479   /**
480    * Creates a {@link Cite} element with the specified child nodes.
481    *
482    * @param children The child nodes.
483    * @return The new element.
484    */
485   public static final Cite cite(Object...children) {
486      return new Cite(children);
487   }
488
489   /**
490    * Creates an empty {@link Code} element.
491    *
492    * @return The new element.
493    */
494   public static final Code code() {
495      return new Code();
496   }
497
498   /**
499    * Creates a {@link Code} element with the specified child nodes.
500    *
501    * @param children The child nodes.
502    * @return The new element.
503    */
504   public static final Code code(Object...children) {
505      return new Code(children);
506   }
507
508   /**
509    * Creates an empty {@link Col} element.
510    *
511    * @return The new element.
512    *
513    */
514   public static final Col col() {
515      return new Col();
516   }
517
518   /**
519    * Creates a {@link Col} element with the specified {@link Col#span(Object)} attribute.
520    *
521    * @param span The {@link Col#span(Object)} attribute.
522    * @return The new element.
523    */
524   public static final Col col(Number span) {
525      return new Col(span);
526   }
527
528   /**
529    * Creates an empty {@link Colgroup} element.
530    *
531    * @return The new element.
532    */
533   public static final Colgroup colgroup() {
534      return new Colgroup();
535   }
536
537   /**
538    * Creates a {@link Colgroup} element with the specified child nodes.
539    *
540    * @param children The child nodes.
541    * @return The new element.
542    */
543   public static final Colgroup colgroup(Object...children) {
544      return new Colgroup(children);
545   }
546
547   /**
548    * Creates an empty {@link Data} element.
549    *
550    * @return The new element.
551    */
552   public static final Data data() {
553      return new Data();
554   }
555
556   /**
557    * Creates a {@link Data} element with the specified {@link Data#value(Object)} attribute and child node.
558    *
559    * @param value The {@link Data#value(Object)} attribute.
560    * @param child The child node.
561    * @return The new element.
562    */
563   public static final Data data(String value, Object child) {
564      return new Data(value, child);
565   }
566
567   /**
568    * Creates an empty {@link Datalist} element.
569    *
570    * @return The new element.
571    */
572   public static final Datalist datalist() {
573      return new Datalist();
574   }
575
576   /**
577    * Creates a {@link Datalist} element with the specified {@link Datalist#id(String)} attribute and child nodes.
578    *
579    * @param id The {@link Datalist#id(String)} attribute.
580    * @param children The child nodes.
581    * @return The new element.
582    */
583   public static final Datalist datalist(String id, Option...children) {
584      return new Datalist(id, children);
585   }
586
587   /**
588    * Creates an empty {@link Dd} element.
589    *
590    * @return The new element.
591    */
592   public static final Dd dd() {
593      return new Dd();
594   }
595
596   /**
597    * Creates a {@link Dd} element with the specified child nodes.
598    *
599    * @param children The child nodes.
600    * @return The new element.
601    */
602   public static final Dd dd(Object...children) {
603      return new Dd(children);
604   }
605
606   /**
607    * Creates an empty {@link Del} element.
608    *
609    * @return The new element.
610    */
611   public static final Del del() {
612      return new Del();
613   }
614
615   /**
616    * Creates a {@link Del} element with the specified {@link Del#children(Object[])} node.
617    *
618    * @param children The {@link Del#children(Object[])} node.
619    * @return The new element.
620    */
621   public static final Del del(Object...children) {
622      return new Del(children);
623   }
624
625   /**
626    * Creates an empty {@link Dfn} element.
627    *
628    * @return The new element.
629    */
630   public static final Dfn dfn() {
631      return new Dfn();
632   }
633
634   /**
635    * Creates a {@link Dfn} element with the specified child nodes.
636    *
637    * @param children The child nodes.
638    * @return The new element.
639    */
640   public static final Dfn dfn(Object...children) {
641      return new Dfn(children);
642   }
643
644   /**
645    * Creates an empty {@link Div} element.
646    *
647    * @return The new element.
648    */
649   public static final Div div() {
650      return new Div();
651   }
652
653   /**
654    * Creates a {@link Div} element with the specified child nodes.
655    *
656    * @param children The child nodes.
657    * @return The new element.
658    */
659   public static final Div div(Object...children) {
660      return new Div(children);
661   }
662
663   /**
664    * Creates an empty {@link Dl} element.
665    *
666    * @return The new element.
667    */
668   public static final Dl dl() {
669      return new Dl();
670   }
671
672   /**
673    * Creates a {@link Dl} element with the specified child nodes.
674    *
675    * @param children The child nodes.
676    * @return The new element.
677    */
678   public static final Dl dl(Object...children) {
679      return new Dl(children);
680   }
681
682   /**
683    * Creates an empty {@link Dt} element.
684    *
685    * @return The new element.
686    */
687   public static final Dt dt() {
688      return new Dt();
689   }
690
691   /**
692    * Creates a {@link Dt} element with the specified child nodes.
693    *
694    * @param children The child nodes.
695    * @return The new element.
696    */
697   public static final Dt dt(Object...children) {
698      return new Dt(children);
699   }
700
701   /**
702    * Creates an empty {@link Em} element.
703    *
704    * @return The new element.
705    */
706   public static final Em em() {
707      return new Em();
708   }
709
710   /**
711    * Creates an {@link Em} element with the specified {@link Em#children(Object[])} nodes.
712    *
713    * @param children The {@link Em#children(Object[])} nodes.
714    * @return The new element.
715    */
716   public static final Em em(Object...children) {
717      return new Em(children);
718   }
719
720   /**
721    * Creates an empty {@link Embed} element.
722    *
723    * @return The new element.
724    */
725   public static final Embed embed() {
726      return new Embed();
727   }
728
729   /**
730    * Creates an {@link Embed} element with the specified {@link Embed#src(Object)} attribute.
731    *
732    * @param src The {@link Embed#src(Object)} attribute.
733    * @return The new element.
734    */
735   public static final Embed embed(Object src) {
736      return new Embed(src);
737   }
738
739   /**
740    * Creates an empty {@link Fieldset} element.
741    *
742    * @return The new element.
743    */
744   public static final Fieldset fieldset() {
745      return new Fieldset();
746   }
747
748   /**
749    * Creates a {@link Fieldset} element with the specified child nodes.
750    *
751    * @param children The child nodes.
752    * @return The new element.
753    */
754   public static final Fieldset fieldset(Object...children) {
755      return new Fieldset(children);
756   }
757
758   /**
759    * Creates an empty {@link Figcaption} element.
760    *
761    * @return The new element.
762    */
763   public static final Figcaption figcaption() {
764      return new Figcaption();
765   }
766
767   /**
768    * Creates a {@link Figcaption} element with the specified child nodes.
769    *
770    * @param children The child nodes.
771    * @return The new element.
772    */
773   public static final Figcaption figcaption(Object...children) {
774      return new Figcaption(children);
775   }
776
777   /**
778    * Creates an empty {@link Figure} element.
779    *
780    * @return The new element.
781    */
782   public static final Figure figure() {
783      return new Figure();
784   }
785
786   /**
787    * Creates a {@link Figure} element with the specified child nodes.
788    *
789    * @param children The child nodes.
790    * @return The new element.
791    */
792   public static final Figure figure(Object...children) {
793      return new Figure(children);
794   }
795
796   /**
797    * Creates an empty {@link Footer} element.
798    *
799    * @return The new element.
800    */
801   public static final Footer footer() {
802      return new Footer();
803   }
804
805   /**
806    * Creates a {@link Footer} element with the specified child nodes.
807    *
808    * @param children The child nodes.
809    * @return The new element.
810    */
811   public static final Footer footer(Object...children) {
812      return new Footer(children);
813   }
814
815   /**
816    * Creates an empty {@link Form} element.
817    *
818    * @return The new element.
819    */
820   public static final Form form() {
821      return new Form();
822   }
823
824   /**
825    * Creates a {@link Form} element with the specified {@link Form#action(String)} attribute.
826    *
827    * @param action The {@link Form#action(String)} attribute.
828    * @return The new element.
829    */
830   public static final Form form(String action) {
831      return new Form(action);
832   }
833
834   /**
835    * Creates an {@link Form} element with the specified {@link Form#action(String)} attribute and child nodes.
836    *
837    * @param action The {@link Form#action(String)} attribute.
838    * @param children The child nodes.
839    * @return The new element.
840    */
841   public static final Form form(String action, Object...children) {
842      return new Form(action, children);
843   }
844
845   /**
846    * Creates an empty {@link H1} element.
847    *
848    * @return The new element.
849    */
850   public static final H1 h1() {
851      return new H1();
852   }
853
854   /**
855    * Creates an {@link H1} element with the specified child nodes.
856    *
857    * @param children The child nodes.
858    * @return The new element.
859    */
860   public static final H1 h1(Object...children) {
861      return new H1(children);
862   }
863
864   /**
865    * Creates an empty {@link H2} element.
866    *
867    * @return The new element.
868    */
869   public static final H2 h2() {
870      return new H2();
871   }
872
873   /**
874    * Creates an {@link H2} element with the specified child nodes.
875    *
876    * @param children The child nodes.
877    * @return The new element.
878    */
879   public static final H2 h2(Object...children) {
880      return new H2(children);
881   }
882
883   /**
884    * Creates an empty {@link H3} element.
885    *
886    * @return The new element.
887    */
888   public static final H3 h3() {
889      return new H3();
890   }
891
892   /**
893    * Creates an {@link H3} element with the specified child nodes.
894    *
895    * @param children The child nodes.
896    * @return The new element.
897    */
898   public static final H3 h3(Object...children) {
899      return new H3(children);
900   }
901
902   /**
903    * Creates an empty {@link H4} element.
904    *
905    * @return The new element.
906    */
907   public static final H4 h4() {
908      return new H4();
909   }
910
911   /**
912    * Creates an {@link H4} element with the specified child nodes.
913    *
914    * @param children The child nodes.
915    * @return The new element.
916    */
917   public static final H4 h4(Object...children) {
918      return new H4(children);
919   }
920
921   /**
922    * Creates an empty {@link H5} element.
923    *
924    * @return The new element.
925    */
926   public static final H5 h5() {
927      return new H5();
928   }
929
930   /**
931    * Creates an {@link H5} element with the specified child nodes.
932    *
933    * @param children The child nodes.
934    * @return The new element.
935    */
936   public static final H5 h5(Object...children) {
937      return new H5(children);
938   }
939
940   /**
941    * Creates an empty {@link H6} element.
942    * @return The new element.
943    */
944   public static final H6 h6() {
945      return new H6();
946   }
947
948   /**
949    * Creates an {@link H6} element with the specified child nodes.
950    *
951    * @param children The child nodes.
952    * @return The new element.
953    */
954   public static final H6 h6(Object...children) {
955      return new H6(children);
956   }
957
958   /**
959    * Creates an empty {@link Head} element.
960    *
961    * @return The new element.
962    */
963   public static final Head head() {
964      return new Head();
965   }
966
967   /**
968    * Creates a {@link Head} element with the specified child nodes.
969    *
970    * @param children The child nodes.
971    * @return The new element.
972    */
973   public static final Head head(Object...children) {
974      return new Head(children);
975   }
976
977   /**
978    * Creates an empty {@link Header} element.
979    *
980    * @return The new element.
981    */
982   public static final Header header() {
983      return new Header();
984   }
985
986   /**
987    * Creates a {@link Header} element with the specified child nodes.
988    *
989    * @param children The child nodes.
990    * @return The new element.
991    */
992   public static final Header header(Object...children) {
993      return new Header(children);
994   }
995
996   /**
997    * Creates an empty {@link Hr} element.
998    *
999    * @return The new element.
1000    */
1001   public static final Hr hr() {
1002      return new Hr();
1003   }
1004
1005   /**
1006    * Creates an empty {@link Html} element.
1007    *
1008    * @return The new element.
1009    */
1010   public static final Html html() {
1011      return new Html();
1012   }
1013
1014   /**
1015    * Creates an {@link Html} element with the specified child nodes.
1016    *
1017    * @param children The child nodes.
1018    * @return The new element.
1019    */
1020   public static final Html html(Object...children) {
1021      return new Html(children);
1022   }
1023
1024   /**
1025    * Creates an empty {@link I} element.
1026    *
1027    * @return The new element.
1028    */
1029   public static final I i() {
1030      return new I();
1031   }
1032
1033   /**
1034    * Creates an {@link I} element with the specified child nodes.
1035    *
1036    * @param children The child nodes.
1037    * @return The new element.
1038    */
1039   public static final I i(Object...children) {
1040      return new I(children);
1041   }
1042
1043   /**
1044    * Creates an empty {@link Iframe} element.
1045    *
1046    * @return The new element.
1047    */
1048   public static final Iframe iframe() {
1049      return new Iframe();
1050   }
1051
1052   /**
1053    * Creates an {@link Iframe} element with the specified child nodes.
1054    *
1055    * @param children The child nodes.
1056    * @return The new element.
1057    */
1058   public static final Iframe iframe(Object...children) {
1059      return new Iframe(children);
1060   }
1061
1062   /**
1063    * Creates an empty {@link Img} element.
1064    *
1065    * @return The new element.
1066    */
1067   public static final Img img() {
1068      return new Img();
1069   }
1070
1071   /**
1072    * Creates an {@link Img} element with the specified {@link Img#src(Object)} attribute.
1073    *
1074    * @param src The {@link Img#src(Object)} attribute.
1075    * @return The new element.
1076    */
1077   public static final Img img(Object src) {
1078      return new Img(src);
1079   }
1080
1081   /**
1082    * Creates an empty {@link Input} element.
1083    *
1084    * @return The new element.
1085    */
1086   public static final Input input() {
1087      return new Input();
1088   }
1089
1090   /**
1091    * Creates an {@link Input} element with the specified {@link Input#type(String)} attribute.
1092    *
1093    * @param type The {@link Input#type(String)} attribute.
1094    * @return The new element.
1095    */
1096   public static final Input input(String type) {
1097      return new Input(type);
1098   }
1099
1100   /**
1101    * Creates an empty {@link Ins} element.
1102    *
1103    * @return The new element.
1104    */
1105   public static final Ins ins() {
1106      return new Ins();
1107   }
1108
1109   /**
1110    * Creates an {@link Ins} element with the specified child nodes.
1111    *
1112    * @param children The child nodes.
1113    * @return The new element.
1114    */
1115   public static final Ins ins(Object...children) {
1116      return new Ins(children);
1117   }
1118
1119   /**
1120    * Creates an empty {@link Kbd} element.
1121    *
1122    * @return The new element.
1123    */
1124   public static final Kbd kbd() {
1125      return new Kbd();
1126   }
1127
1128   /**
1129    * Creates a {@link Kbd} element with the specified child nodes.
1130    *
1131    * @param children The child nodes.
1132    * @return The new element.
1133    */
1134   public static final Kbd kbd(Object...children) {
1135      return new Kbd(children);
1136   }
1137
1138   /**
1139    * Creates an empty {@link Keygen} element.
1140    *
1141    * @return The new element.
1142    */
1143   public static final Keygen keygen() {
1144      return new Keygen();
1145   }
1146
1147   /**
1148    * Creates an empty {@link Label} element.
1149    *
1150    * @return The new element.
1151    */
1152   public static final Label label() {
1153      return new Label();
1154   }
1155
1156   /**
1157    * Creates a {@link Label} element with the specified child nodes.
1158    *
1159    * @param children The child nodes.
1160    * @return The new element.
1161    */
1162   public static final Label label(Object...children) {
1163      return new Label(children);
1164   }
1165
1166   /**
1167    * Creates an empty {@link Legend} element.
1168    *
1169    * @return The new element.
1170    */
1171   public static final Legend legend() {
1172      return new Legend();
1173   }
1174
1175   /**
1176    * Creates a {@link Legend} element with the specified child nodes.
1177    *
1178    * @param children The child nodes.
1179    * @return The new element.
1180    */
1181   public static final Legend legend(Object...children) {
1182      return new Legend(children);
1183   }
1184
1185   /**
1186    * Creates an empty {@link Li} element.
1187    *
1188    * @return The new element.
1189    */
1190   public static final Li li() {
1191      return new Li();
1192   }
1193
1194   /**
1195    * Creates an {@link Li} element with the specified child nodes.
1196    *
1197    * @param children The child nodes.
1198    * @return The new element.
1199    */
1200   public static final Li li(Object...children) {
1201      return new Li(children);
1202   }
1203
1204   /**
1205    * Creates an empty {@link Link} element.
1206    *
1207    * @return The new element.
1208    */
1209   public static final Link link() {
1210      return new Link();
1211   }
1212
1213   /**
1214    * Creates a {@link Link} element with the specified {@link Link#href(Object)} attribute.
1215    *
1216    * @param href The {@link Link#href(Object)} attribute.
1217    * @return The new element.
1218    */
1219   public static final Link link(Object href) {
1220      return new Link(href);
1221   }
1222
1223   /**
1224    * Creates an empty {@link Main} element.
1225    *
1226    * @return The new element.
1227    */
1228   public static final Main main() {
1229      return new Main();
1230   }
1231
1232   /**
1233    * Creates a {@link Main} element with the specified child nodes.
1234    *
1235    * @param children The child nodes.
1236    * @return The new element.
1237    */
1238   public static final Main main(Object...children) {
1239      return new Main(children);
1240   }
1241
1242   /**
1243    * Creates an empty {@link Map} element.
1244    *
1245    * @return The new element.
1246    */
1247   public static final Map map() {
1248      return new Map();
1249   }
1250
1251   /**
1252    * Creates a {@link Map} element with the specified child nodes.
1253    *
1254    * @param children The child nodes.
1255    * @return The new element.
1256    */
1257   public static final Map map(Object...children) {
1258      return new Map(children);
1259   }
1260
1261   /**
1262    * Creates an empty {@link Mark} element.
1263    *
1264    * @return The new element.
1265    */
1266   public static final Mark mark() {
1267      return new Mark();
1268   }
1269
1270   /**
1271    * Creates a {@link Mark} element with the specified child nodes.
1272    *
1273    * @param children The child nodes.
1274    * @return The new element.
1275    */
1276   public static final Mark mark(Object...children) {
1277      return new Mark(children);
1278   }
1279
1280   /**
1281    * Creates an empty {@link Meta} element.
1282    *
1283    * @return The new element.
1284    */
1285   public static final Meta meta() {
1286      return new Meta();
1287   }
1288
1289   /**
1290    * Creates an empty {@link Meter} element.
1291    *
1292    * @return The new element.
1293    */
1294   public static final Meter meter() {
1295      return new Meter();
1296   }
1297
1298   /**
1299    * Creates a {@link Meter} element with the specified child nodes.
1300    *
1301    * @param children The child nodes.
1302    * @return The new element.
1303    */
1304   public static final Meter meter(Object...children) {
1305      return new Meter(children);
1306   }
1307
1308   /**
1309    * Creates an empty {@link Nav} element.
1310    *
1311    * @return The new element.
1312    */
1313   public static final Nav nav() {
1314      return new Nav();
1315   }
1316
1317   /**
1318    * Creates a {@link Nav} element with the specified child nodes.
1319    *
1320    * @param children The child nodes.
1321    * @return The new element.
1322    */
1323   public static final Nav nav(Object...children) {
1324      return new Nav(children);
1325   }
1326
1327   /**
1328    * Creates an empty {@link Noscript} element.
1329    *
1330    * @return The new element.
1331    */
1332   public static final Noscript noscript() {
1333      return new Noscript();
1334   }
1335
1336   /**
1337    * Creates a {@link Noscript} element with the specified child nodes.
1338    *
1339    * @param children The child nodes.
1340    * @return The new element.
1341    */
1342   public static final Noscript noscript(Object...children) {
1343      return new Noscript(children);
1344   }
1345
1346   /**
1347    * Creates an empty {@link Object_} element.
1348    *
1349    * @return The new element.
1350    */
1351   public static final Object_ object() {
1352      return new Object_();
1353   }
1354
1355   /**
1356    * Creates an {@link Object_} element with the specified child nodes.
1357    *
1358    * @param children The child nodes.
1359    * @return The new element.
1360    */
1361   public static final Object_ object(Object...children) {
1362      return new Object_(children);
1363   }
1364
1365   /**
1366    * Creates an empty {@link Ol} element.
1367    *
1368    * @return The new element.
1369    */
1370   public static final Ol ol() {
1371      return new Ol();
1372   }
1373
1374   /**
1375    * Creates an {@link Ol} element with the specified child nodes.
1376    *
1377    * @param children The child nodes.
1378    * @return The new element.
1379    */
1380   public static final Ol ol(Object...children) {
1381      return new Ol(children);
1382   }
1383
1384   /**
1385    * Creates an empty {@link Optgroup} element.
1386    *
1387    * @return The new element.
1388    */
1389   public static final Optgroup optgroup() {
1390      return new Optgroup();
1391   }
1392
1393   /**
1394    * Creates an {@link Optgroup} element with the specified child nodes.
1395    *
1396    * @param children The child nodes.
1397    * @return The new element.
1398    */
1399   public static final Optgroup optgroup(Object...children) {
1400      return new Optgroup(children);
1401   }
1402
1403   /**
1404    * Creates an empty {@link Option} element.
1405    *
1406    * @return The new element.
1407    */
1408   public static final Option option() {
1409      return new Option();
1410   }
1411
1412   /**
1413    * Creates an {@link Option} element with the specified {@link Option#text(Object)} attribute.
1414    *
1415    * @param text The {@link Option#text(Object)} attribute.
1416    * @return The new element.
1417    */
1418   public static final Option option(Object text) {
1419      return new Option(text);
1420   }
1421
1422   /**
1423    * Creates an {@link Option} element with the specified {@link Option#value(Object)} attribute and
1424    * {@link Option#text(Object)} node.
1425    *
1426    * @param value The {@link Option#value(Object)} attribute.
1427    * @param text The {@link Option#text(Object)} node.
1428    * @return The new element.
1429    */
1430   public static final Option option(Object value, Object text) {
1431      return new Option(value, text);
1432   }
1433
1434   /**
1435    * Creates an empty {@link Output} element.
1436    *
1437    * @return The new element.
1438    */
1439   public static final Output output() {
1440      return new Output();
1441   }
1442
1443   /**
1444    * Creates an {@link Output} element with the specified {@link Output#name(String)} attribute.
1445    *
1446    * @param name The {@link Output#name(String)} attribute.
1447    * @return The new element.
1448    */
1449   public static final Output output(String name) {
1450      return new Output(name);
1451   }
1452
1453   /**
1454    * Creates an empty {@link P} element.
1455    *
1456    * @return The new element.
1457    */
1458   public static final P p() {
1459      return new P();
1460   }
1461
1462   /**
1463    * Creates a {@link P} element with the specified child nodes.
1464    *
1465    * @param children The child nodes.
1466    * @return The new element.
1467    */
1468   public static final P p(Object...children) {
1469      return new P(children);
1470   }
1471
1472   /**
1473    * Creates an empty {@link Param} element.
1474    *
1475    * @return The new element.
1476    */
1477   public static final Param param() {
1478      return new Param();
1479   }
1480
1481   /**
1482    * Creates a {@link Param} element with the specified {@link Param#name(String)} and {@link Param#value(Object)}
1483    * attributes.
1484    *
1485    * @param name The {@link Param#name(String)} attribute.
1486    * @param value The {@link Param#value(Object)} attribute.
1487    * @return The new element.
1488    */
1489   public static final Param param(String name, Object value) {
1490      return new Param(name, value);
1491   }
1492
1493   /**
1494    * Creates an empty {@link Pre} element.
1495    *
1496    * @return The new element.
1497    */
1498   public static final Pre pre() {
1499      return new Pre();
1500   }
1501
1502   /**
1503    * Creates a {@link Pre} element with the specified child nodes.
1504    *
1505    * @param children The child nodes.
1506    * @return The new element.
1507    */
1508   public static final Pre pre(Object...children) {
1509      return new Pre(children);
1510   }
1511
1512   /**
1513    * Creates an empty {@link Progress} element.
1514    *
1515    * @return The new element.
1516    */
1517   public static final Progress progress() {
1518      return new Progress();
1519   }
1520
1521   /**
1522    * Creates a {@link Progress} element with the specified child nodes.
1523    *
1524    * @param children The child nodes.
1525    * @return The new element.
1526    */
1527   public static final Progress progress(Object...children) {
1528      return new Progress(children);
1529   }
1530
1531   /**
1532    * Creates an empty {@link Q} element.
1533    *
1534    * @return The new element.
1535    */
1536   public static final Q q() {
1537      return new Q();
1538   }
1539
1540   /**
1541    * Creates a {@link Q} element with the specified child nodes.
1542    *
1543    * @param children The child nodes.
1544    * @return The new element.
1545    */
1546   public static final Q q(Object...children) {
1547      return new Q(children);
1548   }
1549
1550   /**
1551    * Creates an empty {@link Rb} element.
1552    *
1553    * @return The new element.
1554    */
1555   public static final Rb rb() {
1556      return new Rb();
1557   }
1558
1559   /**
1560    * Creates a {@link Rb} element with the specified {@link Rb#children(Object[])} nodes.
1561    *
1562    * @param children The {@link Rb#children(Object[])} nodes.
1563    * @return The new element.
1564    */
1565   public static final Rb rb(Object...children) {
1566      return new Rb(children);
1567   }
1568
1569   /**
1570    * Creates an empty {@link Rp} element.
1571    *
1572    * @return The new element.
1573    */
1574   public static final Rp rp() {
1575      return new Rp();
1576   }
1577
1578   /**
1579    * Creates a {@link Rp} element with the specified {@link Rp#children(Object[])} nodes.
1580    *
1581    * @param children The {@link Rp#children(Object[])} nodes.
1582    * @return The new element.
1583    */
1584   public static final Rp rp(Object...children) {
1585      return new Rp(children);
1586   }
1587
1588   /**
1589    * Creates an empty {@link Rt} element.
1590    *
1591    * @return The new element.
1592    */
1593   public static final Rt rt() {
1594      return new Rt();
1595   }
1596
1597   /**
1598    * Creates a {@link Rt} element with the specified {@link Rt#children(Object[])} nodes.
1599    *
1600    * @param children The {@link Rt#children(Object[])} nodes.
1601    * @return The new element.
1602    */
1603   public static final Rt rt(Object...children) {
1604      return new Rt(children);
1605   }
1606
1607   /**
1608    * Creates an empty {@link Rtc} element.
1609    *
1610    * @return The new element.
1611    */
1612   public static final Rtc rtc() {
1613      return new Rtc();
1614   }
1615
1616   /**
1617    * Creates an {@link Rtc} element with the specified child nodes.
1618    *
1619    * @param children The child nodes.
1620    * @return The new element.
1621    */
1622   public static final Rtc rtc(Object...children) {
1623      return new Rtc(children);
1624   }
1625
1626   /**
1627    * Creates an empty {@link Ruby} element.
1628    *
1629    * @return The new element.
1630    */
1631   public static final Ruby ruby() {
1632      return new Ruby();
1633   }
1634
1635   /**
1636    * Creates a {@link Ruby} element with the specified child nodes.
1637    *
1638    * @param children The child nodes.
1639    * @return The new element.
1640    */
1641   public static final Ruby ruby(Object...children) {
1642      return new Ruby(children);
1643   }
1644
1645   /**
1646    * Creates an empty {@link S} element.
1647    *
1648    * @return The new element.
1649    */
1650   public static final S s() {
1651      return new S();
1652   }
1653
1654   /**
1655    * Creates an {@link S} element with the specified child nodes.
1656    *
1657    * @param children The child nodes.
1658    * @return The new element.
1659    */
1660   public static final S s(Object...children) {
1661      return new S(children);
1662   }
1663
1664   /**
1665    * Creates an empty {@link Samp} element.
1666    *
1667    * @return The new element.
1668    */
1669   public static final Samp samp() {
1670      return new Samp();
1671   }
1672
1673   /**
1674    * Creates a {@link Samp} element with the specified child nodes.
1675    *
1676    * @param children The child nodes.
1677    * @return The new element.
1678    */
1679   public static final Samp samp(Object...children) {
1680      return new Samp(children);
1681   }
1682
1683   /**
1684    * Creates an empty {@link Script} element.
1685    *
1686    * @return The new element.
1687    */
1688   public static final Script script() {
1689      return new Script();
1690   }
1691
1692   /**
1693    * Creates a {@link Script} element with the specified {@link Script#type(String)} attribute and
1694    * {@link Script#text(Object)} node.
1695    *
1696    * @param type The {@link Script#type(String)} attribute.
1697    * @param text The child text node.
1698    * @return The new element.
1699    */
1700   public static final Script script(String type, String...text) {
1701      return new Script(type, text);
1702   }
1703
1704   /**
1705    * Creates an empty {@link Section} element.
1706    *
1707    * @return The new element.
1708    */
1709   public static final Section section() {
1710      return new Section();
1711   }
1712
1713   /**
1714    * Creates a {@link Section} element with the specified child nodes.
1715    *
1716    * @param children The child nodes.
1717    * @return The new element.
1718    */
1719   public static final Section section(Object...children) {
1720      return new Section(children);
1721   }
1722
1723   /**
1724    * Creates an empty {@link Select} element.
1725    *
1726    * @return The new element.
1727    */
1728   public static final Select select() {
1729      return new Select();
1730   }
1731
1732   /**
1733    * Creates a {@link Select} element with the specified {@link Select#name(String)} attribute and child nodes.
1734    *
1735    * @param name The {@link Select#name(String)} attribute.
1736    * @param children The child nodes.
1737    * @return The new element.
1738    */
1739   public static final Select select(String name, Object...children) {
1740      return new Select(name, children);
1741   }
1742
1743   /**
1744    * Creates an empty {@link Small} element.
1745    *
1746    * @return The new element.
1747    */
1748   public static final Small small() {
1749      return new Small();
1750   }
1751
1752   /**
1753    * Creates a {@link Small} element with the specified child nodes.
1754    *
1755    * @param children The child nodes.
1756    * @return The new element.
1757    */
1758   public static final Small small(Object...children) {
1759      return new Small(children);
1760   }
1761
1762   /**
1763    * Creates an empty {@link Source} element.
1764    *
1765    * @return The new element.
1766    */
1767   public static final Source source() {
1768      return new Source();
1769   }
1770
1771   /**
1772    * Creates a {@link Source} element with the specified {@link Source#src(Object)} and {@link Source#type(String)}
1773    * attributes.
1774    *
1775    * @param src The {@link Source#src(Object)} attribute.
1776    * @param type The {@link Source#type(String)} attribute.
1777    * @return The new element.
1778    */
1779   public static final Source source(Object src, String type) {
1780      return new Source(src, type);
1781   }
1782
1783   /**
1784    * Creates an empty {@link Span} element.
1785    *
1786    * @return The new element.
1787    */
1788   public static final Span span() {
1789      return new Span();
1790   }
1791
1792   /**
1793    * Creates a {@link Span} element with the specified child nodes.
1794    *
1795    * @param children The child nodes.
1796    * @return The new element.
1797    */
1798   public static final Span span(Object...children) {
1799      return new Span(children);
1800   }
1801
1802   /**
1803    * Creates an empty {@link Strong} element.
1804    *
1805    * @return The new element.
1806    */
1807   public static final Strong strong() {
1808      return new Strong();
1809   }
1810
1811   /**
1812    * Creates a {@link Strong} element with the specified child nodes.
1813    *
1814    * @param children The child nodes.
1815    * @return The new element.
1816    */
1817   public static final Strong strong(Object...children) {
1818      return new Strong(children);
1819   }
1820
1821   /**
1822    * Creates an empty {@link Style} element.
1823    *
1824    * @return The new element.
1825    */
1826   public static final Style style() {
1827      return new Style();
1828   }
1829
1830   /**
1831    * Creates a {@link Style} element with the specified {@link Style#text(Object)} node.
1832    *
1833    * @param text The {@link Style#text(Object)} node.
1834    * @return The new element.
1835    */
1836   public static final Style style(Object text) {
1837      return new Style(text);
1838   }
1839
1840   /**
1841    * Creates a {@link Style} element with the specified inner text.
1842    *
1843    * @param text
1844    *    The contents of the style element.
1845    *    <br>Values will be concatenated with newlines.
1846    * @return The new element.
1847    */
1848   public static final Style style(String...text) {
1849      return new Style(text);
1850   }
1851
1852   /**
1853    * Creates an empty {@link Sub} element.
1854    *
1855    * @return The new element.
1856    */
1857   public static final Sub sub() {
1858      return new Sub();
1859   }
1860
1861   /**
1862    * Creates a {@link Sub} element with the specified child nodes.
1863    *
1864    * @param children The child nodes.
1865    * @return The new element.
1866    */
1867   public static final Sub sub(Object...children) {
1868      return new Sub(children);
1869   }
1870
1871   /**
1872    * Creates an empty {@link Sup} element.
1873    *
1874    * @return The new element.
1875    */
1876   public static final Sup sup() {
1877      return new Sup();
1878   }
1879
1880   /**
1881    * Creates a {@link Sup} element with the specified child nodes.
1882    *
1883    * @param children The child nodes.
1884    * @return The new element.
1885    */
1886   public static final Sup sup(Object...children) {
1887      return new Sup(children);
1888   }
1889
1890   /**
1891    * Creates an empty {@link Table} element.
1892    *
1893    * @return The new element.
1894    */
1895   public static final Table table() {
1896      return new Table();
1897   }
1898
1899   /**
1900    * Creates a {@link Table} element with the specified child nodes.
1901    *
1902    * @param children The child nodes.
1903    * @return The new element.
1904    */
1905   public static final Table table(Object...children) {
1906      return new Table(children);
1907   }
1908
1909   /**
1910    * Creates an empty {@link Tbody} element.
1911    *
1912    * @return The new element.
1913    */
1914   public static final Tbody tbody() {
1915      return new Tbody();
1916   }
1917
1918   /**
1919    * Creates a {@link Tbody} element with the specified child nodes.
1920    *
1921    * @param children The child nodes.
1922    * @return The new element.
1923    */
1924   public static final Tbody tbody(Object...children) {
1925      return new Tbody(children);
1926   }
1927
1928   /**
1929    * Creates an empty {@link Td} element.
1930    *
1931    * @return The new element.
1932    */
1933   public static final Td td() {
1934      return new Td();
1935   }
1936
1937   /**
1938    * Creates a {@link Td} element with the specified child nodes.
1939    *
1940    * @param children The child nodes.
1941    * @return The new element.
1942    */
1943   public static final Td td(Object...children) {
1944      return new Td(children);
1945   }
1946
1947   /**
1948    * Creates an empty {@link Template} element.
1949    *
1950    * @return The new element.
1951    */
1952   public static final Template template() {
1953      return new Template();
1954   }
1955
1956   /**
1957    * Creates a {@link Template} element with the specified {@link Template#id(String)} attribute and child nodes.
1958    *
1959    * @param id The {@link Template#id(String)} attribute.
1960    * @param children The child nodes.
1961    * @return The new element.
1962    */
1963   public static final Template template(String id, Object...children) {
1964      return new Template(id, children);
1965   }
1966
1967   /**
1968    * Creates an empty {@link Textarea} element.
1969    *
1970    * @return The new element.
1971    */
1972   public static final Textarea textarea() {
1973      return new Textarea();
1974   }
1975
1976   /**
1977    * Creates a {@link Textarea} element with the specified {@link Textarea#name(String)} attribute and
1978    * {@link Textarea#text(Object)} node.
1979    *
1980    * @param name The {@link Textarea#name(String)} attribute.
1981    * @param text The {@link Textarea#text(Object)} node.
1982    * @return The new element.
1983    */
1984   public static final Textarea textarea(String name, String text) {
1985      return new Textarea(name, text);
1986   }
1987
1988   /**
1989    * Creates an empty {@link Tfoot} element.
1990    *
1991    * @return The new element.
1992    */
1993   public static final Tfoot tfoot() {
1994      return new Tfoot();
1995   }
1996
1997   /**
1998    * Creates a {@link Tfoot} element with the specified child nodes.
1999    *
2000    * @param children The child nodes.
2001    * @return The new element.
2002    */
2003   public static final Tfoot tfoot(Object...children) {
2004      return new Tfoot(children);
2005   }
2006
2007   /**
2008    * Creates an empty {@link Th} element.
2009    *
2010    * @return The new element.
2011    */
2012   public static final Th th() {
2013      return new Th();
2014   }
2015
2016   /**
2017    * Creates a {@link Th} element with the specified child nodes.
2018    *
2019    * @param children The child nodes.
2020    * @return The new element.
2021    */
2022   public static final Th th(Object...children) {
2023      return new Th(children);
2024   }
2025
2026   /**
2027    * Creates an empty {@link Thead} element.
2028    *
2029    * @return The new element.
2030    */
2031   public static final Thead thead() {
2032      return new Thead();
2033   }
2034
2035   /**
2036    * Creates a {@link Thead} element with the specified child nodes.
2037    *
2038    * @param children The child nodes.
2039    * @return The new element.
2040    */
2041   public static final Thead thead(Object...children) {
2042      return new Thead(children);
2043   }
2044
2045   /**
2046    * Creates an empty {@link Time} element.
2047    *
2048    * @return The new element.
2049    */
2050   public static final Time time() {
2051      return new Time();
2052   }
2053
2054   /**
2055    * Creates a {@link Time} element with the specified {@link Time#children(Object[])} nodes.
2056    *
2057    * @param children The {@link Time#children(Object[])} nodes.
2058    * @return The new element.
2059    */
2060   public static final Time time(Object...children) {
2061      return new Time(children);
2062   }
2063
2064   /**
2065    * Creates an empty {@link Title} element.
2066    *
2067    * @return The new element.
2068    */
2069   public static final Title title() {
2070      return new Title();
2071   }
2072
2073   /**
2074    * Creates a {@link Title} element with the specified {@link Title#text(Object)} node.
2075    *
2076    * @param text The {@link Title#text(Object)} node.
2077    * @return The new element.
2078    */
2079   public static final Title title(String text) {
2080      return new Title(text);
2081   }
2082
2083   /**
2084    * Creates an empty {@link Tr} element.
2085    *
2086    * @return The new element.
2087    */
2088   public static final Tr tr() {
2089      return new Tr();
2090   }
2091
2092   /**
2093    * Creates a {@link Tr} element with the specified child nodes.
2094    *
2095    * @param children The child nodes.
2096    * @return The new element.
2097    */
2098   public static final Tr tr(Object...children) {
2099      return new Tr(children);
2100   }
2101
2102   /**
2103    * Creates an empty {@link Track} element.
2104    *
2105    * @return The new element.
2106    */
2107   public static final Track track() {
2108      return new Track();
2109   }
2110
2111   /**
2112    * Creates a {@link Track} element with the specified {@link Track#src(Object)} and {@link Track#kind(String)}
2113    * attributes.
2114    *
2115    * @param src The {@link Track#src(Object)} attribute.
2116    * @param kind The {@link Track#kind(String)} attribute.
2117    * @return The new element.
2118    */
2119   public static final Track track(Object src, String kind) {
2120      return new Track(src, kind);
2121   }
2122
2123   /**
2124    * Creates an empty {@link U} element.
2125    *
2126    * @return The new element.
2127    */
2128   public static final U u() {
2129      return new U();
2130   }
2131
2132   /**
2133    * Creates a {@link U} element with the specified child nodes.
2134    *
2135    * @param children The child nodes.
2136    * @return The new element.
2137    */
2138   public static final U u(Object...children) {
2139      return new U(children);
2140   }
2141
2142   /**
2143    * Creates an empty {@link Ul} element.
2144    *
2145    * @return The new element.
2146    */
2147   public static final Ul ul() {
2148      return new Ul();
2149   }
2150
2151   /**
2152    * Creates a {@link Ul} element with the specified child nodes.
2153    *
2154    * @param children The child nodes.
2155    * @return The new element.
2156    */
2157   public static final Ul ul(Object...children) {
2158      return new Ul(children);
2159   }
2160
2161   /**
2162    * Creates an empty {@link Var} element.
2163    *
2164    * @return The new element.
2165    */
2166   public static final Var var() {
2167      return new Var();
2168   }
2169
2170   /**
2171    * Creates a {@link Var} element with the specified child nodes.
2172    *
2173    * @param children The child nodes.
2174    * @return The new element.
2175    */
2176   public static final Var var(Object...children) {
2177      return new Var(children);
2178   }
2179
2180   /**
2181    * Creates an empty {@link Video} element.
2182    *
2183    * @return The new element.
2184    */
2185   public static final Video video() {
2186      return new Video();
2187   }
2188
2189   /**
2190    * Creates a {@link Video} element with the specified {@link Video#src(Object)} attribute.
2191    *
2192    * @param src The {@link Video#src(Object)} attribute.
2193    * @return The new element.
2194    */
2195   public static final Video video(Object src) {
2196      return new Video(src);
2197   }
2198
2199   /**
2200    * Creates an empty {@link Wbr} element.
2201    *
2202    * @return The new element.
2203    */
2204   public static final Wbr wbr() {
2205      return new Wbr();
2206   }
2207}