// of the called template
if (template != null) {
AxisIterator declaredParams = template.iterateAxis(Axis.CHILD);
while(true) {
NodeInfo param = (NodeInfo)declaredParams.next();
if (param == null) {
break;
}
if (param instanceof XSLParam && ((XSLParam)param).isRequiredParam()
&& !((XSLParam)param).isTunnelParam()) {
AxisIterator actualParams = iterateAxis(Axis.CHILD);
boolean ok = false;
while(true) {
NodeInfo withParam = (NodeInfo)actualParams.next();
if (withParam == null) {
break;
}
if (withParam instanceof XSLWithParam &&
((XSLWithParam)withParam).getVariableFingerprint() ==
((XSLParam)param).getVariableFingerprint()) {
ok = true;
break;
}
}
if (!ok) {
compileError("No value supplied for required parameter " +
((XSLParam)param).getVariableName(), "XT0690");
}
}
}
// check that every supplied parameter is declared in the called
// template
AxisIterator actualParams = iterateAxis(Axis.CHILD);
while(true) {
NodeInfo w = (NodeInfo)actualParams.next();
if (w == null) {
break;
}
if (w instanceof XSLWithParam && !((XSLWithParam)w).isTunnelParam()) {
XSLWithParam withParam = (XSLWithParam)w;
AxisIterator formalParams = template.iterateAxis(Axis.CHILD);
boolean ok = false;
while(true) {
NodeInfo param = (NodeInfo)formalParams.next();
if (param == null) {
break;
}
if (param instanceof XSLParam &&
((XSLParam)param).getVariableFingerprint() ==