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