All pastes #74279 Raw Edit

Stuff

public text v1 · immutable
#74279 ·published 2006-06-28 21:08 UTC
rendered paste body
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin/"?>
<window
  xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  <vbox>
    <label value="Input:"/>
    <hbox>
      <textbox multiline="true"
               rows="15"
               cols="80"
               id="xml-source"
              />
    </hbox>
    <label value="Parser results:"/>
    <hbox>
      <textbox multiline="true"
               rows="5"
               cols="80"
               readonly="true"
               id="results"
              />
    </hbox>
  </vbox>

  <script type="application/javascript">
const saxReader = Components.classes["@mozilla.org/saxparser/xmlreader;1"]
                            .createInstance(Components.interfaces.nsISAXXMLReader);

saxReader.errorHandler = {
  status: "OK",
  errorMessage: "",
  locator: null,

  reset: function reset() {
    this.status = "OK";
    this.errorMessage = "";
    this.locator = null;
  },

  error: function error(locator, message) {
    this.status = "error";
    this.locator = locator;
    this.errorMessage = message;
  },

  fatalError: function fatalError(locator, message) {
    this.status = "fatal-error";
    this.locator = locator;
    this.errorMessage = message;
  },

  warning: function warning(locator, message) {},

  getStatus: function getStatus() {
    var response = this.status + " " + this.errorMessage + "\n";
    if (!this.locator)
      return response;
    response += "Line " + this.locator.lineNumber + ", ";
    response += "Column " + this.locator.columnNumber;
    return response;
  }
};

const results = document.getElementById("results");

const xmlSource = document.getElementById("xml-source");
xmlSource.addEventListener("input", function parse(evt) {
  saxReader.errorHandler.reset();
  saxReader.parseFromString(evt.target.value, "application/xml");
  results.value = saxReader.errorHandler.getStatus();
}, true);
  </script>
</window>