[xsl] Number of Recursive XSL Templates exceeded --> XML - Part 2

Subject: [xsl] Number of Recursive XSL Templates exceeded --> XML - Part 2
From: Sundararaman S A <sundararaman.sa@xxxxxxxxx>
Date: Thu, 9 Dec 2004 13:50:21 +0530
*********************************************************************
XSL FILE - PART 1
********************************************************************

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
	<xsl:output method="html" indent="yes"/>

	<xsl:template name="JavaScriptFunctions">
	
		<script language="javascript">
			function insertConfirmation()
			{
				alert("Inserted sucessfully");
			}
		</script>
		<script language="javascript" defer="defer">
		function DisableLinks(stringText)
		{
			if(document.all) {
			for (i=0; i &lt; document.links.length; i++) {
				if(document.links[i].text == "Processing")
				{
					document.links[i].href = "#";
					document.links[i].text = "Processing";
				}
				if(document.links[i].innerText != stringText)
				document.links[i].href = "#";
				else
				document.links[i].text = "Processing";
				}
			}

		}
		
		
	function callme(msg)
				{
					if(msg!='')
					alert(msg);
				}
				
							function sessionRefresh(){
						var topLocationURL = top.location.href;
						top.location.href = topLocationURL;
					}	

				
							function copyinsert(noofrows)
							{
							var isint =
IsInteger(window.document.copyInsertTemplateForm.noOfRecords.value);								if(isint
==  false)
							{
								alert("Enter Value greater than 0");
								return;
							}
							if(window.document.copyInsertTemplateForm.noOfRecords.value == 0)
							{
								alert("Enter Value greater than 0");
								return;
							}
							
							
				if(window.document.copyInsertTemplateForm.noOfRecords.value > noofrows)
				{
					alert("Number of rows to be inserted can not be greater than
number of rows per page");
					return;
				}
							
								var elems = window.document.resultDisplayTemplateForm.elements;
								var checked = -1;
								var howmanycheckbox = 0;
								
								for(i=0;i &lt; elems.length;i++){
									if(elems[i].type == 'checkbox' &amp;&amp; elems[i].name !=
	'topCheckBox')
									{
										if(elems[i].checked == true)
										{
											howmanycheckbox  = howmanycheckbox  + 1;
											checked = elems[i].value;
										}
									}
								}

							if(howmanycheckbox  &gt; 1)
							{
							alert("Select only one checkbox to do copy insert");
							return;
							}
							
							if(checked== -1)
							{
							alert("Mark the row to do copy insert");
							return;
							}
								
							if(checked != -1)
							window.document.copyInsertTemplateForm.objectId.value =  checked;

			<xsl:call-template name="FormSubmitTemplate">
				<xsl:with-param name="frames" select="$FRAMES"/>
				<xsl:with-param name="frmobj"
select="'window.document.copyInsertTemplateForm'"/>
				<xsl:with-param name="jstext" select="'false'"/>
			</xsl:call-template>
							}
							
				
				
				function addnewpagesubmit(noofrows)
				{
							var isint =
IsInteger(window.document.copyInsertTemplateForm.noOfRecords.value);								if(isint
==  false)
							{
								alert("Enter Value greater than 0");
								return;
							}
							if(window.document.copyInsertTemplateForm.noOfRecords.value == 0)
							{
								alert("Enter Value greater than 0");
								return;
							}
							
				
				window.document.addNewRowsTemplateForm.noOfRecords.value=
				window.document.copyInsertTemplateForm.noOfRecords.value
				if(window.document.addNewRowsTemplateForm.noOfRecords.value > noofrows)
				{
					alert("Number of rows to be inserted can not be greater than
number of rows per page");
					return;
				}
			window.document.addNewRowsTemplateForm.process.value="dmtcreatenewrows";

			<xsl:call-template name="FormSubmitTemplate">
				<xsl:with-param name="frames" select="$FRAMES"/>
				<xsl:with-param name="frmobj"
select="'window.document.addNewRowsTemplateForm'"/>
				<xsl:with-param name="jstext" select="'false'"/>
			</xsl:call-template>

	
				}
							function validate(pkey,currentdate,modifiedby,objectname)
							{
								var compareElement1, compareElement2;
								var doc1;
								elems = window.document.resultDisplayTemplateForm.elements;
								var flag = 0;
								for(i=0;i &lt; elems.length;i++){
									if(elems[i].value == 	pkey)
									{
										for(j=i;j&lt;elems.length;j++){
											compareElement1 = objectname + '['+ pkey+'].datemodified';
											compareElement2 = objectname + '[' + pkey + '].modifiedbyid';
											

											if(elems[j].name==compareElement1)
											{
												
												doc1 =
'document.resultDisplayTemplateForm'+'[\''+compareElement1+'\']';
												obj1 = eval(doc1);
												if(obj1 ==null)
												{
												flag=2;
												break;
												}
												obj1.value = currentdate;
												flag = flag + 1;
											}
											if(elems[j].name==compareElement2 )
											{
												doc1 =
'document.resultDisplayTemplateForm'+'[\''+compareElement2+'\']';
												obj1 = eval(doc1);
												if(obj1==null)
												{
													flag=2;
													break;
												}
												obj1.value = modifiedby;
												flag = flag + 1;
											}
											if(flag>1) break;
										}
									}
									if(flag>1) break;									
									}
							}
											
	
								function IsInteger(sText)
								{
								var ValidChars = "0123456789";
								var IsNumber=true;
								var Char;
								
								
								for (i = 0; i &lt; sText.length &amp;&amp; IsNumber == true; i++) 
								   { 
								   Char = sText.charAt(i); 
								   if (ValidChars.indexOf(Char) == -1) 
								      {
								      IsNumber = false;
								      }
								   }
								return IsNumber;
								
								}

								
								function disableEnterKeyforRefresh()
								{
								     if (window.event.keyCode == 13) 	 checkForRowsPerPage();							}

								function disableEnterKey()
								{
								     if (window.event.keyCode == 13) 	 window.event.keyCode = 0;							}

								function disableEnterKeyforGoToPage(lastPage)
								{
								     if (window.event.keyCode == 13)
	goToPageSubmission(lastPage);							}

					
					
					


								
					
							function checkForRowsPerPage()
							{
							flag1 = IsInteger(window.document.rowChangeTemplateForm.noOfRows.value);								if(flag1
==  false)
							{
								alert("Enter Value greater than 0");
								if (window.event.keyCode == 13) 	 window.event.keyCode = 0;
								return;
							}
							if(window.document.rowChangeTemplateForm.noOfRows.value == 0)
							{
								alert("Enter Value greater than 0");
								if (window.event.keyCode == 13) 	 window.event.keyCode = 0;
								return;
							}
							
							if(window.document.rowChangeTemplateForm.noOfRows.value &gt; 20)
							{
								alert("You can see only 20 rows in a single page");
								if (window.event.keyCode == 13) 	 window.event.keyCode = 0;
								return;
							}
							
							if(window.document.rowChangeTemplateForm.noOfRows.value &lt; 1)
							window.document.rowChangeTemplateForm.noOfRows.value = 1;
							if(flag1 == true)
							{
if (window.event.keyCode == 13) 
{							
			 window.event.keyCode = 0;
			<xsl:call-template name="FormSubmitTemplate">
				<xsl:with-param name="frames" select="$FRAMES"/>
				<xsl:with-param name="frmobj"
select="'window.document.rowChangeTemplateForm'"/>
				<xsl:with-param name="jstext" select="'false'"/>
			</xsl:call-template>
			}
else			
{							
			<xsl:call-template name="FormSubmitTemplate">
				<xsl:with-param name="frames" select="$FRAMES"/>
				<xsl:with-param name="frmobj"
select="'window.document.rowChangeTemplateForm'"/>
				<xsl:with-param name="jstext" select="'false'"/>
			</xsl:call-template>
			}
							}
							}
							
							
							function goToPageSubmission(lastPage){
							flag1 = IsInteger(window.document.goToPageTemplateForm.page.value);
							if(flag1 ==  false)
							{
								alert("Enter Value greater than 0");
							     if (window.event.keyCode == 13) 	 window.event.keyCode = 0;		
								return;
							}
							if(window.document.goToPageTemplateForm.page.value == 0)
							{
								alert("Enter Value greater than 0");
							     if (window.event.keyCode == 13) 	 window.event.keyCode = 0;		
								return;
							}
							
							if(window.document.goToPageTemplateForm.page.value &gt; lastPage)
							{
								alert("Page number can not exceed total number of pages");
							     if (window.event.keyCode == 13) 	 window.event.keyCode = 0;		
								return;
							}
							if(flag1 == true){
								window.document.goToPageTemplateForm.page.value =
		window.document.goToPageTemplateForm.page.value -1;
								if(window.document.goToPageTemplateForm.page.value &gt; lastPage)
								{
									window.document.goToPageTemplateForm.page.value = lastPage;
								}
								if(window.document.goToPageTemplateForm.page.value &lt; 0)
								{
									window.document.goToPageTemplateForm.page.value = 0;			
								}
							     if (window.event.keyCode == 13) 	 window.event.keyCode = 0;		
			<xsl:call-template name="FormSubmitTemplate">
				<xsl:with-param name="frames" select="$FRAMES"/>
				<xsl:with-param name="frmobj"
select="'window.document.goToPageTemplateForm'"/>
				<xsl:with-param name="jstext" select="'false'"/>
			</xsl:call-template>
			
								}
							}
							
							function submitSearch(configName)
							{
											flag = filterValidation(configName);
if(flag==1){
			<xsl:call-template name="FormSubmitTemplate">
				<xsl:with-param name="frames" select="$FRAMES"/>
				<xsl:with-param name="frmobj"
select="'window.document.filterDisplayTemplateForm'"/>
			</xsl:call-template>
}
							}
							
							function clearFilter(configName){
								elems = window.document.filterDisplayTemplateForm.elements;
								select = 0;
								var myString;
								for(i=0;i &lt; elems.length;i++){
										if(  elems[i].type == 'text' )
										{
												elems[i].value = '';
												
										}
										if( elems[i].type == 'select-one')
										{
												myString=elems[i].name;

												if(myString.indexOf("operatorlist")==-1)
												{
												elems[i].value = '';
												elems[i].selectedIndex = 0;
												}
										}						
										if(elems[i].type == 'checkbox')
										{
												myString = elems[i].name;
													elems[i].value=0;
													elems[i].checked=false;
										}
										myString2 = elems[i].name;
										if(myString2.indexOf("casesensitivity")!=-1)
										{
											elems[i].value=0;
										}
										
								}
							window.document.filterDisplayTemplateForm.action.value="startprocess";
							flag = filterValidation(configName);
							if(flag==1){
										<xsl:call-template name="FormSubmitTemplate">
											<xsl:with-param name="frames" select="$FRAMES"/>
											<xsl:with-param name="frmobj"
select="'window.document.filterDisplayTemplateForm'"/>
										</xsl:call-template>
							}

							}
	
			function selectAllCheckBoxes() {
				elems = window.document.resultDisplayTemplateForm.elements;
				if(window.document.resultDisplayTemplateForm.topcheckbox.checked)
				{
					for(i=0;i &lt; elems.length;i++){
						if(elems[i].type == 'checkbox' &amp;&amp; elems[i].name != 'topcheckbox' )
						{
							elems[i].checked=true;
						}
					}
				}
				else
				{
					for(i=0;i &lt; elems.length;i++){
						if(elems[i].type == 'checkbox' &amp;&amp; elems[i].name != 'topcheckbox' )
						{
							elems[i].checked=false;
						}
					}
				}
			}

			function selectAllCheckBoxes2() {
				var elems2 = window.document.confirmationDeletePageForm.elements;
				alert(window.document.confirmationDeletePageForm.topcheckbox2.checked);
				if(window.document.confirmationDeletePageForm.topcheckbox2.checked)
				{
					for(i=0;i &lt; elems2.length;i++){
						if(elems2[i].type == 'checkbox' &amp;&amp; elems2[i].name !=
'topcheckbox2' )
						{
							elems2[i].checked=true;

						}
					}
				}
				else
				{
					for(i=0;i &lt; elems2.length;i++){
						if(elems2[i].type == 'checkbox' &amp;&amp; elems2[i].name !=
'topcheckbox2' )
						{
							elems2[i].checked=false;

						}
					}
				}
			}

							function multipleDelete()
							{
								elems = window.document.resultDisplayTemplateForm.elements;
								
								something = 1;
								checked = 0;

								for(i=0;i &lt; elems.length;i++){
									if(elems[i].type == 'checkbox' &amp;&amp; elems[i].name !=
'topcheckbox')
									{
										if(elems[i].checked == false)
										{	
											something =0;	
										}
										if(elems[i].checked == true)
										{
											checked = 1;
										}
									}
								}
								if(checked == 0)
								{
									alert('Please select the rows to be deleted');
									return;	
								}
							
								var cfmflg = confirm('Are you sure that you want to delete
this record(s) ?');
								if(cfmflg)
								{													
								elems = window.document.resultDisplayTemplateForm.elements;
								window.document.resultDisplayTemplateForm.action.value="delete";
<!--								window.document.resultDisplayTemplateForm.process.value="dmtmultipledelete";-->
			<!--								window.document.resultDisplayTemplateForm.multiple.value="id";-->
								
								something = 1;
								checked = 0;

								for(i=0;i &lt; elems.length;i++){
									if(elems[i].type == 'checkbox' &amp;&amp; elems[i].name !=
'topcheckbox')
									{
										if(elems[i].checked == false)
										{	
											something =0;	
										}
										if(elems[i].checked == true)
										{
											checked = 1;
										}
									}
								}
								if(checked == 0)
								{
									alert('Please select the rows to be deleted');
									return;	
								}

			<xsl:call-template name="FormSubmitTemplate">
				<xsl:with-param name="frames" select="$FRAMES"/>
				<xsl:with-param name="frmobj"
select="'window.document.resultDisplayTemplateForm'"/>
				<xsl:with-param name="jstext" select="'false'"/>
			</xsl:call-template>
			}
				else
				return;

							}
							
							
							function multipleDeleteForDeletionIntegrity()
							{
								elems = window.document.confirmationDeletePageForm.elements;
								
								something = 1;
								checked = 0;

								for(i=0;i &lt; elems.length;i++){
									if(elems[i].type == 'checkbox' &amp;&amp; elems[i].name !=
'topcheckbox')
									{
										if(elems[i].checked == false)
										{	
											something =0;	
										}
										if(elems[i].checked == true)
										{
											checked = 1;
										}
									}
								}
								if(checked == 0)
								{
									alert('Please select the rows to be deleted');
									return;	
								}
							
								var cfmflg = confirm('Are you sure that you want to delete
this record(s) ?');
								if(cfmflg)
								{													
								elems = window.document.confirmationDeletePageForm.elements;
<!--								window.document.resultDisplayTemplateForm.process.value="dmtmultipledelete";-->
			<!--								window.document.resultDisplayTemplateForm.multiple.value="id";-->
								
								something = 1;
								checked = 0;

								for(i=0;i &lt; elems.length;i++){
									if(elems[i].type == 'checkbox' &amp;&amp; elems[i].name !=
'topcheckbox')
									{
										if(elems[i].checked == false)
										{	
											something =0;	
										}
										if(elems[i].checked == true)
										{
											checked = 1;
										}
									}
								}
								if(checked == 0)
								{
									alert('Please select the rows to be deleted');
									return;	
								}

			<xsl:call-template name="FormSubmitTemplate">
				<xsl:with-param name="frames" select="$FRAMES"/>
				<xsl:with-param name="frmobj"
select="'window.document.confirmationDeletePageForm'"/>
				<xsl:with-param name="jstext" select="'false'"/>
			</xsl:call-template>
			}
				else
				return;

							}
							
							
			function csvupload(varHide)
			{
			elems = window.document.csvUploadForm.elements;
			var myString;
			if(varHide!=''){
				alert('Some of the columns are hidden - File can not be uploaded');
				return;
			}
			
			function convertToLowerCase(csvfile)
			{
			var letter;
			  for (var i=0; i &lt; csvfile.length; i++) {
			    letter = letter + csvfile.charAt(i).toLowerCase();
			  }
			  return letter;
			}


			for(i=0;i&lt;elems.length;i++)
			{
				if(elems[i].name=='upload-content')
				{
					myString =convertToLowerCase(elems[i].value);
					if (myString.indexOf('.') == -1) 
					{
						alert('Give proper CSV file');
						return;
					}
					else if(myString.indexOf('.csv')==-1)
					{
						alert('Give proper CSV file');
						return;
					}
					else
					{
					var cfmflg = confirm('Maximum Number of records that can be
uploaded is 2000 - Do you still want to continue?');
					if(cfmflg){					

						<xsl:call-template name="FormSubmitTemplate">
				<xsl:with-param name="frames" select="$FRAMES"/>
				<xsl:with-param name="frmobj" select="'window.document.csvUploadForm'"/>
			</xsl:call-template>
			}
					}
				}
			}
			}

			function saveForAddNew()
			{
				flag = datavalidationForAddNew();
if(flag==1){
<xsl:call-template name="FormSubmitTemplate">
	<xsl:with-param name="frames" select="$FRAMES"/>
	<xsl:with-param name="frmobj"
select="'window.document.addbusinessobjectForm'"/>
	<xsl:with-param name="jstext" select="'false'"/>
</xsl:call-template>
}
else{
return;
}
				}


							function save()
							{
							
								elems = window.document.resultDisplayTemplateForm.elements;
								
								
								for(i=0;i &lt; elems.length;i++){
									if(elems[i].type == 'checkbox' &amp;&amp; elems[i].name !=
'topcheckbox')
									{
										elems[i].checked = false;
									}
								}
							
							flag = datavalidation();
<!--								window.document.resultDisplayTemplateForm.multiple.value="exec";-->
	if(flag==1){
			<xsl:call-template name="FormSubmitTemplate">
				<xsl:with-param name="frames" select="$FRAMES"/>
				<xsl:with-param name="frmobj"
select="'window.document.resultDisplayTemplateForm'"/>
				<xsl:with-param name="jstext" select="'false'"/>
			</xsl:call-template>
			}
			else{
			return;
			}
							}
							
		function isAlphaNumeric(s) {
				  var acceptableChars = "abcdefghijklmnopqrstuvwxyz_A
BCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
				  for ( var i=s.length-1; i &gt;=0; i-- )
				    if ( acceptableChars.indexOf(s.charAt(i))==-1 &amp;&amp;
s.charAt(i) != " ")
				    {
				      return false;
				      }
				  return true;
			}		

		function isNumeric(s) {
				  var acceptableChars = "0123456789";
				  for ( var i=s.length-1; i &gt;=0; i-- )
				    if ( acceptableChars.indexOf(s.charAt(i))==-1 &amp;&amp;
s.charAt(i) != " ")
				    {
				      return false;
				      }
				  return true;
			}		
							
				function saveCdmMenu()				{
		elems = window.document.menuForm.elements;
		var flag = 1;
		var tempString = " ";
		var elemName;
		var flag2=1;
		for(i=0;i&lt;elems.length;i++){
			if(elems[i].name!='menuurl' &amp;&amp; elems[i].name!='imgurl'
&amp;&amp; elems[i].name!='menustyle' &amp;&amp; 
isAlphaNumeric(elems[i].value)!=true&amp;&amp;elems[i].type!='hidden'&amp;&amp;elems[i].name!='style'&amp;&amp;elems[i].name!='stylesheet'&amp;&amp;elems[i].name!='menuorder'){
			if(elems[i].name == 'menudescription')
			{
			elemName = "Description";}
			else {
						if(elems[i].name == 'menuleveltypeid'){
						elemName = "Menu Level Type Id";
						}else 
						{ 
							if(elems[i].name == 'parentmenuid'){
							elemName = "Parent Menu";
							}
							 else {
							elemName = elems[i].name;
							}
						}
					}
					
			tempString = tempString + "Special characters other than '_' are 
not allowed in ";
			tempString = tempString + elemName + "\n";
			flag = 0;
			flag2 = 0;
			alert(tempString);
			break;
			}
			if(elems[i].name=='menuname'&amp;&amp;elems[i].value==''&amp;&amp;flag2!=0){
			flag=100;
			tempString = tempString + "Name can not be empty" + "\n"
			flag2 = 1;
			alert(tempString);
			break;
			}
			if(elems[i].name=='parentmenuid'&amp;&amp;elems[i].value==''&amp;&amp;flag2!=0){
			flag=100;
			tempString = tempString + "Parent Menu can not be empty" + "\n"
			flag2 = 1;
			alert(tempString);
			break;
			}
			if(elems[i].name=='menuorder'&amp;&amp;isNumeric(elems[i].value)!=true&amp;&amp;flag2!=0)
			{
			tempString = tempString + "Menu Order can not have values other
than integer" + "\n";
			flag = 100;
			flag2 = 1;			
			alert(tempString);
			break;
			}
					}
		if(flag == 1)
		{
				
			<xsl:call-template name="FormSubmitTemplate">
				<xsl:with-param name="frames" select="$FRAMES"/>
				<xsl:with-param name="frmobj" select="'window.document.menuForm'"/>
				<xsl:with-param name="jstext" select="'false'"/>
			</xsl:call-template>
		}
				}
				
		function addCdmMenu(){
		window.document.menuForm.action.value="create";		
			<xsl:call-template name="FormSubmitTemplate">
				<xsl:with-param name="frames" select="$FRAMES"/>
				<xsl:with-param name="frmobj" select="'window.document.menuForm'"/>
				<xsl:with-param name="jstext" select="'false'"/>
			</xsl:call-template>
		}
</script>
	</xsl:template>


	<xsl:template name="AnchorSubmitTemplate">
		<xsl:param name="URL"/>
		<xsl:param name="frames"/>	
			<xsl:choose>
				<xsl:when test="$frames='false'">javascript:fsAnchorSubmit('<xsl:value-of
select="$URL"/>');</xsl:when>
				<xsl:otherwise><xsl:value-of select="$URL"/>	</xsl:otherwise>
			</xsl:choose>
	</xsl:template>
		
	<xsl:template name="FormSubmitTemplate">
		<xsl:param name="frames"/>
		<xsl:param name="frmobj"/>
		<xsl:param name="jstext"/>
		<xsl:variable name="textvar"/>			
			<xsl:choose>
				<xsl:when test="$frames='false'">
				<xsl:choose>
					<xsl:when test="string($frmobj)!=''"><xsl:if test="$jstext =
'true'">Javascript:</xsl:if>return FSFormSubmit(<xsl:value-of
select="$frmobj"/>);</xsl:when>
					<xsl:otherwise>return FSFormSubmit(this);</xsl:otherwise>
				</xsl:choose>
				</xsl:when>
				<xsl:otherwise>
				<xsl:choose>
					<xsl:when test="string($frmobj)!=''"><xsl:if test="$jstext =
'true'">Javascript:</xsl:if><xsl:value-of
select="$frmobj"/>.submit();</xsl:when>
					<xsl:otherwise>submit();</xsl:otherwise>
				</xsl:choose>
				</xsl:otherwise>
			</xsl:choose>
	</xsl:template>

	<xsl:template name="fsclientjs">
		<xsl:choose>
			<xsl:when test="(/Response/Header/fsclientframework)">
				<script language="Javascript"
src="uilib/browser/fsclient/js/appIntegration.js"></script>
			</xsl:when>
			<xsl:otherwise>
				<script language="Javascript"
src="uilib/browser/fsclient/js/FSForm_A_submit.js"/>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>

	<xsl:template name="fscclosebody">
		<xsl:choose>
			<xsl:when test="(/Response/Header/fsclientframework)">
				<script language="Javascript">			
					showCollection();
				</script>	
			</xsl:when>
			<xsl:otherwise>
				
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>

Current Thread