This is an automated email from the ASF dual-hosted git repository.

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/master by this push:
     new b6cc654  JUNEAU-192
b6cc654 is described below

commit b6cc654aed3988cc08e5e32ee59cc89e05119d56
Author: JamesBognar <[email protected]>
AuthorDate: Fri Mar 6 19:52:09 2020 -0500

    JUNEAU-192
    
    HtmlElement beans should have convenience constructors or creators.
---
 .../apache/juneau/dto/html5/Html5ComboTest.java    |   8 +-
 .../main/java/org/apache/juneau/dto/html5/A.java   |  16 ++
 .../java/org/apache/juneau/dto/html5/Abbr.java     |  16 ++
 .../java/org/apache/juneau/dto/html5/Address.java  |  14 ++
 .../java/org/apache/juneau/dto/html5/Area.java     |  17 ++
 .../java/org/apache/juneau/dto/html5/Article.java  |  14 ++
 .../java/org/apache/juneau/dto/html5/Aside.java    |  14 ++
 .../java/org/apache/juneau/dto/html5/Audio.java    |  14 ++
 .../main/java/org/apache/juneau/dto/html5/B.java   |  14 ++
 .../java/org/apache/juneau/dto/html5/Base.java     |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Bdi.java |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Bdo.java |  15 ++
 .../org/apache/juneau/dto/html5/Blockquote.java    |  14 ++
 .../java/org/apache/juneau/dto/html5/Body.java     |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Br.java  |   5 +
 .../java/org/apache/juneau/dto/html5/Button.java   |  25 +++
 .../java/org/apache/juneau/dto/html5/Canvas.java   |  16 ++
 .../java/org/apache/juneau/dto/html5/Caption.java  |  14 ++
 .../java/org/apache/juneau/dto/html5/Cite.java     |  14 ++
 .../java/org/apache/juneau/dto/html5/Code.java     |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Col.java |  14 ++
 .../java/org/apache/juneau/dto/html5/Colgroup.java |  14 ++
 .../java/org/apache/juneau/dto/html5/Data.java     |  15 ++
 .../java/org/apache/juneau/dto/html5/Datalist.java |  15 ++
 .../main/java/org/apache/juneau/dto/html5/Dd.java  |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Del.java |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Dfn.java |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Div.java |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Dl.java  |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Dt.java  |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Em.java  |  14 ++
 .../java/org/apache/juneau/dto/html5/Embed.java    |  14 ++
 .../java/org/apache/juneau/dto/html5/Fieldset.java |  14 ++
 .../org/apache/juneau/dto/html5/Figcaption.java    |  14 ++
 .../java/org/apache/juneau/dto/html5/Figure.java   |  14 ++
 .../java/org/apache/juneau/dto/html5/Footer.java   |  14 ++
 .../java/org/apache/juneau/dto/html5/Form.java     |  24 +++
 .../main/java/org/apache/juneau/dto/html5/H1.java  |  14 ++
 .../main/java/org/apache/juneau/dto/html5/H2.java  |  14 ++
 .../main/java/org/apache/juneau/dto/html5/H3.java  |  14 ++
 .../main/java/org/apache/juneau/dto/html5/H4.java  |  14 ++
 .../main/java/org/apache/juneau/dto/html5/H5.java  |  14 ++
 .../main/java/org/apache/juneau/dto/html5/H6.java  |  14 ++
 .../java/org/apache/juneau/dto/html5/Head.java     |  14 ++
 .../java/org/apache/juneau/dto/html5/Header.java   |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Hr.java  |   5 +
 .../java/org/apache/juneau/dto/html5/Html.java     |  14 ++
 .../juneau/dto/html5/HtmlBeanDictionary.java       |   2 +-
 .../org/apache/juneau/dto/html5/HtmlBuilder.java   | 226 ++++++++++-----------
 .../main/java/org/apache/juneau/dto/html5/I.java   |  14 ++
 .../java/org/apache/juneau/dto/html5/Iframe.java   |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Img.java |  14 ++
 .../java/org/apache/juneau/dto/html5/Input.java    |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Ins.java |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Kbd.java |  14 ++
 .../java/org/apache/juneau/dto/html5/Keygen.java   |   5 +
 .../java/org/apache/juneau/dto/html5/Label.java    |  14 ++
 .../java/org/apache/juneau/dto/html5/Legend.java   |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Li.java  |  14 ++
 .../java/org/apache/juneau/dto/html5/Link.java     |  14 ++
 .../java/org/apache/juneau/dto/html5/Main.java     |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Map.java |  14 ++
 .../java/org/apache/juneau/dto/html5/Mark.java     |  14 ++
 .../java/org/apache/juneau/dto/html5/Meta.java     |   5 +
 .../java/org/apache/juneau/dto/html5/Meter.java    |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Nav.java |  14 ++
 .../java/org/apache/juneau/dto/html5/Noscript.java |  14 ++
 .../dto/html5/{Object2.java => Object_.java}       |  42 ++--
 .../main/java/org/apache/juneau/dto/html5/Ol.java  |  14 ++
 .../java/org/apache/juneau/dto/html5/Optgroup.java |  14 ++
 .../java/org/apache/juneau/dto/html5/Option.java   |  25 +++
 .../java/org/apache/juneau/dto/html5/Output.java   |  14 ++
 .../main/java/org/apache/juneau/dto/html5/P.java   |  14 ++
 .../java/org/apache/juneau/dto/html5/Param.java    |  16 ++
 .../main/java/org/apache/juneau/dto/html5/Pre.java |  14 ++
 .../java/org/apache/juneau/dto/html5/Progress.java |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Q.java   |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Rb.java  |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Rp.java  |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Rt.java  |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Rtc.java |  14 ++
 .../java/org/apache/juneau/dto/html5/Ruby.java     |  14 ++
 .../main/java/org/apache/juneau/dto/html5/S.java   |  14 ++
 .../java/org/apache/juneau/dto/html5/Samp.java     |  14 ++
 .../java/org/apache/juneau/dto/html5/Script.java   |  18 ++
 .../java/org/apache/juneau/dto/html5/Section.java  |  14 ++
 .../java/org/apache/juneau/dto/html5/Select.java   |  15 ++
 .../java/org/apache/juneau/dto/html5/Small.java    |  14 ++
 .../java/org/apache/juneau/dto/html5/Source.java   |  16 ++
 .../java/org/apache/juneau/dto/html5/Span.java     |  14 ++
 .../java/org/apache/juneau/dto/html5/Strong.java   |  14 ++
 .../java/org/apache/juneau/dto/html5/Style.java    |  27 +++
 .../main/java/org/apache/juneau/dto/html5/Sub.java |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Sup.java |  14 ++
 .../java/org/apache/juneau/dto/html5/Table.java    |  14 ++
 .../java/org/apache/juneau/dto/html5/Tbody.java    |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Td.java  |  14 ++
 .../java/org/apache/juneau/dto/html5/Template.java |  15 ++
 .../java/org/apache/juneau/dto/html5/Textarea.java |  16 ++
 .../java/org/apache/juneau/dto/html5/Tfoot.java    |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Th.java  |  14 ++
 .../java/org/apache/juneau/dto/html5/Thead.java    |  14 ++
 .../java/org/apache/juneau/dto/html5/Time.java     |  14 ++
 .../java/org/apache/juneau/dto/html5/Title.java    |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Tr.java  |  14 ++
 .../java/org/apache/juneau/dto/html5/Track.java    |  16 ++
 .../main/java/org/apache/juneau/dto/html5/U.java   |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Ul.java  |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Var.java |  14 ++
 .../java/org/apache/juneau/dto/html5/Video.java    |  14 ++
 .../main/java/org/apache/juneau/dto/html5/Wbr.java |   5 +
 111 files changed, 1669 insertions(+), 133 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/dto/html5/Html5ComboTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/dto/html5/Html5ComboTest.java
index 9027ad9..02ccb36 100755
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/dto/html5/Html5ComboTest.java
+++ 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/dto/html5/Html5ComboTest.java
@@ -1927,9 +1927,9 @@ public class Html5ComboTest extends ComboRoundTripTest {
                                }
                        },
                        {       /* 52 */
-                               new ComboInput<Object2>(
+                               new ComboInput<Object_>(
                                        "Object/Param",
-                                       Object2.class,
+                                       Object_.class,
                                        
object().width(1).height(2).data("foo.swf").child(param("autoplay",true)),
                                        /* Json */              
"{_type:'object',a:{width:1,height:2,data:'foo.swf'},c:[{_type:'param',a:{name:'autoplay',value:true}}]}",
                                        /* JsonT */             
"{t:'object',a:{width:1,height:2,data:'foo.swf'},c:[{t:'param',a:{name:'autoplay',value:true}}]}",
@@ -1955,8 +1955,8 @@ public class Html5ComboTest extends ComboRoundTripTest {
                                )
                                {
                                        @Override
-                                       public void verify(Object2 o) {
-                                               assertInstanceOf(Object2.class, 
o);
+                                       public void verify(Object_ o) {
+                                               assertInstanceOf(Object_.class, 
o);
                                                assertInstanceOf(Param.class, 
o.getChild(0));
                                        }
                                }
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/A.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/A.java
index 24d7606..3b67e06 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/A.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/A.java
@@ -30,6 +30,22 @@ import org.apache.juneau.annotation.*;
 public class A extends HtmlElementMixed {
 
        /**
+        * Creates an empty {@link A} element.
+        */
+       public A() {}
+
+       /**
+        * Creates an {@link A} element with the specified {@link 
A#href(Object)} attribute and {@link A#children(Object[])}
+        * nodes.
+        *
+        * @param href The {@link A#href(Object)} attribute.
+        * @param children The {@link A#children(Object[])} nodes.
+        */
+       public A(Object href, Object[] children) {
+               href(href).children(children);
+       }
+
+       /**
         * {@doc HTML5.links#attr-hyperlink-download download} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Abbr.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Abbr.java
index 9829861..a5a927b 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Abbr.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Abbr.java
@@ -25,6 +25,22 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="abbr")
 public class Abbr extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Abbr} element.
+        */
+       public Abbr() {}
+
+       /**
+        * Creates an {@link Abbr} element with the specified {@link 
Abbr#title(String)} attribute and
+        * {@link Abbr#children(Object[])} nodes.
+        *
+        * @param title The {@link Abbr#title(String)} attribute.
+        * @param children The {@link Abbr#children(Object[])} nodes.
+        */
+       public Abbr(String title, Object...children) {
+               title(title).children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Address.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Address.java
index 801af6e..b93aed8 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Address.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Address.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="address")
 public class Address extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Address} element.
+        */
+       public Address() {}
+
+       /**
+        * Creates an {@link Address} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Address(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Area.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Area.java
index 6012b5b..468f354 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Area.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Area.java
@@ -30,6 +30,23 @@ import org.apache.juneau.annotation.*;
 public class Area extends HtmlElementVoid {
 
        /**
+        * Creates an empty {@link Area} element.
+        */
+       public Area() {}
+
+       /**
+        * Creates an {@link Area} element with the specified {@link 
Area#shape(String)}, {@link Area#coords(String)},
+        * and {@link Area#href(Object)} attributes.
+        *
+        * @param shape The {@link Area#shape(String)} attribute.
+        * @param coords The {@link Area#coords(String)} attribute.
+        * @param href The {@link Area#href(Object)} attribute.
+        */
+       public Area(String shape, String coords, Object href) {
+               shape(shape).coords(coords).href(href);
+       }
+
+       /**
         * {@doc HTML5.embedded-content-0#attr-area-alt alt} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Article.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Article.java
index 8be1ef4..a0414ae 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Article.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Article.java
@@ -26,6 +26,20 @@ import org.apache.juneau.annotation.*;
 public class Article extends HtmlElementMixed {
 
        /**
+        * Creates an empty {@link Article} element.
+        */
+       public Article() {}
+
+       /**
+        * Creates an {@link Article} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Article(Object...children) {
+               children(children);
+       }
+
+       /**
         * Adds a header node to this element.
         *
         * @param children The children inside the header node.
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Aside.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Aside.java
index af2ec54..70c88b3 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Aside.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Aside.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="aside")
 public class Aside extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Aside} element.
+        */
+       public Aside() {}
+
+       /**
+        * Creates an {@link Aside} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Aside(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Audio.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Audio.java
index f7b83dd..b271b2f 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Audio.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Audio.java
@@ -30,6 +30,20 @@ import org.apache.juneau.annotation.*;
 public class Audio extends HtmlElementContainer {
 
        /**
+        * Creates an empty {@link Audio} element.
+        */
+       public Audio() {}
+
+       /**
+        * Creates an {@link Audio} element with the specified {@link 
Audio#src(Object)} attribute.
+        *
+        * @param src The {@link Audio#src(Object)} attribute.
+        */
+       public Audio(String src) {
+               src(src);
+       }
+
+       /**
         * {@doc HTML5.embedded-content-0#attr-media-autoplay autoplay}
         * attribute.
         *
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/B.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/B.java
index 60d9d54..f24fbd9 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/B.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/B.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="b")
 public class B extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link B} element.
+        */
+       public B() {}
+
+       /**
+        * Creates a {@link B} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public B(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Base.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Base.java
index 896e185..0ef2f7a 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Base.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Base.java
@@ -30,6 +30,20 @@ import org.apache.juneau.annotation.*;
 public class Base extends HtmlElementVoid {
 
        /**
+        * Creates an empty {@link Base} element.
+        */
+       public Base() {}
+
+       /**
+        * Creates a {@link Base} element with the specified {@link 
Base#href(Object)} attribute.
+        *
+        * @param href The {@link Base#href(Object)} attribute.
+        */
+       public Base(Object href) {
+               href(href);
+       }
+
+       /**
         * {@doc HTML5.document-metadata#attr-base-href href} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Bdi.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Bdi.java
index feac264..abe9bb0 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Bdi.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Bdi.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="bdi")
 public class Bdi extends HtmlElementText {
 
+       /**
+        * Creates an empty {@link Bdi} element.
+        */
+       public Bdi() {}
+
+       /**
+        * Creates a {@link Bdi} element with the specified {@link 
Bdi#text(Object)} node.
+        *
+        * @param text The {@link Bdi#text(Object)} node.
+        */
+       public Bdi(Object text) {
+               text(text);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Bdo.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Bdo.java
index 3848544..cc17f28 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Bdo.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Bdo.java
@@ -25,6 +25,21 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="bdo")
 public class Bdo extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Bdo} element.
+        */
+       public Bdo() {}
+
+       /**
+        * Creates a {@link Bdo} element with the specified {@link 
Bdo#dir(String)} attribute and child nodes.
+        *
+        * @param dir The {@link Bdo#dir(String)} attribute.
+        * @param children The child nodes.
+        */
+       public Bdo(String dir, Object...children) {
+               dir(dir).children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Blockquote.java
 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Blockquote.java
index ee68431..86dbf8b 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Blockquote.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Blockquote.java
@@ -26,6 +26,20 @@ import org.apache.juneau.annotation.*;
 public class Blockquote extends HtmlElementMixed {
 
        /**
+        * Creates an empty {@link Blockquote} element.
+        */
+       public Blockquote() {}
+
+       /**
+        * Creates a {@link Blockquote} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Blockquote(Object...children) {
+               children(children);
+       }
+
+       /**
         * {@doc HTML5.grouping-content#attr-blockquote-cite cite}
         * attribute.
         *
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Body.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Body.java
index 0be7795..aa2ec19 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Body.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Body.java
@@ -26,6 +26,20 @@ import org.apache.juneau.annotation.*;
 public class Body extends HtmlElementMixed {
 
        /**
+        * Creates an empty {@link Body} element.
+        */
+       public Body() {}
+
+       /**
+        * Creates a {@link Body} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Body(Object...children) {
+               children(children);
+       }
+
+       /**
         * {@doc HTML5.webappapis#handler-window-onafterprint onafterprint}
         * attribute.
         *
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Br.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Br.java
index 81c5fae..090f7da 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Br.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Br.java
@@ -25,6 +25,11 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="br")
 public class Br extends HtmlElementVoid {
 
+       /**
+        * Creates an empty {@link Br} element.
+        */
+       public Br() {}
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Button.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Button.java
index ae041b1..30f2803 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Button.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Button.java
@@ -30,6 +30,31 @@ import org.apache.juneau.annotation.*;
 public class Button extends HtmlElementMixed {
 
        /**
+        * Creates an empty {@link Button} element.
+        */
+       public Button() {}
+
+       /**
+        * Creates a {@link Button} element with the specified {@link 
Button#type(String)} attribute.
+        *
+        * @param type The {@link Button#type(String)} attribute.
+        */
+       public Button(String type) {
+               type(type);
+       }
+
+       /**
+        * Creates a {@link Button} element with the specified {@link 
Button#type(String)} attribute and
+        * {@link Button#children(Object[])} nodes.
+        *
+        * @param type The {@link Button#type(String)} attribute.
+        * @param children The {@link Button#children(Object[])} nodes.
+        */
+       public Button(String type, Object...children) {
+               type(type).children(children);
+       }
+
+       /**
         * {@doc HTML5.forms#attr-fe-autofocus autofocus} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Canvas.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Canvas.java
index 917970b..6ddaee1 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Canvas.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Canvas.java
@@ -26,6 +26,22 @@ import org.apache.juneau.annotation.*;
 public class Canvas extends HtmlElementContainer {
 
        /**
+        * Creates an empty {@link Canvas} element.
+        */
+       public Canvas() {}
+
+       /**
+        * Creates a {@link Canvas} element with the specified {@link 
Canvas#width(Object)} and
+        * {@link Canvas#height(Object)} attributes.
+        *
+        * @param width The {@link Canvas#width(Object)} attribute.
+        * @param height The {@link Canvas#height(Object)} attribute.
+        */
+       public Canvas(Number width, Number height) {
+               width(width).height(height);
+       }
+
+       /**
         * {@doc HTML5.scripting-1#attr-canvas-height height} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Caption.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Caption.java
index 4dec86e..de259c4 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Caption.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Caption.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="caption")
 public class Caption extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Caption} element.
+        */
+       public Caption() {}
+
+       /**
+        * Creates a {@link Caption} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Caption(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Cite.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Cite.java
index 0f1ba8e..71a5b72 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Cite.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Cite.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="cite")
 public class Cite extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Cite} element.
+        */
+       public Cite() {}
+
+       /**
+        * Creates a {@link Cite} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Cite(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Code.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Code.java
index 6b906f6..bba7b8c 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Code.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Code.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="code")
 public class Code extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Code} element.
+        */
+       public Code() {}
+
+       /**
+        * Creates a {@link Code} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Code(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Col.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Col.java
index 84e989f..17bd11f 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Col.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Col.java
@@ -26,6 +26,20 @@ import org.apache.juneau.annotation.*;
 public class Col extends HtmlElementVoid {
 
        /**
+        * Creates an empty {@link Col} element.
+        */
+       public Col() {}
+
+       /**
+        * Creates a {@link Col} element with the specified {@link 
Col#span(Object)} attribute.
+        *
+        * @param span The {@link Col#span(Object)} attribute.
+        */
+       public Col(Number span) {
+               span(span);
+       }
+
+       /**
         * {@doc HTML5.tabular-data#attr-col-span span} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Colgroup.java
 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Colgroup.java
index 54656c6..b975454 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Colgroup.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Colgroup.java
@@ -26,6 +26,20 @@ import org.apache.juneau.annotation.*;
 public class Colgroup extends HtmlElementContainer {
 
        /**
+        * Creates an empty {@link Colgroup} element.
+        */
+       public Colgroup() {}
+
+       /**
+        * Creates a {@link Colgroup} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Colgroup(Object...children) {
+               children(children);
+       }
+
+       /**
         * {@doc HTML5.tabular-data#attr-colgroup-span span} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Data.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Data.java
index df16ba1..4007326 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Data.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Data.java
@@ -26,6 +26,21 @@ import org.apache.juneau.annotation.*;
 public class Data extends HtmlElementMixed {
 
        /**
+        * Creates an empty {@link Data} element.
+        */
+       public Data() {}
+
+       /**
+        * Creates a {@link Data} element with the specified {@link 
Data#value(Object)} attribute and child node.
+        *
+        * @param value The {@link Data#value(Object)} attribute.
+        * @param child The child node.
+        */
+       public Data(String value, Object child) {
+               value(value).child(child);
+       }
+
+       /**
         * {@doc HTML5.text-level-semantics#attr-data-value value}
         * attribute.
         *
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Datalist.java
 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Datalist.java
index 9b3ef0d..b85b888 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Datalist.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Datalist.java
@@ -25,6 +25,21 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="datalist")
 public class Datalist extends HtmlElementContainer {
 
+       /**
+        * Creates an empty {@link Datalist} element.
+        */
+       public Datalist() {}
+
+       /**
+        * Creates a {@link Datalist} element with the specified {@link 
Datalist#id(String)} attribute and child nodes.
+        *
+        * @param id The {@link Datalist#id(String)} attribute.
+        * @param children The child nodes.
+        */
+       public Datalist(String id, Option...children) {
+               id(id).children((Object[])children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Dd.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Dd.java
index 0b898f7..d4d16ce 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Dd.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Dd.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="dd")
 public class Dd extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Dd} element.
+        */
+       public Dd() {}
+
+       /**
+        * Creates a {@link Dd} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Dd(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Del.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Del.java
index 3831fb3..68e6fe8 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Del.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Del.java
@@ -26,6 +26,20 @@ import org.apache.juneau.annotation.*;
 public class Del extends HtmlElementMixed {
 
        /**
+        * Creates an empty {@link Del} element.
+        */
+       public Del() {}
+
+       /**
+        * Creates a {@link Del} element with the specified {@link 
Del#children(Object[])} node.
+        *
+        * @param children The {@link Del#children(Object[])} node.
+        */
+       public Del(Object...children) {
+               children(children);
+       }
+
+       /**
         * {@doc HTML5.edits#attr-mod-cite cite} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Dfn.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Dfn.java
index 2b852f5..7249eb8 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Dfn.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Dfn.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="dfn")
 public class Dfn extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Dfn} element.
+        */
+       public Dfn() {}
+
+       /**
+        * Creates a {@link Dfn} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Dfn(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Div.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Div.java
index 49312f7..94ff397 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Div.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Div.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="div")
 public class Div extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Div} element.
+        */
+       public Div() {}
+
+       /**
+        * Creates a {@link Div} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Div(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Dl.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Dl.java
index 16faf7a..f6b3098 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Dl.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Dl.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="dl")
 public class Dl extends HtmlElementContainer {
 
+       /**
+        * Creates an empty {@link Dl} element.
+        */
+       public Dl() {}
+
+       /**
+        * Creates a {@link Dl} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Dl(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Dt.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Dt.java
index a22b7e8..4299426 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Dt.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Dt.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="dt")
 public class Dt extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Dt} element.
+        */
+       public Dt() {}
+
+       /**
+        * Creates a {@link Dt} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Dt(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Em.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Em.java
index ecc0878..1393048 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Em.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Em.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="em")
 public class Em extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Em} element.
+        */
+       public Em() {}
+
+       /**
+        * Creates an {@link Em} element with the specified {@link 
Em#children(Object[])} nodes.
+        *
+        * @param children The {@link Em#children(Object[])} nodes.
+        */
+       public Em(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Embed.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Embed.java
index fa05f06..4ae2203 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Embed.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Embed.java
@@ -30,6 +30,20 @@ import org.apache.juneau.annotation.*;
 public class Embed extends HtmlElementVoid {
 
        /**
+        * Creates an empty {@link Embed} element.
+        */
+       public Embed() {}
+
+       /**
+        * Creates an {@link Embed} element with the specified {@link 
Embed#src(Object)} attribute.
+        *
+        * @param src The {@link Embed#src(Object)} attribute.
+        */
+       public Embed(Object src) {
+               src(src);
+       }
+
+       /**
         * {@doc HTML5.embedded-content-0#attr-dim-height height}
         * attribute.
         *
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Fieldset.java
 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Fieldset.java
index 6fba10a..4a5c70c 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Fieldset.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Fieldset.java
@@ -26,6 +26,20 @@ import org.apache.juneau.annotation.*;
 public class Fieldset extends HtmlElementMixed {
 
        /**
+        * Creates an empty {@link Fieldset} element.
+        */
+       public Fieldset() {}
+
+       /**
+        * Creates a {@link Fieldset} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Fieldset(Object...children) {
+               children(children);
+       }
+
+       /**
         * {@doc HTML5.forms#attr-fieldset-disabled disabled} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Figcaption.java
 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Figcaption.java
index 31abb41..4d205a7 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Figcaption.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Figcaption.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="figcaption")
 public class Figcaption extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Figcaption} element.
+        */
+       public Figcaption() {}
+
+       /**
+        * Creates a {@link Figcaption} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Figcaption(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Figure.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Figure.java
index e3b3461..1249dbc 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Figure.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Figure.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="figure")
 public class Figure extends HtmlElementContainer {
 
+       /**
+        * Creates an empty {@link Figure} element.
+        */
+       public Figure() {}
+
+       /**
+        * Creates a {@link Figure} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Figure(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Footer.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Footer.java
index d3e43a1..54fe791 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Footer.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Footer.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="footer")
 public class Footer extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Footer} element.
+        */
+       public Footer() {}
+
+       /**
+        * Creates a {@link Footer} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Footer(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Form.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Form.java
index 8f518cd..a3c5779 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Form.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Form.java
@@ -30,6 +30,30 @@ import org.apache.juneau.annotation.*;
 public class Form extends HtmlElementMixed {
 
        /**
+        * Creates an empty {@link Form} element.
+        */
+       public Form() {}
+
+       /**
+        * Creates a {@link Form} element with the specified {@link 
Form#action(String)} attribute.
+        *
+        * @param action The {@link Form#action(String)} attribute.
+        */
+       public Form(String action) {
+               action(action);
+       }
+
+       /**
+        * Creates an {@link Form} element with the specified {@link 
Form#action(String)} attribute and child nodes.
+        *
+        * @param action The {@link Form#action(String)} attribute.
+        * @param children The child nodes.
+        */
+       public Form(String action, Object...children) {
+               action(action).children(children);
+       }
+
+       /**
         * {@doc HTML5.forms#attr-form-accept-charset accept-charset}
         * attribute.
         *
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/H1.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/H1.java
index b7aec88..9d23a60 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/H1.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/H1.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="h1")
 public class H1 extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link H1} element.
+        */
+       public H1() {}
+
+       /**
+        * Creates an {@link H1} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public H1(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/H2.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/H2.java
index 8700455..e233562 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/H2.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/H2.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="h2")
 public class H2 extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link H2} element.
+        */
+       public H2() {}
+
+       /**
+        * Creates an {@link H2} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public H2(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/H3.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/H3.java
index a52240a..ff5b7a7 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/H3.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/H3.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="h3")
 public class H3 extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link H3} element.
+        */
+       public H3() {}
+
+       /**
+        * Creates an {@link H3} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public H3(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/H4.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/H4.java
index 73a3c45..4e983a0 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/H4.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/H4.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="h4")
 public class H4 extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link H4} element.
+        */
+       public H4() {}
+
+       /**
+        * Creates an {@link H4} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public H4(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/H5.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/H5.java
index 72531c4..6bb2bc9 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/H5.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/H5.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="h5")
 public class H5 extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link H5} element.
+        */
+       public H5() {}
+
+       /**
+        * Creates an {@link H5} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public H5(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/H6.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/H6.java
index 413e70e..346966c 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/H6.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/H6.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="h6")
 public class H6 extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link H6} element.
+        */
+       public H6() {}
+
+       /**
+        * Creates an {@link H6} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public H6(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Head.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Head.java
index 45771c3..e5d839d 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Head.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Head.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="head")
 public class Head extends HtmlElementContainer {
 
+       /**
+        * Creates an empty {@link Head} element.
+        */
+       public Head() {}
+
+       /**
+        * Creates a {@link Head} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Head(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Header.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Header.java
index 64e48c8..e97ff41 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Header.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Header.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="header")
 public class Header extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Header} element.
+        */
+       public Header() {}
+
+       /**
+        * Creates a {@link Header} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Header(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Hr.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Hr.java
index 8b03439..857a345 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Hr.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Hr.java
@@ -25,6 +25,11 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="hr")
 public class Hr extends HtmlElementVoid {
 
+       /**
+        * Creates an empty {@link Hr} element.
+        */
+       public Hr() {}
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Html.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Html.java
index 0d9f660..da13ce7 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Html.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Html.java
@@ -26,6 +26,20 @@ import org.apache.juneau.annotation.*;
 public class Html extends HtmlElementContainer {
 
        /**
+        * Creates an empty {@link Html} element.
+        */
+       public Html() {}
+
+       /**
+        * Creates an {@link Html} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Html(Object...children) {
+               children(children);
+       }
+
+       /**
         * {@doc HTML5.semantics#attr-html-manifest manifest} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/HtmlBeanDictionary.java
 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/HtmlBeanDictionary.java
index 6a0ede0..b7b32eb 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/HtmlBeanDictionary.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/HtmlBeanDictionary.java
@@ -93,7 +93,7 @@ public class HtmlBeanDictionary extends BeanDictionaryList {
                        Meter.class,
                        Nav.class,
                        Noscript.class,
-                       Object2.class,
+                       Object_.class,
                        Ol.class,
                        Optgroup.class,
                        Option.class,
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/HtmlBuilder.java
 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/HtmlBuilder.java
index 8e9e104..7f7beb2 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/HtmlBuilder.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/HtmlBuilder.java
@@ -12,8 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.dto.html5;
 
-import static org.apache.juneau.internal.StringUtils.*;
-
 /**
  * Various useful static methods for creating HTML elements.
  *
@@ -41,7 +39,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final A a(Object href, Object...children) {
-               return a().href(href).children(children);
+               return new A(href, children);
        }
 
        /**
@@ -62,7 +60,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Abbr abbr(String title, Object...children) {
-               return abbr().title(title).children(children);
+               return new Abbr(title, children);
        }
 
        /**
@@ -81,7 +79,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Address address(Object...children) {
-               return address().children(children);
+               return new Address(children);
        }
 
        /**
@@ -103,7 +101,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Area area(String shape, String coords, Object href) 
{
-               return area().shape(shape).coords(coords).href(href);
+               return new Area(shape, coords, href);
        }
 
        /**
@@ -122,7 +120,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Article article(Object...children) {
-               return article().children(children);
+               return new Article(children);
        }
 
        /**
@@ -141,7 +139,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Aside aside(Object...children) {
-               return aside().children(children);
+               return new Aside(children);
        }
 
        /**
@@ -160,7 +158,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Audio audio(String src) {
-               return audio().src(src);
+               return new Audio(src);
        }
 
        /**
@@ -179,7 +177,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final B b(Object...children) {
-               return b().children(children);
+               return new B(children);
        }
 
        /**
@@ -198,7 +196,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Base base(Object href) {
-               return base().href(href);
+               return new Base(href);
        }
 
        /**
@@ -217,7 +215,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Bdi bdi(Object text) {
-               return bdi().text(text);
+               return new Bdi(text);
        }
 
        /**
@@ -237,7 +235,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Bdo bdo(String dir, Object...children) {
-               return bdo().dir(dir).children(children);
+               return new Bdo(dir, children);
        }
 
        /**
@@ -256,7 +254,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Blockquote blockquote(Object...children) {
-               return blockquote().children(children);
+               return new Blockquote(children);
        }
 
        /**
@@ -275,7 +273,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Body body(Object...children) {
-               return body().children(children);
+               return new Body(children);
        }
 
        /**
@@ -303,7 +301,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Button button(String type) {
-               return button().type(type);
+               return new Button(type);
        }
 
        /**
@@ -315,7 +313,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Button button(String type, Object...children) {
-               return button().type(type).children(children);
+               return new Button(type, children);
        }
 
        /**
@@ -335,7 +333,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Canvas canvas(Number width, Number height) {
-               return canvas().width(width).height(height);
+               return new Canvas(width, height);
        }
 
        /**
@@ -354,7 +352,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Caption caption(Object...children) {
-               return caption().children(children);
+               return new Caption(children);
        }
 
        /**
@@ -373,7 +371,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Cite cite(Object...children) {
-               return cite().children(children);
+               return new Cite(children);
        }
 
        /**
@@ -392,7 +390,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Code code(Object...children) {
-               return code().children(children);
+               return new Code(children);
        }
 
        /**
@@ -412,7 +410,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Col col(Number span) {
-               return col().span(span);
+               return new Col(span);
        }
 
        /**
@@ -431,7 +429,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Colgroup colgroup(Object...children) {
-               return colgroup().children(children);
+               return new Colgroup(children);
        }
 
        /**
@@ -451,7 +449,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Data data(String value, Object child) {
-               return data().value(value).child(child);
+               return new Data(value, child);
        }
 
        /**
@@ -471,7 +469,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Datalist datalist(String id, Option...children) {
-               return datalist().id(id).children((Object[])children);
+               return new Datalist(id, children);
        }
 
        /**
@@ -490,7 +488,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Dd dd(Object...children) {
-               return dd().children(children);
+               return new Dd(children);
        }
 
        /**
@@ -509,7 +507,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Del del(Object...children) {
-               return del().children(children);
+               return new Del(children);
        }
 
        /**
@@ -528,7 +526,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Dfn dfn(Object...children) {
-               return dfn().children(children);
+               return new Dfn(children);
        }
 
        /**
@@ -547,7 +545,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Div div(Object...children) {
-               return div().children(children);
+               return new Div(children);
        }
 
        /**
@@ -566,7 +564,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Dl dl(Object...children) {
-               return dl().children(children);
+               return new Dl(children);
        }
 
        /**
@@ -585,7 +583,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Dt dt(Object...children) {
-               return dt().children(children);
+               return new Dt(children);
        }
 
        /**
@@ -604,7 +602,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Em em(Object...children) {
-               return em().children(children);
+               return new Em(children);
        }
 
        /**
@@ -623,7 +621,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Embed embed(Object src) {
-               return embed().src(src);
+               return new Embed(src);
        }
 
        /**
@@ -642,7 +640,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Fieldset fieldset(Object...children) {
-               return fieldset().children(children);
+               return new Fieldset(children);
        }
 
        /**
@@ -661,7 +659,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Figcaption figcaption(Object...children) {
-               return figcaption().children(children);
+               return new Figcaption(children);
        }
 
        /**
@@ -680,7 +678,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Figure figure(Object...children) {
-               return figure().children(children);
+               return new Figure(children);
        }
 
        /**
@@ -699,7 +697,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Footer footer(Object...children) {
-               return footer().children(children);
+               return new Footer(children);
        }
 
        /**
@@ -718,7 +716,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Form form(String action) {
-               return form().action(action);
+               return new Form(action);
        }
 
        /**
@@ -729,7 +727,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Form form(String action, Object...children) {
-               return form().action(action).children(children);
+               return new Form(action, children);
        }
 
        /**
@@ -748,7 +746,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final H1 h1(Object...children) {
-               return h1().children(children);
+               return new H1(children);
        }
 
        /**
@@ -767,7 +765,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final H2 h2(Object...children) {
-               return h2().children(children);
+               return new H2(children);
        }
 
        /**
@@ -786,7 +784,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final H3 h3(Object...children) {
-               return h3().children(children);
+               return new H3(children);
        }
 
        /**
@@ -805,7 +803,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final H4 h4(Object...children) {
-               return h4().children(children);
+               return new H4(children);
        }
 
        /**
@@ -824,7 +822,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final H5 h5(Object...children) {
-               return h5().children(children);
+               return new H5(children);
        }
 
        /**
@@ -842,7 +840,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final H6 h6(Object...children) {
-               return h6().children(children);
+               return new H6(children);
        }
 
        /**
@@ -861,7 +859,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Head head(Object...children) {
-               return head().children(children);
+               return new Head(children);
        }
 
        /**
@@ -880,7 +878,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Header header(Object...children) {
-               return header().children(children);
+               return new Header(children);
        }
 
        /**
@@ -908,7 +906,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Html html(Object...children) {
-               return html().children(children);
+               return new Html(children);
        }
 
        /**
@@ -927,7 +925,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final I i(Object...children) {
-               return i().children(children);
+               return new I(children);
        }
 
        /**
@@ -946,7 +944,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Iframe iframe(Object...children) {
-               return iframe().children(children);
+               return new Iframe(children);
        }
 
        /**
@@ -965,7 +963,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Img img(Object src) {
-               return img().src(src);
+               return new Img(src);
        }
 
        /**
@@ -984,7 +982,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Input input(String type) {
-               return input().type(type);
+               return new Input(type);
        }
 
        /**
@@ -1003,7 +1001,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Ins ins(Object...children) {
-               return ins().children(children);
+               return new Ins(children);
        }
 
        /**
@@ -1022,7 +1020,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Kbd kbd(Object...children) {
-               return kbd().children(children);
+               return new Kbd(children);
        }
 
        /**
@@ -1050,7 +1048,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Label label(Object...children) {
-               return label().children(children);
+               return new Label(children);
        }
 
        /**
@@ -1069,7 +1067,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Legend legend(Object...children) {
-               return legend().children(children);
+               return new Legend(children);
        }
 
        /**
@@ -1088,7 +1086,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Li li(Object...children) {
-               return li().children(children);
+               return new Li(children);
        }
 
        /**
@@ -1107,7 +1105,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Link link(Object href) {
-               return link().href(href);
+               return new Link(href);
        }
 
        /**
@@ -1126,7 +1124,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Main main(Object...children) {
-               return main().children(children);
+               return new Main(children);
        }
 
        /**
@@ -1145,7 +1143,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Map map(Object...children) {
-               return map().children(children);
+               return new Map(children);
        }
 
        /**
@@ -1164,7 +1162,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Mark mark(Object...children) {
-               return mark().children(children);
+               return new Mark(children);
        }
 
        /**
@@ -1192,7 +1190,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Meter meter(Object...children) {
-               return meter().children(children);
+               return new Meter(children);
        }
 
        /**
@@ -1211,7 +1209,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Nav nav(Object...children) {
-               return nav().children(children);
+               return new Nav(children);
        }
 
        /**
@@ -1230,26 +1228,26 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Noscript noscript(Object...children) {
-               return noscript().children(children);
+               return new Noscript(children);
        }
 
        /**
-        * Creates an empty {@link Object2} element.
+        * Creates an empty {@link Object_} element.
         *
         * @return The new element.
         */
-       public static final Object2 object() {
-               return new Object2();
+       public static final Object_ object() {
+               return new Object_();
        }
 
        /**
-        * Creates an {@link Object2} element with the specified child nodes.
+        * Creates an {@link Object_} element with the specified child nodes.
         *
         * @param children The child nodes.
         * @return The new element.
         */
-       public static final Object2 object(Object...children) {
-               return object().children(children);
+       public static final Object_ object(Object...children) {
+               return new Object_(children);
        }
 
        /**
@@ -1268,7 +1266,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Ol ol(Object...children) {
-               return ol().children(children);
+               return new Ol(children);
        }
 
        /**
@@ -1287,7 +1285,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Optgroup optgroup(Object...children) {
-               return optgroup().children(children);
+               return new Optgroup(children);
        }
 
        /**
@@ -1306,7 +1304,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Option option(Object text) {
-               return option().text(text);
+               return new Option(text);
        }
 
        /**
@@ -1318,7 +1316,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Option option(Object value, Object text) {
-               return option().value(value).text(text);
+               return new Option(value, text);
        }
 
        /**
@@ -1337,7 +1335,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Output output(String name) {
-               return output().name(name);
+               return new Output(name);
        }
 
        /**
@@ -1356,7 +1354,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final P p(Object...children) {
-               return p().children(children);
+               return new P(children);
        }
 
        /**
@@ -1377,7 +1375,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Param param(String name, Object value) {
-               return param().name(name).value(value);
+               return new Param(name, value);
        }
 
        /**
@@ -1396,7 +1394,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Pre pre(Object...children) {
-               return pre().children(children);
+               return new Pre(children);
        }
 
        /**
@@ -1415,7 +1413,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Progress progress(Object...children) {
-               return progress().children(children);
+               return new Progress(children);
        }
 
        /**
@@ -1434,7 +1432,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Q q(Object...children) {
-               return q().children(children);
+               return new Q(children);
        }
 
        /**
@@ -1453,7 +1451,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Rb rb(Object...children) {
-               return rb().children(children);
+               return new Rb(children);
        }
 
        /**
@@ -1472,7 +1470,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Rp rp(Object...children) {
-               return rp().children(children);
+               return new Rp(children);
        }
 
        /**
@@ -1491,7 +1489,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Rt rt(Object...children) {
-               return rt().children(children);
+               return new Rt(children);
        }
 
        /**
@@ -1510,7 +1508,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Rtc rtc(Object...children) {
-               return rtc().children(children);
+               return new Rtc(children);
        }
 
        /**
@@ -1529,7 +1527,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Ruby ruby(Object...children) {
-               return ruby().children(children);
+               return new Ruby(children);
        }
 
        /**
@@ -1548,7 +1546,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final S s(Object...children) {
-               return s().children(children);
+               return new S(children);
        }
 
        /**
@@ -1567,7 +1565,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Samp samp(Object...children) {
-               return samp().children(children);
+               return new Samp(children);
        }
 
        /**
@@ -1588,7 +1586,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Script script(String type, String...text) {
-               return script().type(type).text(joinnl(text));
+               return new Script(type, text);
        }
 
        /**
@@ -1607,7 +1605,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Section section(Object...children) {
-               return section().children(children);
+               return new Section(children);
        }
 
        /**
@@ -1627,7 +1625,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Select select(String name, Object...children) {
-               return select().name(name).children(children);
+               return new Select(name, children);
        }
 
        /**
@@ -1646,7 +1644,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Small small(Object...children) {
-               return small().children(children);
+               return new Small(children);
        }
 
        /**
@@ -1667,7 +1665,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Source source(Object src, String type) {
-               return source().src(src).type(type);
+               return new Source(src, type);
        }
 
        /**
@@ -1686,7 +1684,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Span span(Object...children) {
-               return span().children(children);
+               return new Span(children);
        }
 
        /**
@@ -1705,7 +1703,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Strong strong(Object...children) {
-               return strong().children(children);
+               return new Strong(children);
        }
 
        /**
@@ -1724,7 +1722,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Style style(Object text) {
-               return style().text(text);
+               return new Style(text);
        }
 
        /**
@@ -1736,7 +1734,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Style style(String...text) {
-               return style().text(joinnl(text));
+               return new Style(text);
        }
 
        /**
@@ -1755,7 +1753,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Sub sub(Object...children) {
-               return sub().children(children);
+               return new Sub(children);
        }
 
        /**
@@ -1774,7 +1772,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Sup sup(Object...children) {
-               return sup().children(children);
+               return new Sup(children);
        }
 
        /**
@@ -1793,7 +1791,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Table table(Object...children) {
-               return table().children(children);
+               return new Table(children);
        }
 
        /**
@@ -1812,7 +1810,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Tbody tbody(Object...children) {
-               return tbody().children(children);
+               return new Tbody(children);
        }
 
        /**
@@ -1831,7 +1829,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Td td(Object...children) {
-               return td().children(children);
+               return new Td(children);
        }
 
        /**
@@ -1851,7 +1849,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Template template(String id, Object...children) {
-               return template().id(id).children(children);
+               return new Template(id, children);
        }
 
        /**
@@ -1872,7 +1870,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Textarea textarea(String name, String text) {
-               return textarea().name(name).text(text);
+               return new Textarea(name, text);
        }
 
        /**
@@ -1891,7 +1889,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Tfoot tfoot(Object...children) {
-               return tfoot().children(children);
+               return new Tfoot(children);
        }
 
        /**
@@ -1910,7 +1908,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Th th(Object...children) {
-               return th().children(children);
+               return new Th(children);
        }
 
        /**
@@ -1929,7 +1927,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Thead thead(Object...children) {
-               return thead().children(children);
+               return new Thead(children);
        }
 
        /**
@@ -1948,7 +1946,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Time time(Object...children) {
-               return time().children(children);
+               return new Time(children);
        }
 
        /**
@@ -1967,7 +1965,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Title title(String text) {
-               return title().text(text);
+               return new Title(text);
        }
 
        /**
@@ -1986,7 +1984,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Tr tr(Object...children) {
-               return tr().children(children);
+               return new Tr(children);
        }
 
        /**
@@ -2007,7 +2005,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Track track(Object src, String kind) {
-               return track().src(src).kind(kind);
+               return new Track(src, kind);
        }
 
        /**
@@ -2026,7 +2024,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final U u(Object...children) {
-               return u().children(children);
+               return new U(children);
        }
 
        /**
@@ -2045,7 +2043,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Ul ul(Object...children) {
-               return ul().children(children);
+               return new Ul(children);
        }
 
        /**
@@ -2064,7 +2062,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Var var(Object...children) {
-               return var().children(children);
+               return new Var(children);
        }
 
        /**
@@ -2083,7 +2081,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Video video(Object src) {
-               return video().src(src);
+               return new Video(src);
        }
 
        /**
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/I.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/I.java
index d72dbe7..ef71ba9 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/I.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/I.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="i")
 public class I extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link I} element.
+        */
+       public I() {}
+
+       /**
+        * Creates an {@link I} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public I(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Iframe.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Iframe.java
index 8e9894d..0c403ba 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Iframe.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Iframe.java
@@ -30,6 +30,20 @@ import org.apache.juneau.annotation.*;
 public class Iframe extends HtmlElementMixed {
 
        /**
+        * Creates an empty {@link Iframe} element.
+        */
+       public Iframe() {}
+
+       /**
+        * Creates an {@link Iframe} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Iframe(Object...children) {
+               children(children);
+       }
+
+       /**
         * {@doc HTML5.embedded-content-0#attr-dim-height height}
         * attribute.
         *
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Img.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Img.java
index bb7b8ae..37f58f9 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Img.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Img.java
@@ -29,6 +29,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="img")
 public class Img extends HtmlElementVoid {
 
+       /**
+        * Creates an empty {@link Img} element.
+        */
+       public Img() {}
+
+       /**
+        * Creates an {@link Img} element with the specified {@link 
Img#src(Object)} attribute.
+        *
+        * @param src The {@link Img#src(Object)} attribute.
+        */
+       public Img(Object src) {
+               src(src);
+       }
+
        /**
         * {@doc HTML5.embedded-content-0#attr-img-alt alt} attribute.
         *
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Input.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Input.java
index 13ee5cd..bb35236 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Input.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Input.java
@@ -28,6 +28,20 @@ import org.apache.juneau.annotation.*;
 public class Input extends HtmlElementVoid {
 
        /**
+        * Creates an empty {@link Input} element.
+        */
+       public Input() {}
+
+       /**
+        * Creates an {@link Input} element with the specified {@link 
Input#type(String)} attribute.
+        *
+        * @param type The {@link Input#type(String)} attribute.
+        */
+       public Input(String type) {
+               type(type);
+       }
+
+       /**
         * {@doc HTML5.forms#attr-input-accept accept} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Ins.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Ins.java
index 1c6ef10..29ac9fa 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Ins.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Ins.java
@@ -26,6 +26,20 @@ import org.apache.juneau.annotation.*;
 public class Ins extends HtmlElementMixed {
 
        /**
+        * Creates an empty {@link Ins} element.
+        */
+       public Ins() {}
+
+       /**
+        * Creates an {@link Ins} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Ins(Object...children) {
+               children(children);
+       }
+
+       /**
         * {@doc HTML5.edits#attr-mod-cite cite} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Kbd.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Kbd.java
index 9e395ce..5b3376a 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Kbd.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Kbd.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="kbd")
 public class Kbd extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Kbd} element.
+        */
+       public Kbd() {}
+
+       /**
+        * Creates a {@link Kbd} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Kbd(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Keygen.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Keygen.java
index 0cfb34e..17bc0d6 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Keygen.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Keygen.java
@@ -26,6 +26,11 @@ import org.apache.juneau.annotation.*;
 public class Keygen extends HtmlElementVoid {
 
        /**
+        * Creates an empty {@link Keygen} element.
+        */
+       public Keygen() {}
+
+       /**
         * {@doc HTML5.forms#attr-fe-autofocus autofocus} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Label.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Label.java
index fbddc02..6cdf2f0 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Label.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Label.java
@@ -26,6 +26,20 @@ import org.apache.juneau.annotation.*;
 public class Label extends HtmlElementMixed {
 
        /**
+        * Creates an empty {@link Label} element.
+        */
+       public Label() {}
+
+       /**
+        * Creates a {@link Label} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Label(Object...children) {
+               children(children);
+       }
+
+       /**
         * {@doc HTML5.forms#attr-label-for for} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Legend.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Legend.java
index ac0a68e..07a725f 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Legend.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Legend.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="legend")
 public class Legend extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Legend} element.
+        */
+       public Legend() {}
+
+       /**
+        * Creates a {@link Legend} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Legend(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Li.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Li.java
index e129781..3f036d1 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Li.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Li.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="li")
 public class Li extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Li} element.
+        */
+       public Li() {}
+
+       /**
+        * Creates an {@link Li} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Li(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Link.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Link.java
index b4e3116..301a359 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Link.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Link.java
@@ -30,6 +30,20 @@ import org.apache.juneau.annotation.*;
 public class Link extends HtmlElementVoid {
 
        /**
+        * Creates an empty {@link Link} element.
+        */
+       public Link() {}
+
+       /**
+        * Creates a {@link Link} element with the specified {@link 
Link#href(Object)} attribute.
+        *
+        * @param href The {@link Link#href(Object)} attribute.
+        */
+       public Link(Object href) {
+               href(href);
+       }
+
+       /**
         * {@doc HTML5.document-metadata#attr-link-crossorigin crossorigin}
         * attribute.
         *
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Main.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Main.java
index 9daf670..f3cf08f 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Main.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Main.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="main")
 public class Main extends HtmlElementContainer {
 
+       /**
+        * Creates an empty {@link Main} element.
+        */
+       public Main() {}
+
+       /**
+        * Creates a {@link Main} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Main(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Map.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Map.java
index e23c1ec..4167889 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Map.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Map.java
@@ -26,6 +26,20 @@ import org.apache.juneau.annotation.*;
 public class Map extends HtmlElementContainer {
 
        /**
+        * Creates an empty {@link Map} element.
+        */
+       public Map() {}
+
+       /**
+        * Creates a {@link Map} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Map(Object...children) {
+               children(children);
+       }
+
+       /**
         * {@doc HTML5.embedded-content-0#attr-map-name name} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Mark.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Mark.java
index 7b799fc..8ef7147 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Mark.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Mark.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="mark")
 public class Mark extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Mark} element.
+        */
+       public Mark() {}
+
+       /**
+        * Creates a {@link Mark} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Mark(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Meta.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Meta.java
index cd37f4f..caf7168 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Meta.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Meta.java
@@ -26,6 +26,11 @@ import org.apache.juneau.annotation.*;
 public class Meta extends HtmlElementVoid {
 
        /**
+        * Creates an empty {@link Meta} element.
+        */
+       public Meta() {}
+
+       /**
         * {@doc HTML5.document-metadata#attr-meta-charset charset}
         * attribute.
         *
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Meter.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Meter.java
index 3b4f5bd..bf77197 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Meter.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Meter.java
@@ -26,6 +26,20 @@ import org.apache.juneau.annotation.*;
 public class Meter extends HtmlElementMixed {
 
        /**
+        * Creates an empty {@link Meter} element.
+        */
+       public Meter() {}
+
+       /**
+        * Creates a {@link Meter} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Meter(Object...children) {
+               children(children);
+       }
+
+       /**
         * {@doc HTML5.forms#attr-meter-high high} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Nav.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Nav.java
index 67a3f66..7f4642a 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Nav.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Nav.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="nav")
 public class Nav extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Nav} element.
+        */
+       public Nav() {}
+
+       /**
+        * Creates a {@link Nav} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Nav(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Noscript.java
 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Noscript.java
index e16cfcf..bc78d2d 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Noscript.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Noscript.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="noscript")
 public class Noscript extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Noscript} element.
+        */
+       public Noscript() {}
+
+       /**
+        * Creates a {@link Noscript} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Noscript(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Object2.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Object_.java
similarity index 84%
rename from 
juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Object2.java
rename to 
juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Object_.java
index b09dbe8..6bec000 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Object2.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Object_.java
@@ -23,7 +23,21 @@ import org.apache.juneau.annotation.*;
  * </ul>
  */
 @Bean(typeName="object")
-public class Object2 extends HtmlElementMixed {
+public class Object_ extends HtmlElementMixed {
+
+       /**
+        * Creates an empty {@link Object_} element.
+        */
+       public Object_() {}
+
+       /**
+        * Creates an {@link Object_} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Object_(Object...children) {
+               children(children);
+       }
 
        /**
         * {@doc HTML5.embedded-content-0#attr-object-data data} attribute.
@@ -34,7 +48,7 @@ public class Object2 extends HtmlElementMixed {
         * @param data The new value for this attribute.
         * @return This object (for method chaining).
         */
-       public final Object2 data(String data) {
+       public final Object_ data(String data) {
                attr("data", data);
                return this;
        }
@@ -48,7 +62,7 @@ public class Object2 extends HtmlElementMixed {
         * @param form The new value for this attribute.
         * @return This object (for method chaining).
         */
-       public final Object2 form(String form) {
+       public final Object_ form(String form) {
                attr("form", form);
                return this;
        }
@@ -65,7 +79,7 @@ public class Object2 extends HtmlElementMixed {
         *      Typically a {@link Number} or {@link String}.
         * @return This object (for method chaining).
         */
-       public final Object2 height(Object height) {
+       public final Object_ height(Object height) {
                attr("height", height);
                return this;
        }
@@ -79,7 +93,7 @@ public class Object2 extends HtmlElementMixed {
         * @param name The new value for this attribute.
         * @return This object (for method chaining).
         */
-       public final Object2 name(String name) {
+       public final Object_ name(String name) {
                attr("name", name);
                return this;
        }
@@ -93,7 +107,7 @@ public class Object2 extends HtmlElementMixed {
         * @param type The new value for this attribute.
         * @return This object (for method chaining).
         */
-       public final Object2 type(String type) {
+       public final Object_ type(String type) {
                attr("type", type);
                return this;
        }
@@ -110,7 +124,7 @@ public class Object2 extends HtmlElementMixed {
         *      Typically a {@link Boolean} or {@link String}.
         * @return This object (for method chaining).
         */
-       public final Object2 typemustmatch(Object typemustmatch) {
+       public final Object_ typemustmatch(Object typemustmatch) {
                attr("typemustmatch", typemustmatch);
                return this;
        }
@@ -125,7 +139,7 @@ public class Object2 extends HtmlElementMixed {
         * @param usemap The new value for this attribute.
         * @return This object (for method chaining).
         */
-       public final Object2 usemap(String usemap) {
+       public final Object_ usemap(String usemap) {
                attr("usemap", usemap);
                return this;
        }
@@ -141,7 +155,7 @@ public class Object2 extends HtmlElementMixed {
         *      Typically a {@link Number} or {@link String}.
         * @return This object (for method chaining).
         */
-       public final Object2 width(Object width) {
+       public final Object_ width(Object width) {
                attr("width", width);
                return this;
        }
@@ -152,31 +166,31 @@ public class Object2 extends HtmlElementMixed {
        
//-----------------------------------------------------------------------------------------------------------------
 
        @Override /* HtmlElement */
-       public final Object2 _class(String _class) {
+       public final Object_ _class(String _class) {
                super._class(_class);
                return this;
        }
 
        @Override /* HtmlElement */
-       public final Object2 id(String id) {
+       public final Object_ id(String id) {
                super.id(id);
                return this;
        }
 
        @Override /* HtmlElement */
-       public final Object2 style(String style) {
+       public final Object_ style(String style) {
                super.style(style);
                return this;
        }
 
        @Override /* HtmlElementMixed */
-       public Object2 children(Object...children) {
+       public Object_ children(Object...children) {
                super.children(children);
                return this;
        }
 
        @Override /* HtmlElementMixed */
-       public Object2 child(Object child) {
+       public Object_ child(Object child) {
                super.child(child);
                return this;
        }
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Ol.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Ol.java
index 7872e7e..09f78d9 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Ol.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Ol.java
@@ -26,6 +26,20 @@ import org.apache.juneau.annotation.*;
 public class Ol extends HtmlElementContainer {
 
        /**
+        * Creates an empty {@link Ol} element.
+        */
+       public Ol() {}
+
+       /**
+        * Creates an {@link Ol} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Ol(Object...children) {
+               children(children);
+       }
+
+       /**
         * {@doc HTML5.grouping-content#attr-ol-reversed reversed}
         * attribute.
         *
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Optgroup.java
 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Optgroup.java
index ff097b1..e1e68c1 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Optgroup.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Optgroup.java
@@ -26,6 +26,20 @@ import org.apache.juneau.annotation.*;
 public class Optgroup extends HtmlElementContainer {
 
        /**
+        * Creates an empty {@link Optgroup} element.
+        */
+       public Optgroup() {}
+
+       /**
+        * Creates an {@link Optgroup} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Optgroup(Object...children) {
+               children(children);
+       }
+
+       /**
         * {@doc HTML5.forms#attr-optgroup-disabled disabled} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Option.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Option.java
index b1e8be0..9fdff9e 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Option.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Option.java
@@ -26,6 +26,31 @@ import org.apache.juneau.annotation.*;
 public class Option extends HtmlElementText {
 
        /**
+        * Creates an empty {@link Option} element.
+        */
+       public Option() {}
+
+       /**
+        * Creates an {@link Option} element with the specified {@link 
Option#text(Object)} attribute.
+        *
+        * @param text The {@link Option#text(Object)} attribute.
+        */
+       public Option(Object text) {
+               text(text);
+       }
+
+       /**
+        * Creates an {@link Option} element with the specified {@link 
Option#value(Object)} attribute and
+        * {@link Option#text(Object)} node.
+        *
+        * @param value The {@link Option#value(Object)} attribute.
+        * @param text The {@link Option#text(Object)} node.
+        */
+       public Option(Object value, Object text) {
+               value(value).text(text);
+       }
+
+       /**
         * {@doc HTML5.forms#attr-option-disabled disabled} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Output.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Output.java
index 4c71788..c01f0f5 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Output.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Output.java
@@ -26,6 +26,20 @@ import org.apache.juneau.annotation.*;
 public class Output extends HtmlElementMixed {
 
        /**
+        * Creates an empty {@link Output} element.
+        */
+       public Output() {}
+
+       /**
+        * Creates an {@link Output} element with the specified {@link 
Output#name(String)} attribute.
+        *
+        * @param name The {@link Output#name(String)} attribute.
+        */
+       public Output(String name) {
+               name(name);
+       }
+
+       /**
         * {@doc HTML5.forms#attr-output-for for} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/P.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/P.java
index 8014c6a..56d7941 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/P.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/P.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="p")
 public class P extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link P} element.
+        */
+       public P() {}
+
+       /**
+        * Creates a {@link P} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public P(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Param.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Param.java
index e879951..fc5dd0c 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Param.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Param.java
@@ -26,6 +26,22 @@ import org.apache.juneau.annotation.*;
 public class Param extends HtmlElementVoid {
 
        /**
+        * Creates an empty {@link Param} element.
+        */
+       public Param() {}
+
+       /**
+        * Creates a {@link Param} element with the specified {@link 
Param#name(String)} and {@link Param#value(Object)}
+        * attributes.
+        *
+        * @param name The {@link Param#name(String)} attribute.
+        * @param value The {@link Param#value(Object)} attribute.
+        */
+       public Param(String name, Object value) {
+               name(name).value(value);
+       }
+
+       /**
         * {@doc HTML5.embedded-content-0#attr-param-name name} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Pre.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Pre.java
index 4687d2a..063076b 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Pre.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Pre.java
@@ -30,6 +30,20 @@ import org.apache.juneau.xml.annotation.*;
 @Bean(typeName="pre")
 public class Pre extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Pre} element.
+        */
+       public Pre() {}
+
+       /**
+        * Creates a {@link Pre} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Pre(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Progress.java
 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Progress.java
index 00ab088..44999e3 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Progress.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Progress.java
@@ -26,6 +26,20 @@ import org.apache.juneau.annotation.*;
 public class Progress extends HtmlElementMixed {
 
        /**
+        * Creates an empty {@link Progress} element.
+        */
+       public Progress() {}
+
+       /**
+        * Creates a {@link Progress} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Progress(Object...children) {
+               children(children);
+       }
+
+       /**
         * {@doc HTML5.forms#attr-progress-max max} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Q.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Q.java
index b662cd6..02aae81 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Q.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Q.java
@@ -26,6 +26,20 @@ import org.apache.juneau.annotation.*;
 public class Q extends HtmlElementMixed {
 
        /**
+        * Creates an empty {@link Q} element.
+        */
+       public Q() {}
+
+       /**
+        * Creates a {@link Q} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Q(Object...children) {
+               children(children);
+       }
+
+       /**
         * {@doc HTML5.text-level-semantics#attr-q-cite cite} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Rb.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Rb.java
index 5fdf014..3dcf0e7 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Rb.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Rb.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="rb")
 public class Rb extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Rb} element.
+        */
+       public Rb() {}
+
+       /**
+        * Creates a {@link Rb} element with the specified {@link 
Rb#children(Object[])} nodes.
+        *
+        * @param children The {@link Rb#children(Object[])} nodes.
+        */
+       public Rb(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Rp.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Rp.java
index 0380fae..c68446e 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Rp.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Rp.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="rp")
 public class Rp extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Rp} element.
+        */
+       public Rp() {}
+
+       /**
+        * Creates a {@link Rp} element with the specified {@link 
Rp#children(Object[])} nodes.
+        *
+        * @param children The {@link Rp#children(Object[])} nodes.
+        */
+       public Rp(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Rt.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Rt.java
index 9e8872c..4778ff4 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Rt.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Rt.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="rt")
 public class Rt extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Rt} element.
+        */
+       public Rt() {}
+
+       /**
+        * Creates a {@link Rt} element with the specified {@link 
Rt#children(Object[])} nodes.
+        *
+        * @param children The {@link Rt#children(Object[])} nodes.
+        */
+       public Rt(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Rtc.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Rtc.java
index 7f499fc..89147aa 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Rtc.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Rtc.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="rtc")
 public class Rtc extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Rtc} element.
+        */
+       public Rtc() {}
+
+       /**
+        * Creates an {@link Rtc} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Rtc(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Ruby.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Ruby.java
index f1a8ca0..b1a586c 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Ruby.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Ruby.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="ruby")
 public class Ruby extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Ruby} element.
+        */
+       public Ruby() {}
+
+       /**
+        * Creates a {@link Ruby} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Ruby(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/S.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/S.java
index acedc78..596ebca 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/S.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/S.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="s")
 public class S extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link S} element.
+        */
+       public S() {}
+
+       /**
+        * Creates an {@link S} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public S(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Samp.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Samp.java
index 5a0dd70..42c6e03 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Samp.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Samp.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="samp")
 public class Samp extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Samp} element.
+        */
+       public Samp() {}
+
+       /**
+        * Creates a {@link Samp} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Samp(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Script.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Script.java
index 6f9bdda..a4422e5 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Script.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Script.java
@@ -12,6 +12,8 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.dto.html5;
 
+import static org.apache.juneau.internal.StringUtils.*;
+
 import java.net.*;
 import java.net.URI;
 
@@ -30,6 +32,22 @@ import org.apache.juneau.annotation.*;
 public class Script extends HtmlElementRawText {
 
        /**
+        * Creates an empty {@link Script} element.
+        */
+       public Script() {}
+
+       /**
+        * Creates a {@link Script} element with the specified {@link 
Script#type(String)} attribute and
+        * {@link Script#text(Object)} node.
+        *
+        * @param type The {@link Script#type(String)} attribute.
+        * @param text The child text node.
+        */
+       public Script(String type, String...text) {
+               type(type).text(joinnl(text));
+       }
+
+       /**
         * {@doc HTML5.scripting-1#attr-script-async async} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Section.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Section.java
index 731bca5..be79068 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Section.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Section.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="section")
 public class Section extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Section} element.
+        */
+       public Section() {}
+
+       /**
+        * Creates a {@link Section} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Section(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Select.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Select.java
index 33069ce..e16a0cd 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Select.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Select.java
@@ -27,6 +27,21 @@ import org.apache.juneau.internal.*;
 public class Select extends HtmlElementContainer {
 
        /**
+        * Creates an empty {@link Select} element.
+        */
+       public Select() {}
+
+       /**
+        * Creates a {@link Select} element with the specified {@link 
Select#name(String)} attribute and child nodes.
+        *
+        * @param name The {@link Select#name(String)} attribute.
+        * @param children The child nodes.
+        */
+       public Select(String name, Object...children) {
+               name(name).children(children);
+       }
+
+       /**
         * {@doc HTML5.forms#attr-fe-autofocus autofocus} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Small.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Small.java
index 08bf2e7..940ec03 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Small.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Small.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="small")
 public class Small extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Small} element.
+        */
+       public Small() {}
+
+       /**
+        * Creates a {@link Small} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Small(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Source.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Source.java
index a32502c..8e7ad2d 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Source.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Source.java
@@ -30,6 +30,22 @@ import org.apache.juneau.annotation.*;
 public class Source extends HtmlElementVoid {
 
        /**
+        * Creates an empty {@link Source} element.
+        */
+       public Source() {}
+
+       /**
+        * Creates a {@link Source} element with the specified {@link 
Source#src(Object)} and {@link Source#type(String)}
+        * attributes.
+        *
+        * @param src The {@link Source#src(Object)} attribute.
+        * @param type The {@link Source#type(String)} attribute.
+        */
+       public Source(Object src, String type) {
+               src(src).type(type);
+       }
+
+       /**
         * {@doc HTML5.embedded-content-0#attr-source-src src} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Span.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Span.java
index 222b7fc..fa32506 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Span.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Span.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="span")
 public class Span extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Span} element.
+        */
+       public Span() {}
+
+       /**
+        * Creates a {@link Span} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Span(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Strong.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Strong.java
index f07d7af..eb8b008 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Strong.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Strong.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="strong")
 public class Strong extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Strong} element.
+        */
+       public Strong() {}
+
+       /**
+        * Creates a {@link Strong} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Strong(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Style.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Style.java
index dd42025..e8e85f2 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Style.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Style.java
@@ -12,6 +12,8 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.dto.html5;
 
+import static org.apache.juneau.internal.StringUtils.*;
+
 import org.apache.juneau.annotation.*;
 
 /**
@@ -26,6 +28,31 @@ import org.apache.juneau.annotation.*;
 public class Style extends HtmlElementRawText {
 
        /**
+        * Creates an empty {@link Style} element.
+        */
+       public Style() {}
+
+       /**
+        * Creates a {@link Style} element with the specified {@link 
Style#text(Object)} node.
+        *
+        * @param text The {@link Style#text(Object)} node.
+        */
+       public Style(Object text) {
+               text(text);
+       }
+
+       /**
+        * Creates a {@link Style} element with the specified inner text.
+        *
+        * @param text
+        *      The contents of the style element.
+        *      <br>Values will be concatenated with newlines.
+        */
+       public Style(String...text) {
+               text(joinnl(text));
+       }
+
+       /**
         * {@doc HTML5.document-metadata#attr-style-media media} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Sub.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Sub.java
index cc36cf0..c07e930 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Sub.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Sub.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="sub")
 public class Sub extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Sub} element.
+        */
+       public Sub() {}
+
+       /**
+        * Creates a {@link Sub} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Sub(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Sup.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Sup.java
index ba1a889..76598ab 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Sup.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Sup.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="sup")
 public class Sup extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Sup} element.
+        */
+       public Sup() {}
+
+       /**
+        * Creates a {@link Sup} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Sup(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Table.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Table.java
index 5a02672..fecf58c 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Table.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Table.java
@@ -26,6 +26,20 @@ import org.apache.juneau.annotation.*;
 public class Table extends HtmlElementContainer {
 
        /**
+        * Creates an empty {@link Table} element.
+        */
+       public Table() {}
+
+       /**
+        * Creates a {@link Table} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Table(Object...children) {
+               children(children);
+       }
+
+       /**
         * {@doc HTML5.tabular-data#attr-table-border border} attribute.
         *
         * @param border
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Tbody.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Tbody.java
index a58d787..cad1cc4 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Tbody.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Tbody.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="tbody")
 public class Tbody extends HtmlElementContainer {
 
+       /**
+        * Creates an empty {@link Tbody} element.
+        */
+       public Tbody() {}
+
+       /**
+        * Creates a {@link Tbody} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Tbody(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Td.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Td.java
index 945c643..ab451fc 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Td.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Td.java
@@ -26,6 +26,20 @@ import org.apache.juneau.annotation.*;
 public class Td extends HtmlElementMixed {
 
        /**
+        * Creates an empty {@link Td} element.
+        */
+       public Td() {}
+
+       /**
+        * Creates a {@link Td} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Td(Object...children) {
+               children(children);
+       }
+
+       /**
         * {@doc HTML5.tabular-data#attr-tdth-colspan colspan} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Template.java
 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Template.java
index 5b57493..61f9c03 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Template.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Template.java
@@ -25,6 +25,21 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="template")
 public class Template extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Template} element.
+        */
+       public Template() {}
+
+       /**
+        * Creates a {@link Template} element with the specified {@link 
Template#id(String)} attribute and child nodes.
+        *
+        * @param id The {@link Template#id(String)} attribute.
+        * @param children The child nodes.
+        */
+       public Template(String id, Object...children) {
+               id(id).children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Textarea.java
 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Textarea.java
index 0ac904d..11efeb8 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Textarea.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Textarea.java
@@ -26,6 +26,22 @@ import org.apache.juneau.annotation.*;
 public class Textarea extends HtmlElementRawText {
 
        /**
+        * Creates an empty {@link Textarea} element.
+        */
+       public Textarea() {}
+
+       /**
+        * Creates a {@link Textarea} element with the specified {@link 
Textarea#name(String)} attribute and
+        * {@link Textarea#text(Object)} node.
+        *
+        * @param name The {@link Textarea#name(String)} attribute.
+        * @param text The {@link Textarea#text(Object)} node.
+        */
+       public Textarea(String name, String text) {
+               name(name).text(text);
+       }
+
+       /**
         * {@doc HTML5.forms#attr-fe-autocomplete autocomplete} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Tfoot.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Tfoot.java
index f42b9a6..2c3859b 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Tfoot.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Tfoot.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="tfoot")
 public class Tfoot extends HtmlElementContainer {
 
+       /**
+        * Creates an empty {@link Tfoot} element.
+        */
+       public Tfoot() {}
+
+       /**
+        * Creates a {@link Tfoot} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Tfoot(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Th.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Th.java
index 972db87..649a713 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Th.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Th.java
@@ -26,6 +26,20 @@ import org.apache.juneau.annotation.*;
 public class Th extends HtmlElementMixed {
 
        /**
+        * Creates an empty {@link Th} element.
+        */
+       public Th() {}
+
+       /**
+        * Creates a {@link Th} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Th(Object...children) {
+               children(children);
+       }
+
+       /**
         * {@doc HTML5.tabular-data#attr-th-abbr abbr} attribute.
         *
         * <p>
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Thead.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Thead.java
index a496498..3d4ec55 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Thead.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Thead.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="thead")
 public class Thead extends HtmlElementContainer {
 
+       /**
+        * Creates an empty {@link Thead} element.
+        */
+       public Thead() {}
+
+       /**
+        * Creates a {@link Thead} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Thead(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Time.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Time.java
index 69107fe..347f36a 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Time.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Time.java
@@ -26,6 +26,20 @@ import org.apache.juneau.annotation.*;
 public class Time extends HtmlElementMixed {
 
        /**
+        * Creates an empty {@link Time} element.
+        */
+       public Time() {}
+
+       /**
+        * Creates a {@link Time} element with the specified {@link 
Time#children(Object[])} nodes.
+        *
+        * @param children The {@link Time#children(Object[])} nodes.
+        */
+       public Time(Object...children) {
+               children(children);
+       }
+
+       /**
         * {@doc HTML5.text-level-semantics#attr-time-datetime datetime}
         * attribute.
         *
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Title.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Title.java
index 855aa74..c4b80e3 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Title.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Title.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="title")
 public class Title extends HtmlElementRawText {
 
+       /**
+        * Creates an empty {@link Title} element.
+        */
+       public Title() {}
+
+       /**
+        * Creates a {@link Title} element with the specified {@link 
Title#text(Object)} node.
+        *
+        * @param text The {@link Title#text(Object)} node.
+        */
+       public Title(String text) {
+               text(text);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Tr.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Tr.java
index 890cd52..84e571d 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Tr.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Tr.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="tr")
 public class Tr extends HtmlElementContainer {
 
+       /**
+        * Creates an empty {@link Tr} element.
+        */
+       public Tr() {}
+
+       /**
+        * Creates a {@link Tr} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Tr(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Track.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Track.java
index 767337d..082ffaf 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Track.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Track.java
@@ -30,6 +30,22 @@ import org.apache.juneau.annotation.*;
 public class Track extends HtmlElementVoid {
 
        /**
+        * Creates an empty {@link Track} element.
+        */
+       public Track() {}
+
+       /**
+        * Creates a {@link Track} element with the specified {@link 
Track#src(Object)} and {@link Track#kind(String)}
+        * attributes.
+        *
+        * @param src The {@link Track#src(Object)} attribute.
+        * @param kind The {@link Track#kind(String)} attribute.
+        */
+       public Track(Object src, String kind) {
+               src(src).kind(kind);
+       }
+
+       /**
         * {@doc HTML5.embedded-content-0#attr-track-default default}
         * attribute.
         *
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/U.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/U.java
index 7716967..4887596 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/U.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/U.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="u")
 public class U extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link U} element.
+        */
+       public U() {}
+
+       /**
+        * Creates a {@link U} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public U(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Ul.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Ul.java
index 5fc41c7..5b5131c 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Ul.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Ul.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="ul")
 public class Ul extends HtmlElementContainer {
 
+       /**
+        * Creates an empty {@link Ul} element.
+        */
+       public Ul() {}
+
+       /**
+        * Creates a {@link Ul} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Ul(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Var.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Var.java
index 798e147..2b44f2a 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Var.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Var.java
@@ -25,6 +25,20 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="var")
 public class Var extends HtmlElementMixed {
 
+       /**
+        * Creates an empty {@link Var} element.
+        */
+       public Var() {}
+
+       /**
+        * Creates a {@link Var} element with the specified child nodes.
+        *
+        * @param children The child nodes.
+        */
+       public Var(Object...children) {
+               children(children);
+       }
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Video.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Video.java
index 28c8963..605f230 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Video.java
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Video.java
@@ -30,6 +30,20 @@ import org.apache.juneau.annotation.*;
 public class Video extends HtmlElementContainer {
 
        /**
+        * Creates an empty {@link Video} element.
+        */
+       public Video() {}
+
+       /**
+        * Creates a {@link Video} element with the specified {@link 
Video#src(Object)} attribute.
+        *
+        * @param src The {@link Video#src(Object)} attribute.
+        */
+       public Video(Object src) {
+               src(src);
+       }
+
+       /**
         * {@doc HTML5.embedded-content-0#attr-media-autoplay autoplay}
         * attribute.
         *
diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Wbr.java 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Wbr.java
index 8405ed1..6412fd5 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Wbr.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Wbr.java
@@ -25,6 +25,11 @@ import org.apache.juneau.annotation.*;
 @Bean(typeName="wbr")
 public class Wbr extends HtmlElementVoid {
 
+       /**
+        * Creates an empty {@link Wbr} element.
+        */
+       public Wbr() {}
+
        
//-----------------------------------------------------------------------------------------------------------------
        // Overridden methods
        
//-----------------------------------------------------------------------------------------------------------------

Reply via email to