if (sPrettyXDFOutput) { indent += sPrettyXDFOutputIndentation;
if (Specification.getInstance().isPrettyXDFOutput()) { indent += Specification.getInstance().getPrettyXDFOutputIndentation();
protected void writeTaggedData(OutputStream outputstream,			       Locator locator,			       String indent,			       int[] axisLength,			       String[] tags,			       int which,                               AxisInterface fastestAxis,                               String[] noDataValues)  {    String tag = (String) tags[which];    if (sPrettyXDFOutput) {      indent += sPrettyXDFOutputIndentation;    }    //base case (writes the last 2 inner dimensions of the data cube)    if (which == tags.length-2) {      int stop = axisLength[which];      String tag1 = (String) tags[which+1];      for (int count = 0; count < stop; count++) {	if (sPrettyXDFOutput) {	  writeOut(outputstream, Constants.NEW_LINE);	  writeOut(outputstream, indent);	}	writeOut(outputstream, "<" + tag + ">");	if (sPrettyXDFOutput) {	  writeOut(outputstream, Constants.NEW_LINE);	  writeOut(outputstream, indent + sPrettyXDFOutputIndentation);	}	int fastestAxisLength = fastestAxis.getLength();	int dataNum = 0;	while (dataNum < fastestAxisLength) {          writeOut( outputstream, "<" + tag1 );  	  try {             writeOut( outputstream, ">" + getStringData(locator));             writeOut( outputstream, "</" + tag1 + ">");          }          catch (NoDataException e) {             // opps! no data in that location. Print out accordingly             String noDataValueString = noDataValues[locator.getAxisLocation(fastestAxis)];             if (noDataValueString != null)             {                writeOut(outputstream, ">" + noDataValueString );                writeOut( outputstream, "</" + tag1 + ">");             } else                writeOut( outputstream, "/>");	  }	  dataNum ++;	  locator.next();	}	if (sPrettyXDFOutput) {	  writeOut(outputstream, Constants.NEW_LINE);	  writeOut(outputstream, indent);	}	writeOut(outputstream, "</" + tag+ ">");      }    }    else {      // the 'outer' data tag wrapper. writes dimension 3 or higher tags      int stop = axisLength[which];      which++;      for (int i = 0; i < stop; i++) {	if (sPrettyXDFOutput) {	  writeOut(outputstream, Constants.NEW_LINE);	  writeOut(outputstream, indent);	}	writeOut(outputstream, "<" + tag + ">");	writeTaggedData(outputstream, locator, indent, axisLength, tags, which, fastestAxis, noDataValues);	if (sPrettyXDFOutput) {	  writeOut(outputstream, Constants.NEW_LINE);	  writeOut(outputstream, indent);	}	writeOut(outputstream, "</" + tag + ">");      }    }  }