public String getSubIndex(Byte sub) {
    StringBuilder subIndex = new StringBuilder();

    subIndex.append("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n");
    subIndex.append("<sub_index>\n");
    subIndex.append("	<entries value=\"" + this.wordsByMD5.get(sub).size() + "\"/>\n");
    subIndex.append("	<header>\n");
    subIndex.append(
        "		<title>Index of " + HTMLEncoder.encodeXML(this.flog.getTitle()) + "</title>\n");
    subIndex.append("	</header>\n");
    subIndex.append("	<files>\n");
    for (int i = 0; i < this.pageIDs.size(); ++i) {
      final String pageName = this.pageIDs.elementAt(i);
      subIndex.append(
          "		<file id=\""
              + Integer.toString(i)
              + "\" key=\""
              + this.baseKey
              + pageName
              + "\" title=\""
              + HTMLEncoder.encodeXML(
                  this.flog
                      .getContentByID(pageName.replace("Content-", "").replace(".html", ""))
                      .getTitle())
              + "\"/>\n");
    }
    subIndex.append("	</files>\n");
    subIndex.append("	<keywords>\n");

    for (String w : this.wordsByMD5.get(sub)) {
      subIndex.append("		<word v=\"" + HTMLEncoder.encodeXML(w) + "\">\n");

      for (int i = 0; i < pageIDs.size(); ++i) {
        if (!this.ourWords.get(w).containsKey(i)) {
          continue;
        }
        StringBuilder positions = new StringBuilder();
        boolean first = true;
        for (Long pos : this.ourWords.get(w).get(i)) {
          if (first) {
            first = false;
          } else {
            positions.append(",");
          }
          positions.append(Long.toString(pos));
        }
        subIndex.append(
            "			<file id=\"" + Integer.toString(i) + "\">" + positions.toString() + "</file>\n");
      }

      subIndex.append("		</word>\n");
    }

    subIndex.append("	</keywords>\n");
    subIndex.append("</sub_index>\n");

    return subIndex.toString();
  }
  public String getIndexIndex() {
    StringBuilder index =
        new StringBuilder(
            "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
                + "<main_index>\n"
                + "	<prefix value=\"1\"/>\n"
                + "	<header>\n"
                + "		<title>Index of "
                + HTMLEncoder.encodeXML(this.flog.getTitle())
                + "</title>\n"
                + "		<owner>"
                + this.flog.getAuthorName()
                + "</owner>\n"
                + "	</header>\n"
                + "	<keywords>\n");
    for (byte i : IndexBuilder.subStores) {
      index.append("		<subIndex key=\"" + Integer.toHexString(i).toLowerCase() + "\"/>\n");
    }

    index.append("	</keywords>\n" + "</main_index>\n");

    return index.toString();
  }