function shrinkExample(id) {
  var example = document.getElementById(id);
  recurseElement(example);
}

/*
The following doesn't work for some reason:

function recurseElement(element) {
  if (element.nodeType != 1) {
    return;
  }
  var node = element.firstChild;
  do {
    if (node.nodeType == 1) {
      recurseElement(node);
    } else {
      if (node.nodeType == 3) {
	shrinkTextNode(node);
      }
    }
    node = node.nextSibling;
  } while (node != null);
}
*/

function recurseElement(element) {
  if (element.nodeType != 1) {
    return;
  }
  var node = element.firstChild;
  var i = 0;
  do {
    switch(node.nodeType) {
    case 1:
      i++;
      break;
    case 3:
      shrinkTextNode(node);
      break;
    }
  } while ((node = node.nextSibling) != null);
  node = element.firstChild;
  if (i == 0) {
    return;
  }
  do {
    switch(node.nodeType) {
    case 1:
      i++;
      shrinkTextNode(node.firstChild);
      break;
    }
  } while ((node = node.nextSibling) != null);
}

function shrinkTextNode(node) {
  if (node == null || node.nodeType != 3) {
    return;
  }
  /* Shrink URIs in attribute values */
  node.nodeValue = node.nodeValue.replace(/(Algorithm|xmlns)="http:\/\/.*"/g,
					  '$1="..."');
}
