The second step is to design a custom tag that will act as a short-hand substitute for manually entering all the stuff you want as the end product. You'll have to give your custom tag a name. The other, crucial thing is to determine how you'll want to represent the variable part(s) of the custom tag. You'll typically do this using attributes within your Custom Tag. The names and allowed values for the attributes are entirely your decision.

So let's name our example custom tag <demo:todaysMessage> and we'll allow it to have a single attribute named message. So, to create our example end product shown in Step 1, we'd want to be able to use the following instead:

  <demo:todaysMessage message="Hello World" />

If we change the value of the message attribute, we'll want the message in the end product to change accordingly.