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