in tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SaxTemplateParser.java [365:462]
void element(TemplateParserState initialState)
{
TemplateParserState state = setupForElement(initialState);
String uri = tokenStream.getNamespaceURI();
String name = tokenStream.getLocalName();
Version version = NAMESPACE_URI_TO_VERSION.get(uri);
if (T_5_1.sameOrEarlier(version))
{
if (name.equalsIgnoreCase("remove"))
{
removeContent();
return;
}
if (name.equalsIgnoreCase("content"))
{
limitContent(state);
return;
}
if (name.equalsIgnoreCase("extension-point"))
{
extensionPoint(state);
return;
}
if (name.equalsIgnoreCase("replace"))
{
throw new RuntimeException(
"The <replace> element may only appear directly within an extend element.");
}
if (MUST_BE_ROOT.contains(name))
mustBeRoot(name);
}
if (version != null)
{
if (name.equalsIgnoreCase("body"))
{
body();
return;
}
if (name.equalsIgnoreCase("container"))
{
mustBeRoot(name);
}
if (name.equalsIgnoreCase("block"))
{
block(state);
return;
}
if (name.equalsIgnoreCase("parameter"))
{
if (T_5_3.sameOrEarlier(version))
{
throw new RuntimeException(
String.format("The <parameter> element has been deprecated in Tapestry 5.3 in favour of '%s' namespace.", TAPESTRY_PARAMETERS_URI));
}
classicParameter(state);
return;
}
possibleTapestryComponent(state, null, tokenStream.getLocalName().replace('.', '/'));
return;
}
if (uri != null && uri.startsWith(LIB_NAMESPACE_URI_PREFIX))
{
libraryNamespaceComponent(state);
return;
}
if (TAPESTRY_PARAMETERS_URI.equals(uri))
{
parameterElement(state);
return;
}
// Just an ordinary element ... unless it has t:id or t:type
possibleTapestryComponent(state, tokenStream.getLocalName(), null);
}