Explorar el Código

lollipop版本分开,有些新特性android5.0和6.0不支持

kunfei hace 3 años
padre
commit
3cf3231da5
Se han modificado 100 ficheros con 1183 adiciones y 12876 borrados
  1. 10 3
      app/build.gradle
  2. 0 13
      book/src/main/java/me/ag2s/epublib/Constants.java
  3. 0 158
      book/src/main/java/me/ag2s/epublib/browsersupport/NavigationEvent.java
  4. 0 207
      book/src/main/java/me/ag2s/epublib/browsersupport/NavigationHistory.java
  5. 0 220
      book/src/main/java/me/ag2s/epublib/browsersupport/Navigator.java
  6. 0 37
      book/src/main/java/me/ag2s/epublib/domain/EpubResourceProvider.java
  7. 0 128
      book/src/main/java/me/ag2s/epublib/domain/Guide.java
  8. 0 103
      book/src/main/java/me/ag2s/epublib/domain/GuideReference.java
  9. 0 131
      book/src/main/java/me/ag2s/epublib/domain/Identifier.java
  10. 0 144
      book/src/main/java/me/ag2s/epublib/domain/LazyResource.java
  11. 0 21
      book/src/main/java/me/ag2s/epublib/domain/ManifestItemProperties.java
  12. 0 16
      book/src/main/java/me/ag2s/epublib/domain/ManifestItemRefProperties.java
  13. 0 73
      book/src/main/java/me/ag2s/epublib/domain/MediaType.java
  14. 0 95
      book/src/main/java/me/ag2s/epublib/domain/MediaTypes.java
  15. 0 1144
      book/src/main/java/me/ag2s/epublib/domain/Relator.java
  16. 0 340
      book/src/main/java/me/ag2s/epublib/domain/Resource.java
  17. 0 43
      book/src/main/java/me/ag2s/epublib/domain/ResourceReference.java
  18. 0 192
      book/src/main/java/me/ag2s/epublib/domain/Spine.java
  19. 0 56
      book/src/main/java/me/ag2s/epublib/domain/TOCReference.java
  20. 0 73
      book/src/main/java/me/ag2s/epublib/epub/BookProcessorPipeline.java
  21. 0 190
      book/src/main/java/me/ag2s/epublib/epub/EpubWriter.java
  22. 0 97
      book/src/main/java/me/ag2s/epublib/epub/PackageDocumentBase.java
  23. 0 187
      book/src/main/java/me/ag2s/epublib/epub/PackageDocumentMetadataWriter.java
  24. 0 71
      book/src/main/java/me/ag2s/epublib/util/CollectionUtil.java
  25. 0 363
      book/src/main/java/me/ag2s/epublib/util/zip/AndroidZipEntry.java
  26. 0 61
      book/src/main/java/me/ag2s/epublib/util/zip/ZipConstants.java
  27. 0 207
      book/src/main/java/me/ag2s/umdlib/domain/UmdChapters.java
  28. 0 165
      book/src/main/java/me/ag2s/umdlib/domain/UmdHeader.java
  29. 0 153
      book/src/main/java/me/ag2s/umdlib/tool/UmdUtils.java
  30. 0 91
      book/src/main/java/me/ag2s/umdlib/tool/WrapOutputStream.java
  31. 0 390
      book/src/main/resources/dtd/openebook.org/dtds/oeb-1.2/oebpkg12.dtd
  32. 0 269
      book/src/main/resources/dtd/www.daisy.org/z3986/2005/ncx-2005-1.dtd
  33. 0 242
      book/src/main/resources/dtd/www.w3.org/TR/ruby/xhtml-ruby-1.mod
  34. 0 51
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-arch-1.mod
  35. 0 142
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-attribs-1.mod
  36. 0 53
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-base-1.mod
  37. 0 47
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-bdo-1.mod
  38. 0 164
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-blkphras-1.mod
  39. 0 40
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-blkpres-1.mod
  40. 0 57
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-blkstruct-1.mod
  41. 0 39
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-charent-1.mod
  42. 0 114
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-csismap-1.mod
  43. 0 103
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-datatypes-1.mod
  44. 0 66
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-edit-1.mod
  45. 0 135
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-events-1.mod
  46. 0 292
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-form-1.mod
  47. 0 97
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-framework-1.mod
  48. 0 54
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-hypertext-1.mod
  49. 0 51
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-image-1.mod
  50. 0 203
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-inlphras-1.mod
  51. 0 138
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-inlpres-1.mod
  52. 0 62
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-inlstruct-1.mod
  53. 0 34
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-inlstyle-1.mod
  54. 0 196
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-lat1.ent
  55. 0 59
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-link-1.mod
  56. 0 129
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-list-1.mod
  57. 0 47
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-meta-1.mod
  58. 0 114
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-notations-1.mod
  59. 0 60
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-object-1.mod
  60. 0 48
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-param-1.mod
  61. 0 38
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-pres-1.mod
  62. 0 318
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-qname-1.mod
  63. 0 67
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-script-1.mod
  64. 0 80
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-special.ent
  65. 0 32
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-ssismap-1.mod
  66. 0 136
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-struct-1.mod
  67. 0 48
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-style-1.mod
  68. 0 237
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-symbol.ent
  69. 0 333
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-table-1.mod
  70. 0 52
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-text-1.mod
  71. 0 252
      book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml11-model-1.mod
  72. 0 196
      book/src/main/resources/dtd/www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent
  73. 0 80
      book/src/main/resources/dtd/www.w3.org/TR/xhtml1/DTD/xhtml-special.ent
  74. 0 237
      book/src/main/resources/dtd/www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent
  75. 0 978
      book/src/main/resources/dtd/www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd
  76. 0 1201
      book/src/main/resources/dtd/www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
  77. 0 294
      book/src/main/resources/dtd/www.w3.org/TR/xhtml11/DTD/xhtml11.dtd
  78. 0 0
      modules/book/.gitignore
  79. 0 7
      modules/book/build.gradle
  80. 0 0
      modules/book/consumer-rules.pro
  81. 0 0
      modules/book/src/main/AndroidManifest.xml
  82. 0 0
      modules/book/src/main/java/me/ag2s/base/PfdHelper.java
  83. 1 2
      modules/book/src/main/java/me/ag2s/base/ThrowableUtils.java
  84. 13 0
      modules/book/src/main/java/me/ag2s/epublib/Constants.java
  85. 157 0
      modules/book/src/main/java/me/ag2s/epublib/browsersupport/NavigationEvent.java
  86. 6 7
      modules/book/src/main/java/me/ag2s/epublib/browsersupport/NavigationEventListener.java
  87. 207 0
      modules/book/src/main/java/me/ag2s/epublib/browsersupport/NavigationHistory.java
  88. 219 0
      modules/book/src/main/java/me/ag2s/epublib/browsersupport/Navigator.java
  89. 1 1
      modules/book/src/main/java/me/ag2s/epublib/browsersupport/package-info.java
  90. 0 0
      modules/book/src/main/java/me/ag2s/epublib/domain/Author.java
  91. 0 0
      modules/book/src/main/java/me/ag2s/epublib/domain/Date.java
  92. 0 0
      modules/book/src/main/java/me/ag2s/epublib/domain/EpubBook.java
  93. 37 0
      modules/book/src/main/java/me/ag2s/epublib/domain/EpubResourceProvider.java
  94. 3 1
      modules/book/src/main/java/me/ag2s/epublib/domain/FileResourceProvider.java
  95. 128 0
      modules/book/src/main/java/me/ag2s/epublib/domain/Guide.java
  96. 100 0
      modules/book/src/main/java/me/ag2s/epublib/domain/GuideReference.java
  97. 133 0
      modules/book/src/main/java/me/ag2s/epublib/domain/Identifier.java
  98. 145 0
      modules/book/src/main/java/me/ag2s/epublib/domain/LazyResource.java
  99. 1 1
      modules/book/src/main/java/me/ag2s/epublib/domain/LazyResourceProvider.java
  100. 22 0
      modules/book/src/main/java/me/ag2s/epublib/domain/ManifestItemProperties.java

+ 10 - 3
app/build.gradle

@@ -41,7 +41,7 @@ android {
     }
     defaultConfig {
         applicationId "io.legado.app"
-        minSdk 21
+        minSdk 24
         targetSdk 33
         versionCode 10000 + gitCommits
         versionName version
@@ -107,6 +107,11 @@ android {
             applicationId "io.legado.play"
             manifestPlaceholders.put("APP_CHANNEL_VALUE", "google")
         }
+        lollipop {
+            dimension "mode"
+            minSdk 21
+            manifestPlaceholders.put("APP_CHANNEL_VALUE", "lollipop")
+        }
     }
 
     compileOptions {
@@ -198,10 +203,12 @@ dependencies {
     implementation('org.jsoup:jsoup:1.15.4')
     implementation('com.jayway.jsonpath:json-path:2.8.0')
     implementation('cn.wanghaomiao:JsoupXpath:2.5.3')
-    implementation(project(path: ':book'))
+    implementation(project(path: ':modules:book'))
 
     //JS rhino
-    implementation(project(path: ':rhino'))
+    appImplementation(project(path: ':modules:rhino1.4'))
+    googleImplementation(project(path: ':modules:rhino1.4'))
+    lollipopImplementation(project(path: ':modules:rhino1.3'))
 
     //网络
     implementation('com.squareup.okhttp3:okhttp:4.10.0')

+ 0 - 13
book/src/main/java/me/ag2s/epublib/Constants.java

@@ -1,13 +0,0 @@
-package me.ag2s.epublib;
-
-
-public interface Constants {
-
-  String CHARACTER_ENCODING = "UTF-8";
-  String DOCTYPE_XHTML = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">";
-  String NAMESPACE_XHTML = "http://www.w3.org/1999/xhtml";
-  String EPUB_GENERATOR_NAME = "Ag2S EpubLib";
-  String EPUB_DUOKAN_NAME = "DK-SONGTI";
-  char FRAGMENT_SEPARATOR_CHAR = '#';
-  String DEFAULT_TOC_ID = "toc";
-}

+ 0 - 158
book/src/main/java/me/ag2s/epublib/browsersupport/NavigationEvent.java

@@ -1,158 +0,0 @@
-package me.ag2s.epublib.browsersupport;
-
-import java.util.EventObject;
-
-import me.ag2s.epublib.domain.EpubBook;
-import me.ag2s.epublib.domain.Resource;
-import me.ag2s.epublib.util.StringUtil;
-
-/**
- * Used to tell NavigationEventListener just what kind of navigation action
- * the user just did.
- *
- * @author paul
- *
- */
-@SuppressWarnings("unused")
-public class NavigationEvent extends EventObject {
-
-  private static final long serialVersionUID = -6346750144308952762L;
-
-  private Resource oldResource;
-  private int oldSpinePos;
-    private Navigator navigator;
-    private EpubBook oldBook;
-    private int oldSectionPos;
-  private String oldFragmentId;
-
-  public NavigationEvent(Object source) {
-    super(source);
-  }
-
-  public NavigationEvent(Object source, Navigator navigator) {
-    super(source);
-    this.navigator = navigator;
-    this.oldBook = navigator.getBook();
-    this.oldFragmentId = navigator.getCurrentFragmentId();
-    this.oldSectionPos = navigator.getCurrentSectionPos();
-    this.oldResource = navigator.getCurrentResource();
-    this.oldSpinePos = navigator.getCurrentSpinePos();
-  }
-
-  /**
-   * The previous position within the section.
-   *
-   * @return The previous position within the section.
-   */
-  public int getOldSectionPos() {
-    return oldSectionPos;
-  }
-
-  public Navigator getNavigator() {
-    return navigator;
-  }
-
-  public String getOldFragmentId() {
-    return oldFragmentId;
-  }
-
-  // package
-  void setOldFragmentId(String oldFragmentId) {
-    this.oldFragmentId = oldFragmentId;
-  }
-
-    public EpubBook getOldBook() {
-        return oldBook;
-    }
-
-  // package
-  void setOldPagePos(int oldPagePos) {
-    this.oldSectionPos = oldPagePos;
-  }
-
-  public int getCurrentSectionPos() {
-    return navigator.getCurrentSectionPos();
-  }
-
-  public int getOldSpinePos() {
-    return oldSpinePos;
-  }
-
-  public int getCurrentSpinePos() {
-    return navigator.getCurrentSpinePos();
-  }
-
-  public String getCurrentFragmentId() {
-    return navigator.getCurrentFragmentId();
-  }
-
-  public boolean isBookChanged() {
-    if (oldBook == null) {
-      return true;
-    }
-    return oldBook != navigator.getBook();
-  }
-
-  public boolean isSpinePosChanged() {
-    return getOldSpinePos() != getCurrentSpinePos();
-  }
-
-  public boolean isFragmentChanged() {
-    return StringUtil.equals(getOldFragmentId(), getCurrentFragmentId());
-  }
-
-  public Resource getOldResource() {
-    return oldResource;
-  }
-
-  public Resource getCurrentResource() {
-    return navigator.getCurrentResource();
-  }
-
-  public void setOldResource(Resource oldResource) {
-    this.oldResource = oldResource;
-  }
-
-
-  public void setOldSpinePos(int oldSpinePos) {
-    this.oldSpinePos = oldSpinePos;
-  }
-
-
-  public void setNavigator(Navigator navigator) {
-    this.navigator = navigator;
-  }
-
-
-    public void setOldBook(EpubBook oldBook) {
-        this.oldBook = oldBook;
-    }
-
-    public EpubBook getCurrentBook() {
-        return getNavigator().getBook();
-    }
-
-  public boolean isResourceChanged() {
-    return oldResource != getCurrentResource();
-  }
-
-  @SuppressWarnings("NullableProblems")
-  public String toString() {
-    return StringUtil.toString(
-        "oldSectionPos", oldSectionPos,
-        "oldResource", oldResource,
-        "oldBook", oldBook,
-        "oldFragmentId", oldFragmentId,
-        "oldSpinePos", oldSpinePos,
-        "currentPagePos", getCurrentSectionPos(),
-        "currentResource", getCurrentResource(),
-        "currentBook", getCurrentBook(),
-        "currentFragmentId", getCurrentFragmentId(),
-        "currentSpinePos", getCurrentSpinePos()
-    );
-  }
-
-  public boolean isSectionPosChanged() {
-    return oldSectionPos != getCurrentSectionPos();
-  }
-}

+ 0 - 207
book/src/main/java/me/ag2s/epublib/browsersupport/NavigationHistory.java

@@ -1,207 +0,0 @@
-package me.ag2s.epublib.browsersupport;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import me.ag2s.epublib.domain.EpubBook;
-import me.ag2s.epublib.domain.Resource;
-
-/**
- * A history of the user's locations with the epub.
- *
- * @author paul.siegmann
- */
-public class NavigationHistory implements NavigationEventListener {
-
-  public static final int DEFAULT_MAX_HISTORY_SIZE = 1000;
-  private static final long DEFAULT_HISTORY_WAIT_TIME = 1000;
-
-  private static class Location {
-
-    private String href;
-
-    public Location(String href) {
-      super();
-      this.href = href;
-    }
-
-    @SuppressWarnings("unused")
-    public void setHref(String href) {
-      this.href = href;
-    }
-
-    public String getHref() {
-      return href;
-    }
-  }
-
-  private long lastUpdateTime = 0;
-  private List<Location> locations = new ArrayList<>();
-  private final Navigator navigator;
-  private int currentPos = -1;
-  private int currentSize = 0;
-  private int maxHistorySize = DEFAULT_MAX_HISTORY_SIZE;
-  private long historyWaitTime = DEFAULT_HISTORY_WAIT_TIME;
-
-  public NavigationHistory(Navigator navigator) {
-    this.navigator = navigator;
-    navigator.addNavigationEventListener(this);
-    initBook(navigator.getBook());
-  }
-
-  public int getCurrentPos() {
-    return currentPos;
-  }
-
-
-  public int getCurrentSize() {
-    return currentSize;
-  }
-
-  public void initBook(EpubBook book) {
-    if (book == null) {
-      return;
-    }
-    locations = new ArrayList<>();
-    currentPos = -1;
-    currentSize = 0;
-    if (navigator.getCurrentResource() != null) {
-      addLocation(navigator.getCurrentResource().getHref());
-    }
-  }
-
-  /**
-   * If the time between a navigation event is less than the historyWaitTime
-   * then the new location is not added to the history.
-   *
-   * When a user is rapidly viewing many pages using the slider we do not
-   * want all of them to be added to the history.
-   *
-   * @return the time we wait before adding the page to the history
-   */
-  public long getHistoryWaitTime() {
-    return historyWaitTime;
-  }
-
-  public void setHistoryWaitTime(long historyWaitTime) {
-    this.historyWaitTime = historyWaitTime;
-  }
-
-  public void addLocation(Resource resource) {
-    if (resource == null) {
-      return;
-    }
-    addLocation(resource.getHref());
-  }
-
-  /**
-   * Adds the location after the current position.
-   * If the currentposition is not the end of the list then the elements
-   * between the current element and the end of the list will be discarded.
-   *
-   * Does nothing if the new location matches the current location.
-   * <br/>
-   * If this nr of locations becomes larger then the historySize then the
-   * first item(s) will be removed.
-   *v
-   * @param location  d
-   */
-  public void addLocation(Location location) {
-    // do nothing if the new location matches the current location
-    if (!(locations.isEmpty()) &&
-        location.getHref().equals(locations.get(currentPos).getHref())) {
-      return;
-    }
-    currentPos++;
-    if (currentPos != currentSize) {
-      locations.set(currentPos, location);
-    } else {
-      locations.add(location);
-      checkHistorySize();
-    }
-    currentSize = currentPos + 1;
-  }
-
-  /**
-   * Removes all elements that are too much for the maxHistorySize
-   * out of the history.
-   */
-  private void checkHistorySize() {
-    while (locations.size() > maxHistorySize) {
-      locations.remove(0);
-      currentSize--;
-      currentPos--;
-    }
-  }
-
-  public void addLocation(String href) {
-    addLocation(new Location(href));
-  }
-
-  private String getLocationHref(int pos) {
-    if (pos < 0 || pos >= locations.size()) {
-      return null;
-    }
-    return locations.get(currentPos).getHref();
-  }
-
-  /**
-   * Moves the current positions delta positions.
-   *
-   * move(-1) to go one position back in history.<br/>
-   * move(1) to go one position forward.<br/>发
-   *
-   * @param delta f
-   *
-   * @return Whether we actually moved. If the requested value is illegal
-   * it will return false, true otherwise.
-   */
-  public boolean move(int delta) {
-    if (((currentPos + delta) < 0)
-        || ((currentPos + delta) >= currentSize)) {
-      return false;
-    }
-    currentPos += delta;
-    navigator.gotoResource(getLocationHref(currentPos), this);
-    return true;
-  }
-
-
-  /**
-   * If this is not the source of the navigationEvent then the addLocation
-   * will be called with the href of the currentResource in the navigationEvent.
-   */
-  @Override
-  public void navigationPerformed(NavigationEvent navigationEvent) {
-    if (this == navigationEvent.getSource()) {
-      return;
-    }
-    if (navigationEvent.getCurrentResource() == null) {
-      return;
-    }
-
-    if ((System.currentTimeMillis() - this.lastUpdateTime) > historyWaitTime) {
-      // if the user scrolled rapidly through the pages then the last page
-      // will not be added to the history. We fix that here:
-      addLocation(navigationEvent.getOldResource());
-
-      addLocation(navigationEvent.getCurrentResource().getHref());
-    }
-    lastUpdateTime = System.currentTimeMillis();
-  }
-
-  public String getCurrentHref() {
-    if (currentPos < 0 || currentPos >= locations.size()) {
-      return null;
-    }
-    return locations.get(currentPos).getHref();
-  }
-
-  public void setMaxHistorySize(int maxHistorySize) {
-    this.maxHistorySize = maxHistorySize;
-  }
-
-  public int getMaxHistorySize() {
-    return maxHistorySize;
-  }
-}

+ 0 - 220
book/src/main/java/me/ag2s/epublib/browsersupport/Navigator.java

@@ -1,220 +0,0 @@
-package me.ag2s.epublib.browsersupport;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
-import me.ag2s.epublib.domain.EpubBook;
-import me.ag2s.epublib.domain.Resource;
-
-/**
- * A helper class for epub browser applications.
- * <p>
- * It helps moving from one resource to the other, from one resource
- * to the other and keeping other elements of the application up-to-date
- * by calling the NavigationEventListeners.
- *
- * @author paul
- */
-public class Navigator implements Serializable {
-
-  private static final long serialVersionUID = 1076126986424925474L;
-  private EpubBook book;
-  private int currentSpinePos;
-  private Resource currentResource;
-  private int currentPagePos;
-  private String currentFragmentId;
-
-  private final List<NavigationEventListener> eventListeners = new ArrayList<>();
-
-  public Navigator() {
-    this(null);
-  }
-
-  public Navigator(EpubBook book) {
-    this.book = book;
-    this.currentSpinePos = 0;
-    if (book != null) {
-      this.currentResource = book.getCoverPage();
-    }
-    this.currentPagePos = 0;
-  }
-
-  private synchronized void handleEventListeners(
-      NavigationEvent navigationEvent) {
-    for (int i = 0; i < eventListeners.size(); i++) {
-      NavigationEventListener navigationEventListener = eventListeners.get(i);
-      navigationEventListener.navigationPerformed(navigationEvent);
-    }
-  }
-
-  public boolean addNavigationEventListener(
-      NavigationEventListener navigationEventListener) {
-    return this.eventListeners.add(navigationEventListener);
-  }
-
-  public boolean removeNavigationEventListener(
-      NavigationEventListener navigationEventListener) {
-    return this.eventListeners.remove(navigationEventListener);
-  }
-
-  public int gotoFirstSpineSection(Object source) {
-    return gotoSpineSection(0, source);
-  }
-
-  public int gotoPreviousSpineSection(Object source) {
-    return gotoPreviousSpineSection(0, source);
-  }
-
-  public int gotoPreviousSpineSection(int pagePos, Object source) {
-    if (currentSpinePos < 0) {
-      return gotoSpineSection(0, pagePos, source);
-    } else {
-      return gotoSpineSection(currentSpinePos - 1, pagePos, source);
-    }
-  }
-
-  public boolean hasNextSpineSection() {
-    return (currentSpinePos < (book.getSpine().size() - 1));
-  }
-
-  public boolean hasPreviousSpineSection() {
-    return (currentSpinePos > 0);
-  }
-
-  public int gotoNextSpineSection(Object source) {
-    if (currentSpinePos < 0) {
-      return gotoSpineSection(0, source);
-    } else {
-      return gotoSpineSection(currentSpinePos + 1, source);
-    }
-  }
-
-  public int gotoResource(String resourceHref, Object source) {
-    Resource resource = book.getResources().getByHref(resourceHref);
-    return gotoResource(resource, source);
-  }
-
-
-  public int gotoResource(Resource resource, Object source) {
-    return gotoResource(resource, 0, null, source);
-  }
-
-  public int gotoResource(Resource resource, String fragmentId, Object source) {
-    return gotoResource(resource, 0, fragmentId, source);
-  }
-
-  public int gotoResource(Resource resource, int pagePos, Object source) {
-    return gotoResource(resource, pagePos, null, source);
-  }
-
-  public int gotoResource(Resource resource, int pagePos, String fragmentId,
-      Object source) {
-    if (resource == null) {
-      return -1;
-    }
-    NavigationEvent navigationEvent = new NavigationEvent(source, this);
-    this.currentResource = resource;
-    this.currentSpinePos = book.getSpine().getResourceIndex(currentResource);
-    this.currentPagePos = pagePos;
-    this.currentFragmentId = fragmentId;
-    handleEventListeners(navigationEvent);
-
-    return currentSpinePos;
-  }
-
-  public int gotoResourceId(String resourceId, Object source) {
-    return gotoSpineSection(book.getSpine().findFirstResourceById(resourceId),
-        source);
-  }
-
-  public int gotoSpineSection(int newSpinePos, Object source) {
-    return gotoSpineSection(newSpinePos, 0, source);
-  }
-
-  /**
-   * Go to a specific section.
-   * Illegal spine positions are silently ignored.
-   *
-   * @param newSpinePos f
-   * @param source f
-   * @return The current position within the spine
-   */
-  public int gotoSpineSection(int newSpinePos, int newPagePos, Object source) {
-    if (newSpinePos == currentSpinePos) {
-      return currentSpinePos;
-    }
-    if (newSpinePos < 0 || newSpinePos >= book.getSpine().size()) {
-      return currentSpinePos;
-    }
-    NavigationEvent navigationEvent = new NavigationEvent(source, this);
-    currentSpinePos = newSpinePos;
-    currentPagePos = newPagePos;
-    currentResource = book.getSpine().getResource(currentSpinePos);
-    handleEventListeners(navigationEvent);
-    return currentSpinePos;
-  }
-
-  public int gotoLastSpineSection(Object source) {
-    return gotoSpineSection(book.getSpine().size() - 1, source);
-  }
-
-  public void gotoBook(EpubBook book, Object source) {
-    NavigationEvent navigationEvent = new NavigationEvent(source, this);
-    this.book = book;
-    this.currentFragmentId = null;
-    this.currentPagePos = 0;
-    this.currentResource = null;
-    this.currentSpinePos = book.getSpine().getResourceIndex(currentResource);
-    handleEventListeners(navigationEvent);
-  }
-
-  /**
-   * The current position within the spine.
-   *
-   * @return something &lt; 0 if the current position is not within the spine.
-   */
-  public int getCurrentSpinePos() {
-    return currentSpinePos;
-  }
-
-  public Resource getCurrentResource() {
-    return currentResource;
-  }
-
-  /**
-   * Sets the current index and resource without calling the eventlisteners.
-   *
-   * If you want the eventListeners called use gotoSection(index);
-   *
-   * @param currentIndex f
-   */
-  public void setCurrentSpinePos(int currentIndex) {
-    this.currentSpinePos = currentIndex;
-    this.currentResource = book.getSpine().getResource(currentIndex);
-  }
-
-  public EpubBook getBook() {
-    return book;
-  }
-
-  /**
-   * Sets the current index and resource without calling the eventlisteners.
-   *
-   * If you want the eventListeners called use gotoSection(index);
-   *
-   */
-  public int setCurrentResource(Resource currentResource) {
-    this.currentSpinePos = book.getSpine().getResourceIndex(currentResource);
-    this.currentResource = currentResource;
-    return currentSpinePos;
-  }
-
-  public String getCurrentFragmentId() {
-    return currentFragmentId;
-  }
-
-  public int getCurrentSectionPos() {
-    return currentPagePos;
-  }
-}

+ 0 - 37
book/src/main/java/me/ag2s/epublib/domain/EpubResourceProvider.java

@@ -1,37 +0,0 @@
-package me.ag2s.epublib.domain;
-
-import androidx.annotation.NonNull;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import me.ag2s.epublib.util.zip.ZipEntryWrapper;
-import me.ag2s.epublib.util.zip.ZipFileWrapper;
-
-/**
- * @author jake
- */
-public class EpubResourceProvider implements LazyResourceProvider {
-
-
-  private final ZipFileWrapper zipFileWrapper;
-
-
-  public EpubResourceProvider(ZipFileWrapper zipFileWrapper) {
-    this.zipFileWrapper = zipFileWrapper;
-  }
-
-
-  @Override
-  public InputStream getResourceStream(@NonNull String href) throws IOException {
-
-    //ZipFile zipFile = new ZipFile(epubFilename);
-    ZipEntryWrapper zipEntry = zipFileWrapper.getEntry(href);
-    if (zipEntry == null) {
-      //zipFile.close();
-      throw new IllegalStateException(
-              "Cannot find entry " + href + " in epub file " + zipFileWrapper);
-    }
-    return new ResourceInputStream(zipFileWrapper.getInputStream(zipEntry));
-  }
-}

+ 0 - 128
book/src/main/java/me/ag2s/epublib/domain/Guide.java

@@ -1,128 +0,0 @@
-package me.ag2s.epublib.domain;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * The guide is a selection of special pages of the book.
- * Examples of these are the cover, list of illustrations, etc.
- *
- * It is an optional part of an epub, and support for the various types
- * of references varies by reader.
- *
- * The only part of this that is heavily used is the cover page.
- *
- * @author paul
- *
- */
-public class Guide implements Serializable {
-
-  /**
-   *
-   */
-  private static final long serialVersionUID = -6256645339915751189L;
-
-  public static final String DEFAULT_COVER_TITLE = GuideReference.COVER;
-
-  private List<GuideReference> references = new ArrayList<>();
-  private static final int COVERPAGE_NOT_FOUND = -1;
-  private static final int COVERPAGE_UNITIALIZED = -2;
-
-  private int coverPageIndex = -1;
-
-  public List<GuideReference> getReferences() {
-    return references;
-  }
-
-  public void setReferences(List<GuideReference> references) {
-    this.references = references;
-    uncheckCoverPage();
-  }
-
-  private void uncheckCoverPage() {
-    coverPageIndex = COVERPAGE_UNITIALIZED;
-  }
-
-  public GuideReference getCoverReference() {
-    checkCoverPage();
-    if (coverPageIndex >= 0) {
-      return references.get(coverPageIndex);
-    }
-    return null;
-  }
-  @SuppressWarnings("UnusedReturnValue")
-  public int setCoverReference(GuideReference guideReference) {
-    if (coverPageIndex >= 0) {
-      references.set(coverPageIndex, guideReference);
-    } else {
-      references.add(0, guideReference);
-      coverPageIndex = 0;
-    }
-    return coverPageIndex;
-  }
-
-  private void checkCoverPage() {
-    if (coverPageIndex == COVERPAGE_UNITIALIZED) {
-      initCoverPage();
-    }
-  }
-
-
-  private void initCoverPage() {
-    int result = COVERPAGE_NOT_FOUND;
-    for (int i = 0; i < references.size(); i++) {
-      GuideReference guideReference = references.get(i);
-      if (guideReference.getType().equals(GuideReference.COVER)) {
-        result = i;
-        break;
-      }
-    }
-    coverPageIndex = result;
-  }
-
-  /**
-   * The coverpage of the book.
-   *
-   * @return The coverpage of the book.
-   */
-  public Resource getCoverPage() {
-    GuideReference guideReference = getCoverReference();
-    if (guideReference == null) {
-      return null;
-    }
-    return guideReference.getResource();
-  }
-
-  public void setCoverPage(Resource coverPage) {
-    GuideReference coverpageGuideReference = new GuideReference(coverPage,
-        GuideReference.COVER, DEFAULT_COVER_TITLE);
-    setCoverReference(coverpageGuideReference);
-  }
-
-  @SuppressWarnings("UnusedReturnValue")
-  public ResourceReference addReference(GuideReference reference) {
-    this.references.add(reference);
-    uncheckCoverPage();
-    return reference;
-  }
-
-  /**
-   * A list of all GuideReferences that have the given
-   * referenceTypeName (ignoring case).
-   *
-   * @param referenceTypeName referenceTypeName
-   * @return A list of all GuideReferences that have the given
-   *    referenceTypeName (ignoring case).
-   */
-  public List<GuideReference> getGuideReferencesByType(
-      String referenceTypeName) {
-    List<GuideReference> result = new ArrayList<>();
-    for (GuideReference guideReference : references) {
-      if (referenceTypeName.equalsIgnoreCase(guideReference.getType())) {
-        result.add(guideReference);
-      }
-    }
-    return result;
-  }
-}

+ 0 - 103
book/src/main/java/me/ag2s/epublib/domain/GuideReference.java

@@ -1,103 +0,0 @@
-package me.ag2s.epublib.domain;
-
-import java.io.Serializable;
-
-import me.ag2s.epublib.util.StringUtil;
-
-
-/**
- * These are references to elements of the book's guide.
- *
- * @see Guide
- *
- * @author paul
- *
- */
-public class GuideReference extends TitledResourceReference
-    implements Serializable {
-
-  private static final long serialVersionUID = -316179702440631834L;
-
-  /**
-   * the book cover(s), jacket information, etc.
-   */
-  public static final String COVER = "cover";
-
-  /**
-   * human-readable page with title, author, publisher, and other metadata
-   */
-  public static String TITLE_PAGE = "title-page";
-
-  /**
-   * Human-readable table of contents.
-   * Not to be confused the epub file table of contents
-   *
-   */
-  public static String TOC = "toc";
-
-  /**
-   * back-of-book style index
-   */
-  public static String INDEX = "index";
-  public static String GLOSSARY = "glossary";
-  public static String ACKNOWLEDGEMENTS = "acknowledgements";
-  public static String BIBLIOGRAPHY = "bibliography";
-  public static String COLOPHON = "colophon";
-  public static String COPYRIGHT_PAGE = "copyright-page";
-  public static String DEDICATION = "dedication";
-
-  /**
-   * an epigraph is a phrase, quotation, or poem that is set at the
-   * beginning of a document or component.
-   *
-   * source: http://en.wikipedia.org/wiki/Epigraph_%28literature%29
-   */
-  public static String EPIGRAPH = "epigraph";
-
-  public static String FOREWORD = "foreword";
-
-  /**
-   * list of illustrations
-   */
-  public static String LOI = "loi";
-
-  /**
-   * list of tables
-   */
-  public static String LOT = "lot";
-  public static String NOTES = "notes";
-  public static String PREFACE = "preface";
-
-  /**
-   * A page of content (e.g. "Chapter 1")
-   */
-  public static String TEXT = "text";
-
-  private String type;
-
-  public GuideReference(Resource resource) {
-    this(resource, null);
-  }
-
-  public GuideReference(Resource resource, String title) {
-    super(resource, title);
-  }
-
-  public GuideReference(Resource resource, String type, String title) {
-    this(resource, type, title, null);
-  }
-
-  public GuideReference(Resource resource, String type, String title,
-      String fragmentId) {
-    super(resource, title, fragmentId);
-    this.type = StringUtil.isNotBlank(type) ? type.toLowerCase() : null;
-  }
-
-  public String getType() {
-    return type;
-  }
-
-  public void setType(String type) {
-    this.type = type;
-  }
-}

+ 0 - 131
book/src/main/java/me/ag2s/epublib/domain/Identifier.java

@@ -1,131 +0,0 @@
-package me.ag2s.epublib.domain;
-
-import java.io.Serializable;
-import java.util.List;
-import java.util.UUID;
-
-import me.ag2s.epublib.util.StringUtil;
-
-/**
- * A Book's identifier.
- *
- * Defaults to a random UUID and scheme "UUID"
- *
- * @author paul
- */
-public class Identifier implements Serializable {
-
-  private static final long serialVersionUID = 955949951416391810L;
-  @SuppressWarnings("unused")
-  public interface Scheme {
-
-    String UUID = "UUID";
-    String ISBN = "ISBN";
-    String URL = "URL";
-    String URI = "URI";
-  }
-
-  private boolean bookId = false;
-  private String scheme;
-  private String value;
-
-  /**
-   * Creates an Identifier with as value a random UUID and scheme "UUID"
-   */
-  public Identifier() {
-    this(Scheme.UUID, UUID.randomUUID().toString());
-  }
-
-
-  public Identifier(String scheme, String value) {
-    this.scheme = scheme;
-    this.value = value;
-  }
-
-  /**
-   * The first identifier for which the bookId is true is made the
-   * bookId identifier.
-   *
-   * If no identifier has bookId == true then the first bookId identifier
-   * is written as the primary.
-   *
-   * @param identifiers i
-   * @return The first identifier for which the bookId is true is made
-   * 		the bookId identifier.
-   */
-  public static Identifier getBookIdIdentifier(List<Identifier> identifiers) {
-    if (identifiers == null || identifiers.isEmpty()) {
-      return null;
-    }
-
-    Identifier result = null;
-    for (Identifier identifier : identifiers) {
-      if (identifier.isBookId()) {
-        result = identifier;
-        break;
-      }
-    }
-
-    if (result == null) {
-      result = identifiers.get(0);
-    }
-
-    return result;
-  }
-
-  public String getScheme() {
-    return scheme;
-  }
-
-  public void setScheme(String scheme) {
-    this.scheme = scheme;
-  }
-
-  public String getValue() {
-    return value;
-  }
-
-  public void setValue(String value) {
-    this.value = value;
-  }
-
-
-  public void setBookId(boolean bookId) {
-    this.bookId = bookId;
-  }
-
-
-  /**
-   * This bookId property allows the book creator to add multiple ids and
-   * tell the epubwriter which one to write out as the bookId.
-   *
-   * The Dublin Core metadata spec allows multiple identifiers for a Book.
-   * The epub spec requires exactly one identifier to be marked as the book id.
-   *
-   * @return whether this is the unique book id.
-   */
-  public boolean isBookId() {
-    return bookId;
-  }
-
-  public int hashCode() {
-    return StringUtil.defaultIfNull(scheme).hashCode() ^ StringUtil
-        .defaultIfNull(value).hashCode();
-  }
-
-  public boolean equals(Object otherIdentifier) {
-    if (!(otherIdentifier instanceof Identifier)) {
-      return false;
-    }
-    return StringUtil.equals(scheme, ((Identifier) otherIdentifier).scheme)
-        && StringUtil.equals(value, ((Identifier) otherIdentifier).value);
-  }
-  @SuppressWarnings("NullableProblems")
-  @Override
-  public String toString() {
-    if (StringUtil.isBlank(scheme)) {
-      return "" + value;
-    }
-    return "" + scheme + ":" + value;
-  }
-}

+ 0 - 144
book/src/main/java/me/ag2s/epublib/domain/LazyResource.java

@@ -1,144 +0,0 @@
-package me.ag2s.epublib.domain;
-
-import android.util.Log;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-import me.ag2s.epublib.util.IOUtil;
-
-/**
- * A Resource that loads its data only on-demand from a EPUB book file.
- * This way larger books can fit into memory and can be opened faster.
- */
-public class LazyResource extends Resource {
-
-  private static final long serialVersionUID = 5089400472352002866L;
-  private  final String TAG= getClass().getName();
-
-  private final LazyResourceProvider resourceProvider;
-  private final long cachedSize;
-
-  /**
-   * Creates a lazy resource, when the size is unknown.
-   *
-   * @param resourceProvider The resource provider loads data on demand.
-   * @param href The resource's href within the epub.
-   */
-  public LazyResource(LazyResourceProvider resourceProvider, String href) {
-    this(resourceProvider, -1, href);
-  }
-  public LazyResource(LazyResourceProvider resourceProvider, String href, String originalHref) {
-    this(resourceProvider, -1, href, originalHref);
-  }
-
-  /**
-   * Creates a Lazy resource, by not actually loading the data for this entry.
-   *
-   * The data will be loaded on the first call to getData()
-   *
-   * @param resourceProvider The resource provider loads data on demand.
-   * @param size The size of this resource.
-   * @param href The resource's href within the epub.
-   */
-  public LazyResource(
-          LazyResourceProvider resourceProvider, long size, String href) {
-    super(null, null, href, MediaTypes.determineMediaType(href));
-    this.resourceProvider = resourceProvider;
-    this.cachedSize = size;
-  }
-  public LazyResource(
-      LazyResourceProvider resourceProvider, long size, String href, String originalHref) {
-    super(null, null, href, originalHref, MediaTypes.determineMediaType(href));
-    this.resourceProvider = resourceProvider;
-    this.cachedSize = size;
-  }
-
-  /**
-   * Gets the contents of the Resource as an InputStream.
-   *
-   * @return The contents of the Resource.
-   *
-   * @throws IOException IOException
-   */
-  public InputStream getInputStream() throws IOException {
-    if (isInitialized()) {
-      return new ByteArrayInputStream(getData());
-    } else {
-      return resourceProvider.getResourceStream(this.originalHref);
-    }
-  }
-
-  /**
-   * Initializes the resource by loading its data into memory.
-   *
-   * @throws IOException IOException
-   */
-  public void initialize() throws IOException {
-    getData();
-  }
-
-  /**
-   * The contents of the resource as a byte[]
-   *
-   * If this resource was lazy-loaded and the data was not yet loaded,
-   * it will be loaded into memory at this point.
-   *  This included opening the zip file, so expect a first load to be slow.
-   *
-   * @return The contents of the resource
-   */
-  public byte[] getData() throws IOException {
-
-    if (data == null) {
-
-      Log.d(TAG, "Initializing lazy resource: " + this.getHref());
-
-      InputStream in = resourceProvider.getResourceStream(this.originalHref);
-      byte[] readData = IOUtil.toByteArray(in, (int) this.cachedSize);
-      if (readData == null) {
-        throw new IOException(
-            "Could not load the contents of resource: " + this.getHref());
-      } else {
-        this.data = readData;
-      }
-
-      in.close();
-    }
-
-    return data;
-  }
-
-  /**
-   * Tells this resource to release its cached data.
-   *
-   * If this resource was not lazy-loaded, this is a no-op.
-   */
-  public void close() {
-    if (this.resourceProvider != null) {
-      this.data = null;
-    }
-  }
-
-  /**
-   * Returns if the data for this resource has been loaded into memory.
-   *
-   * @return true if data was loaded.
-   */
-  public boolean isInitialized() {
-    return data != null;
-  }
-
-  /**
-   * Returns the size of this resource in bytes.
-   *
-   * @return the size.
-   */
-  public long getSize() {
-    if (data != null) {
-      return data.length;
-    }
-
-    return cachedSize;
-  }
-}

+ 0 - 21
book/src/main/java/me/ag2s/epublib/domain/ManifestItemProperties.java

@@ -1,21 +0,0 @@
-package me.ag2s.epublib.domain;
-@SuppressWarnings("unused")
-public enum ManifestItemProperties implements ManifestProperties {
-  COVER_IMAGE("cover-image"),
-  MATHML("mathml"),
-  NAV("nav"),
-  REMOTE_RESOURCES("remote-resources"),
-  SCRIPTED("scripted"),
-  SVG("svg"),
-  SWITCH("switch");
-
-  private final String name;
-
-  ManifestItemProperties(String name) {
-    this.name = name;
-  }
-
-  public String getName() {
-    return name;
-  }
-}

+ 0 - 16
book/src/main/java/me/ag2s/epublib/domain/ManifestItemRefProperties.java

@@ -1,16 +0,0 @@
-package me.ag2s.epublib.domain;
-@SuppressWarnings("unused")
-public enum ManifestItemRefProperties implements ManifestProperties {
-	PAGE_SPREAD_LEFT("page-spread-left"),
-	PAGE_SPREAD_RIGHT("page-spread-right");
-	
-	private final String name;
-	
-	ManifestItemRefProperties(String name) {
-		this.name = name;
-	}
-	
-	public String getName() {
-		return name;
-	}
-}

+ 0 - 73
book/src/main/java/me/ag2s/epublib/domain/MediaType.java

@@ -1,73 +0,0 @@
-package me.ag2s.epublib.domain;
-
-import java.io.Serializable;
-import java.util.Arrays;
-import java.util.Collection;
-
-/**
- * MediaType is used to tell the type of content a resource is.
- *
- * Examples of mediatypes are image/gif, text/css and application/xhtml+xml
- *
- * All allowed mediaTypes are maintained bye the MediaTypeService.
- *
- * @see MediaTypes
- *
- * @author paul
- */
-public class MediaType implements Serializable {
-
-  private static final long serialVersionUID = -7256091153727506788L;
-  private final String name;
-  private final String defaultExtension;
-  private final Collection<String> extensions;
-
-  public MediaType(String name, String defaultExtension) {
-    this(name, defaultExtension, new String[]{defaultExtension});
-  }
-
-  public MediaType(String name, String defaultExtension,
-      String[] extensions) {
-    this(name, defaultExtension, Arrays.asList(extensions));
-  }
-
-  public int hashCode() {
-    if (name == null) {
-      return 0;
-    }
-    return name.hashCode();
-  }
-
-  public MediaType(String name, String defaultExtension,
-      Collection<String> mextensions) {
-    super();
-    this.name = name;
-    this.defaultExtension = defaultExtension;
-    this.extensions = mextensions;
-  }
-
-  public String getName() {
-    return name;
-  }
-
-
-  public String getDefaultExtension() {
-    return defaultExtension;
-  }
-
-
-  public Collection<String> getExtensions() {
-    return extensions;
-  }
-
-  public boolean equals(Object otherMediaType) {
-    if (!(otherMediaType instanceof MediaType)) {
-      return false;
-    }
-    return name.equals(((MediaType) otherMediaType).getName());
-  }
-  @SuppressWarnings("NullableProblems")
-  public String toString() {
-    return name;
-  }
-}

+ 0 - 95
book/src/main/java/me/ag2s/epublib/domain/MediaTypes.java

@@ -1,95 +0,0 @@
-package me.ag2s.epublib.domain;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import me.ag2s.epublib.util.StringUtil;
-
-
-/**
- * Manages mediatypes that are used by epubs
- *
- * @author paul
- */
-public class MediaTypes {
-
-  public static final MediaType XHTML = new MediaType("application/xhtml+xml",
-      ".xhtml", new String[]{".htm", ".html", ".xhtml"});
-  public static final MediaType EPUB = new MediaType("application/epub+zip",
-      ".epub");
-  public static final MediaType NCX = new MediaType("application/x-dtbncx+xml",
-      ".ncx");
-
-  public static final MediaType JAVASCRIPT = new MediaType("text/javascript",
-      ".js");
-  public static final MediaType CSS = new MediaType("text/css", ".css");
-
-  // images
-  public static final MediaType JPG = new MediaType("image/jpeg", ".jpg",
-      new String[]{".jpg", ".jpeg"});
-  public static final MediaType PNG = new MediaType("image/png", ".png");
-  public static final MediaType GIF = new MediaType("image/gif", ".gif");
-
-  public static final MediaType SVG = new MediaType("image/svg+xml", ".svg");
-
-  // fonts
-  public static final MediaType TTF = new MediaType(
-      "application/x-truetype-font", ".ttf");
-  public static final MediaType OPENTYPE = new MediaType(
-      "application/vnd.ms-opentype", ".otf");
-  public static final MediaType WOFF = new MediaType("application/font-woff",
-      ".woff");
-
-  // audio
-  public static final MediaType MP3 = new MediaType("audio/mpeg", ".mp3");
-  public static final MediaType OGG = new MediaType("audio/ogg", ".ogg");
-
-  // video
-  public static final MediaType MP4 = new MediaType("video/mp4", ".mp4");
-
-  public static final MediaType SMIL = new MediaType("application/smil+xml",
-      ".smil");
-  public static final MediaType XPGT = new MediaType(
-      "application/adobe-page-template+xml", ".xpgt");
-  public static final MediaType PLS = new MediaType("application/pls+xml",
-      ".pls");
-
-  public static final MediaType[] mediaTypes = new MediaType[]{
-      XHTML, EPUB, JPG, PNG, GIF, CSS, SVG, TTF, NCX, XPGT, OPENTYPE, WOFF,
-      SMIL, PLS, JAVASCRIPT, MP3, MP4, OGG
-  };
-
-  public static final Map<String, MediaType> mediaTypesByName = new HashMap<>();
-
-  static {
-    for (MediaType mediaType : mediaTypes) {
-      mediaTypesByName.put(mediaType.getName(), mediaType);
-    }
-  }
-
-  public static boolean isBitmapImage(MediaType mediaType) {
-    return mediaType == JPG || mediaType == PNG || mediaType == GIF;
-  }
-
-  /**
-   * Gets the MediaType based on the file extension.
-   * Null of no matching extension found.
-   *
-   * @param filename filename
-   * @return the MediaType based on the file extension.
-   */
-  public static MediaType determineMediaType(String filename) {
-    for (MediaType mediaType : mediaTypesByName.values()) {
-      for (String extension : mediaType.getExtensions()) {
-        if (StringUtil.endsWithIgnoreCase(filename, extension)) {
-          return mediaType;
-        }
-      }
-    }
-    return null;
-  }
-
-  public static MediaType getMediaTypeByName(String mediaTypeName) {
-    return mediaTypesByName.get(mediaTypeName);
-  }
-}

+ 0 - 1144
book/src/main/java/me/ag2s/epublib/domain/Relator.java

@@ -1,1144 +0,0 @@
-package me.ag2s.epublib.domain;
-
-
-/**
- * A relator denotes which role a certain individual had in the creation/modification of the ebook.
- *
- * Examples are 'creator', 'blurb writer', etc.
- *
- * This is contains the complete Library of Concress relator list.
- *
- * @see <a href="http://www.loc.gov/marc/relators/relaterm.html">MARC Code List for Relators</a>
- *
- * @author paul
- */
-public enum Relator {
-
-  /**
-   * Use for a person or organization who principally exhibits acting skills in a musical or dramatic presentation or entertainment.
-   */
-  ACTOR("act", "Actor"),
-
-  /**
-   * Use for a person or organization who 1) reworks a musical composition, usually for a different medium, or 2) rewrites novels or stories for motion pictures or other audiovisual medium.
-   */
-  ADAPTER("adp", "Adapter"),
-
-  /**
-   * Use for a person or organization that reviews, examines and interprets data or information in a specific area.
-   */
-  ANALYST("anl", "Analyst"),
-
-  /**
-   * Use for a person or organization who draws the two-dimensional figures, manipulates the three dimensional objects and/or also programs the computer to move objects and images for the purpose of animated film processing. Animation cameras, stands, celluloid screens, transparencies and inks are some of the tools of the animator.
-   */
-  ANIMATOR("anm", "Animator"),
-
-  /**
-   * Use for a person who writes manuscript annotations on a printed item.
-   */
-  ANNOTATOR("ann", "Annotator"),
-
-  /**
-   * Use for a person or organization responsible for the submission of an application or who is named as eligible for the results of the processing of the application (e.g., bestowing of rights, reward, title, position).
-   */
-  APPLICANT("app", "Applicant"),
-
-  /**
-   * Use for a person or organization who designs structures or oversees their construction.
-   */
-  ARCHITECT("arc", "Architect"),
-
-  /**
-   * Use for a person or organization who transcribes a musical composition, usually for a different medium from that of the original; in an arrangement the musical substance remains essentially unchanged.
-   */
-  ARRANGER("arr", "Arranger"),
-
-  /**
-   * Use for a person (e.g., a painter or sculptor) who makes copies of works of visual art.
-   */
-  ART_COPYIST("acp", "Art copyist"),
-
-  /**
-   * Use for a person (e.g., a painter) or organization who conceives, and perhaps also implements, an original graphic design or work of art, if specific codes (e.g., [egr], [etr]) are not desired. For book illustrators, prefer Illustrator [ill].
-   */
-  ARTIST("art", "Artist"),
-
-  /**
-   * Use for a person responsible for controlling the development of the artistic style of an entire production, including the choice of works to be presented and selection of senior production staff.
-   */
-  ARTISTIC_DIRECTOR("ard", "Artistic director"),
-
-  /**
-   * Use for a person or organization to whom a license for printing or publishing has been transferred.
-   */
-  ASSIGNEE("asg", "Assignee"),
-
-  /**
-   * Use for a person or organization associated with or found in an item or collection, which cannot be determined to be that of a Former owner [fmo] or other designated relator indicative of provenance.
-   */
-  ASSOCIATED_NAME("asn", "Associated name"),
-
-  /**
-   * Use for an author, artist, etc., relating him/her to a work for which there is or once was substantial authority for designating that person as author, creator, etc. of the work.
-   */
-  ATTRIBUTED_NAME("att", "Attributed name"),
-
-  /**
-   * Use for a person or organization in charge of the estimation and public auctioning of goods, particularly books, artistic works, etc.
-   */
-  AUCTIONEER("auc", "Auctioneer"),
-
-  /**
-   * Use for a person or organization chiefly responsible for the intellectual or artistic content of a work, usually printed text. This term may also be used when more than one person or body bears such responsibility.
-   */
-  AUTHOR("aut", "Author"),
-
-  /**
-   * Use for a person or organization whose work is largely quoted or extracted in works to which he or she did not contribute directly. Such quotations are found particularly in exhibition catalogs, collections of photographs, etc.
-   */
-  AUTHOR_IN_QUOTATIONS_OR_TEXT_EXTRACTS("aqt",
-      "Author in quotations or text extracts"),
-
-  /**
-   * Use for a person or organization responsible for an afterword, postface, colophon, etc. but who is not the chief author of a work.
-   */
-  AUTHOR_OF_AFTERWORD_COLOPHON_ETC("aft",
-      "Author of afterword, colophon, etc."),
-
-  /**
-   * Use for a person or organization responsible for the dialog or spoken commentary for a screenplay or sound recording.
-   */
-  AUTHOR_OF_DIALOG("aud", "Author of dialog"),
-
-  /**
-   * Use for a person or organization responsible for an introduction, preface, foreword, or other critical introductory matter, but who is not the chief author.
-   */
-  AUTHOR_OF_INTRODUCTION_ETC("aui", "Author of introduction, etc."),
-
-  /**
-   * Use for a person or organization responsible for a motion picture screenplay, dialog, spoken commentary, etc.
-   */
-  AUTHOR_OF_SCREENPLAY_ETC("aus", "Author of screenplay, etc."),
-
-  /**
-   * Use for a person or organization responsible for a work upon which the work represented by the catalog record is based. This may be appropriate for adaptations, sequels, continuations, indexes, etc.
-   */
-  BIBLIOGRAPHIC_ANTECEDENT("ant", "Bibliographic antecedent"),
-
-  /**
-   * Use for a person or organization responsible for the binding of printed or manuscript materials.
-   */
-  BINDER("bnd", "Binder"),
-
-  /**
-   * Use for a person or organization responsible for the binding design of a book, including the type of binding, the type of materials used, and any decorative aspects of the binding.
-   */
-  BINDING_DESIGNER("bdd", "Binding designer"),
-
-  /**
-   * Use for the named entity responsible for writing a commendation or testimonial for a work, which appears on or within the publication itself, frequently on the back or dust jacket of print publications or on advertising material for all media.
-   */
-  BLURB_WRITER("blw", "Blurb writer"),
-
-  /**
-   * Use for a person or organization responsible for the entire graphic design of a book, including arrangement of type and illustration, choice of materials, and process used.
-   */
-  BOOK_DESIGNER("bkd", "Book designer"),
-
-  /**
-   * Use for a person or organization responsible for the production of books and other print media, if specific codes (e.g., [bkd], [egr], [tyd], [prt]) are not desired.
-   */
-  BOOK_PRODUCER("bkp", "Book producer"),
-
-  /**
-   * Use for a person or organization responsible for the design of flexible covers designed for or published with a book, including the type of materials used, and any decorative aspects of the bookjacket.
-   */
-  BOOKJACKET_DESIGNER("bjd", "Bookjacket designer"),
-
-  /**
-   * Use for a person or organization responsible for the design of a book owner's identification label that is most commonly pasted to the inside front cover of a book.
-   */
-  BOOKPLATE_DESIGNER("bpd", "Bookplate designer"),
-
-  /**
-   * Use for a person or organization who makes books and other bibliographic materials available for purchase. Interest in the materials is primarily lucrative.
-   */
-  BOOKSELLER("bsl", "Bookseller"),
-
-  /**
-   * Use for a person or organization who writes in an artistic hand, usually as a copyist and or engrosser.
-   */
-  CALLIGRAPHER("cll", "Calligrapher"),
-
-  /**
-   * Use for a person or organization responsible for the creation of maps and other cartographic materials.
-   */
-  CARTOGRAPHER("ctg", "Cartographer"),
-
-  /**
-   * Use for a censor, bowdlerizer, expurgator, etc., official or private.
-   */
-  CENSOR("cns", "Censor"),
-
-  /**
-   * Use for a person or organization who composes or arranges dances or other movements (e.g., "master of swords") for a musical or dramatic presentation or entertainment.
-   */
-  CHOREOGRAPHER("chr", "Choreographer"),
-
-  /**
-   * Use for a person or organization who is in charge of the images captured for a motion picture film. The cinematographer works under the supervision of a director, and may also be referred to as director of photography. Do not confuse with videographer.
-   */
-  CINEMATOGRAPHER("cng", "Cinematographer"),
-
-  /**
-   * Use for a person or organization for whom another person or organization is acting.
-   */
-  CLIENT("cli", "Client"),
-
-  /**
-   * Use for a person or organization that takes a limited part in the elaboration of a work of another person or organization that brings complements (e.g., appendices, notes) to the work.
-   */
-  COLLABORATOR("clb", "Collaborator"),
-
-  /**
-   * Use for a person or organization who has brought together material from various sources that has been arranged, described, and cataloged as a collection. A collector is neither the creator of the material nor a person to whom manuscripts in the collection may have been addressed.
-   */
-  COLLECTOR("col", "Collector"),
-
-  /**
-   * Use for a person or organization responsible for the production of photographic prints from film or other colloid that has ink-receptive and ink-repellent surfaces.
-   */
-  COLLOTYPER("clt", "Collotyper"),
-
-  /**
-   * Use for the named entity responsible for applying color to drawings, prints, photographs, maps, moving images, etc.
-   */
-  COLORIST("clr", "Colorist"),
-
-  /**
-   * Use for a person or organization who provides interpretation, analysis, or a discussion of the subject matter on a recording, motion picture, or other audiovisual medium.
-   */
-  COMMENTATOR("cmm", "Commentator"),
-
-  /**
-   * Use for a person or organization responsible for the commentary or explanatory notes about a text. For the writer of manuscript annotations in a printed book, use Annotator [ann].
-   */
-  COMMENTATOR_FOR_WRITTEN_TEXT("cwt", "Commentator for written text"),
-
-  /**
-   * Use for a person or organization who produces a work or publication by selecting and putting together material from the works of various persons or bodies.
-   */
-  COMPILER("com", "Compiler"),
-
-  /**
-   * Use for the party who applies to the courts for redress, usually in an equity proceeding.
-   */
-  COMPLAINANT("cpl", "Complainant"),
-
-  /**
-   * Use for a complainant who takes an appeal from one court or jurisdiction to another to reverse the judgment, usually in an equity proceeding.
-   */
-  COMPLAINANT_APPELLANT("cpt", "Complainant-appellant"),
-
-  /**
-   * Use for a complainant against whom an appeal is taken from one court or jurisdiction to another to reverse the judgment, usually in an equity proceeding.
-   */
-  COMPLAINANT_APPELLEE("cpe", "Complainant-appellee"),
-
-  /**
-   * Use for a person or organization who creates a musical work, usually a piece of music in manuscript or printed form.
-   */
-  COMPOSER("cmp", "Composer"),
-
-  /**
-   * Use for a person or organization responsible for the creation of metal slug, or molds made of other materials, used to produce the text and images in printed matter.
-   */
-  COMPOSITOR("cmt", "Compositor"),
-
-  /**
-   * Use for a person or organization responsible for the original idea on which a work is based, this includes the scientific author of an audio-visual item and the conceptor of an advertisement.
-   */
-  CONCEPTOR("ccp", "Conceptor"),
-
-  /**
-   * Use for a person who directs a performing group (orchestra, chorus, opera, etc.) in a musical or dramatic presentation or entertainment.
-   */
-  CONDUCTOR("cnd", "Conductor"),
-
-  /**
-   * Use for the named entity responsible for documenting, preserving, or treating printed or manuscript material, works of art, artifacts, or other media.
-   */
-  CONSERVATOR("con", "Conservator"),
-
-  /**
-   * Use for a person or organization relevant to a resource, who is called upon for professional advice or services in a specialized field of knowledge or training.
-   */
-  CONSULTANT("csl", "Consultant"),
-
-  /**
-   * Use for a person or organization relevant to a resource, who is engaged specifically to provide an intellectual overview of a strategic or operational task and by analysis, specification, or instruction, to create or propose a cost-effective course of action or solution.
-   */
-  CONSULTANT_TO_A_PROJECT("csp", "Consultant to a project"),
-
-  /**
-   * Use for the party who opposes, resists, or disputes, in a court of law, a claim, decision, result, etc.
-   */
-  CONTESTANT("cos", "Contestant"),
-
-  /**
-   * Use for a contestant who takes an appeal from one court of law or jurisdiction to another to reverse the judgment.
-   */
-  CONTESTANT_APPELLANT("cot", "Contestant-appellant"),
-
-  /**
-   * Use for a contestant against whom an appeal is taken from one court of law or jurisdiction to another to reverse the judgment.
-   */
-  CONTESTANT_APPELLEE("coe", "Contestant-appellee"),
-
-  /**
-   * Use for the party defending a claim, decision, result, etc. being opposed, resisted, or disputed in a court of law.
-   */
-  CONTESTEE("cts", "Contestee"),
-
-  /**
-   * Use for a contestee who takes an appeal from one court or jurisdiction to another to reverse the judgment.
-   */
-  CONTESTEE_APPELLANT("ctt", "Contestee-appellant"),
-
-  /**
-   * Use for a contestee against whom an appeal is taken from one court or jurisdiction to another to reverse the judgment.
-   */
-  CONTESTEE_APPELLEE("cte", "Contestee-appellee"),
-
-  /**
-   * Use for a person or organization relevant to a resource, who enters into a contract with another person or organization to perform a specific task.
-   */
-  CONTRACTOR("ctr", "Contractor"),
-
-  /**
-   * Use for a person or organization one whose work has been contributed to a larger work, such as an anthology, serial publication, or other compilation of individual works. Do not use if the sole function in relation to a work is as author, editor, compiler or translator.
-   */
-  CONTRIBUTOR("ctb", "Contributor"),
-
-  /**
-   * Use for a person or organization listed as a copyright owner at the time of registration. Copyright can be granted or later transferred to another person or organization, at which time the claimant becomes the copyright holder.
-   */
-  COPYRIGHT_CLAIMANT("cpc", "Copyright claimant"),
-
-  /**
-   * Use for a person or organization to whom copy and legal rights have been granted or transferred for the intellectual content of a work. The copyright holder, although not necessarily the creator of the work, usually has the exclusive right to benefit financially from the sale and use of the work to which the associated copyright protection applies.
-   */
-  COPYRIGHT_HOLDER("cph", "Copyright holder"),
-
-  /**
-   * Use for a person or organization who is a corrector of manuscripts, such as the scriptorium official who corrected the work of a scribe. For printed matter, use Proofreader.
-   */
-  CORRECTOR("crr", "Corrector"),
-
-  /**
-   * Use for a person or organization who was either the writer or recipient of a letter or other communication.
-   */
-  CORRESPONDENT("crp", "Correspondent"),
-
-  /**
-   * Use for a person or organization who designs or makes costumes, fixes hair, etc., for a musical or dramatic presentation or entertainment.
-   */
-  COSTUME_DESIGNER("cst", "Costume designer"),
-
-  /**
-   * Use for a person or organization responsible for the graphic design of a book cover, album cover, slipcase, box, container, etc. For a person or organization responsible for the graphic design of an entire book, use Book designer; for book jackets, use Bookjacket designer.
-   */
-  COVER_DESIGNER("cov", "Cover designer"),
-
-  /**
-   * Use for a person or organization responsible for the intellectual or artistic content of a work.
-   */
-  CREATOR("cre", "Creator"),
-
-  /**
-   * Use for a person or organization responsible for conceiving and organizing an exhibition.
-   */
-  CURATOR_OF_AN_EXHIBITION("cur", "Curator of an exhibition"),
-
-  /**
-   * Use for a person or organization who principally exhibits dancing skills in a musical or dramatic presentation or entertainment.
-   */
-  DANCER("dnc", "Dancer"),
-
-  /**
-   * Use for a person or organization that submits data for inclusion in a database or other collection of data.
-   */
-  DATA_CONTRIBUTOR("dtc", "Data contributor"),
-
-  /**
-   * Use for a person or organization responsible for managing databases or other data sources.
-   */
-  DATA_MANAGER("dtm", "Data manager"),
-
-  /**
-   * Use for a person or organization to whom a book, manuscript, etc., is dedicated (not the recipient of a gift).
-   */
-  DEDICATEE("dte", "Dedicatee"),
-
-  /**
-   * Use for the author of a dedication, which may be a formal statement or in epistolary or verse form.
-   */
-  DEDICATOR("dto", "Dedicator"),
-
-  /**
-   * Use for the party defending or denying allegations made in a suit and against whom relief or recovery is sought in the courts, usually in a legal action.
-   */
-  DEFENDANT("dfd", "Defendant"),
-
-  /**
-   * Use for a defendant who takes an appeal from one court or jurisdiction to another to reverse the judgment, usually in a legal action.
-   */
-  DEFENDANT_APPELLANT("dft", "Defendant-appellant"),
-
-  /**
-   * Use for a defendant against whom an appeal is taken from one court or jurisdiction to another to reverse the judgment, usually in a legal action.
-   */
-  DEFENDANT_APPELLEE("dfe", "Defendant-appellee"),
-
-  /**
-   * Use for the organization granting a degree for which the thesis or dissertation described was presented.
-   */
-  DEGREE_GRANTOR("dgg", "Degree grantor"),
-
-  /**
-   * Use for a person or organization executing technical drawings from others' designs.
-   */
-  DELINEATOR("dln", "Delineator"),
-
-  /**
-   * Use for an entity depicted or portrayed in a work, particularly in a work of art.
-   */
-  DEPICTED("dpc", "Depicted"),
-
-  /**
-   * Use for a person or organization placing material in the physical custody of a library or repository without transferring the legal title.
-   */
-  DEPOSITOR("dpt", "Depositor"),
-
-  /**
-   * Use for a person or organization responsible for the design if more specific codes (e.g., [bkd], [tyd]) are not desired.
-   */
-  DESIGNER("dsr", "Designer"),
-
-  /**
-   * Use for a person or organization who is responsible for the general management of a work or who supervises the production of a performance for stage, screen, or sound recording.
-   */
-  DIRECTOR("drt", "Director"),
-
-  /**
-   * Use for a person who presents a thesis for a university or higher-level educational degree.
-   */
-  DISSERTANT("dis", "Dissertant"),
-
-  /**
-   * Use for the name of a place from which a resource, e.g., a serial, is distributed.
-   */
-  DISTRIBUTION_PLACE("dbp", "Distribution place"),
-
-  /**
-   * Use for a person or organization that has exclusive or shared marketing rights for an item.
-   */
-  DISTRIBUTOR("dst", "Distributor"),
-
-  /**
-   * Use for a person or organization who is the donor of a book, manuscript, etc., to its present owner. Donors to previous owners are designated as Former owner [fmo] or Inscriber [ins].
-   */
-  DONOR("dnr", "Donor"),
-
-  /**
-   * Use for a person or organization who prepares artistic or technical drawings.
-   */
-  DRAFTSMAN("drm", "Draftsman"),
-
-  /**
-   * Use for a person or organization to which authorship has been dubiously or incorrectly ascribed.
-   */
-  DUBIOUS_AUTHOR("dub", "Dubious author"),
-
-  /**
-   * Use for a person or organization who prepares for publication a work not primarily his/her own, such as by elucidating text, adding introductory or other critical matter, or technically directing an editorial staff.
-   */
-  EDITOR("edt", "Editor"),
-
-  /**
-   * Use for a person responsible for setting up a lighting rig and focusing the lights for a production, and running the lighting at a performance.
-   */
-  ELECTRICIAN("elg", "Electrician"),
-
-  /**
-   * Use for a person or organization who creates a duplicate printing surface by pressure molding and electrodepositing of metal that is then backed up with lead for printing.
-   */
-  ELECTROTYPER("elt", "Electrotyper"),
-
-  /**
-   * Use for a person or organization that is responsible for technical planning and design, particularly with construction.
-   */
-  ENGINEER("eng", "Engineer"),
-
-  /**
-   * Use for a person or organization who cuts letters, figures, etc. on a surface, such as a wooden or metal plate, for printing.
-   */
-  ENGRAVER("egr", "Engraver"),
-
-  /**
-   * Use for a person or organization who produces text or images for printing by subjecting metal, glass, or some other surface to acid or the corrosive action of some other substance.
-   */
-  ETCHER("etr", "Etcher"),
-
-  /**
-   * Use for the name of the place where an event such as a conference or a concert took place.
-   */
-  EVENT_PLACE("evp", "Event place"),
-
-  /**
-   * Use for a person or organization in charge of the description and appraisal of the value of goods, particularly rare items, works of art, etc.
-   */
-  EXPERT("exp", "Expert"),
-
-  /**
-   * Use for a person or organization that executed the facsimile.
-   */
-  FACSIMILIST("fac", "Facsimilist"),
-
-  /**
-   * Use for a person or organization that manages or supervises the work done to collect raw data or do research in an actual setting or environment (typically applies to the natural and social sciences).
-   */
-  FIELD_DIRECTOR("fld", "Field director"),
-
-  /**
-   * Use for a person or organization who is an editor of a motion picture film. This term is used regardless of the medium upon which the motion picture is produced or manufactured (e.g., acetate film, video tape).
-   */
-  FILM_EDITOR("flm", "Film editor"),
-
-  /**
-   * Use for a person or organization who is identified as the only party or the party of the first part. In the case of transfer of right, this is the assignor, transferor, licensor, grantor, etc. Multiple parties can be named jointly as the first party
-   */
-  FIRST_PARTY("fpy", "First party"),
-
-  /**
-   * Use for a person or organization who makes or imitates something of value or importance, especially with the intent to defraud.
-   */
-  FORGER("frg", "Forger"),
-
-  /**
-   * Use for a person or organization who owned an item at any time in the past. Includes those to whom the material was once presented. A person or organization giving the item to the present owner is designated as Donor [dnr]
-   */
-  FORMER_OWNER("fmo", "Former owner"),
-
-  /**
-   * Use for a person or organization that furnished financial support for the production of the work.
-   */
-  FUNDER("fnd", "Funder"),
-
-  /**
-   * Use for a person responsible for geographic information system (GIS) development and integration with global positioning system data.
-   */
-  GEOGRAPHIC_INFORMATION_SPECIALIST("gis", "Geographic information specialist"),
-
-  /**
-   * Use for a person or organization in memory or honor of whom a book, manuscript, etc. is donated.
-   */
-  HONOREE("hnr", "Honoree"),
-
-  /**
-   * Use for a person who is invited or regularly leads a program (often broadcast) that includes other guests, performers, etc. (e.g., talk show host).
-   */
-  HOST("hst", "Host"),
-
-  /**
-   * Use for a person or organization responsible for the decoration of a work (especially manuscript material) with precious metals or color, usually with elaborate designs and motifs.
-   */
-  ILLUMINATOR("ilu", "Illuminator"),
-
-  /**
-   * Use for a person or organization who conceives, and perhaps also implements, a design or illustration, usually to accompany a written text.
-   */
-  ILLUSTRATOR("ill", "Illustrator"),
-
-  /**
-   * Use for a person who signs a presentation statement.
-   */
-  INSCRIBER("ins", "Inscriber"),
-
-  /**
-   * Use for a person or organization who principally plays an instrument in a musical or dramatic presentation or entertainment.
-   */
-  INSTRUMENTALIST("itr", "Instrumentalist"),
-
-  /**
-   * Use for a person or organization who is interviewed at a consultation or meeting, usually by a reporter, pollster, or some other information gathering agent.
-   */
-  INTERVIEWEE("ive", "Interviewee"),
-
-  /**
-   * Use for a person or organization who acts as a reporter, pollster, or other information gathering agent in a consultation or meeting involving one or more individuals.
-   */
-  INTERVIEWER("ivr", "Interviewer"),
-
-  /**
-   * Use for a person or organization who first produces a particular useful item, or develops a new process for obtaining a known item or result.
-   */
-  INVENTOR("inv", "Inventor"),
-
-  /**
-   * Use for an institution that provides scientific analyses of material samples.
-   */
-  LABORATORY("lbr", "Laboratory"),
-
-  /**
-   * Use for a person or organization that manages or supervises work done in a controlled setting or environment.
-   */
-  LABORATORY_DIRECTOR("ldr", "Laboratory director"),
-
-  /**
-   * Use for a person or organization whose work involves coordinating the arrangement of existing and proposed land features and structures.
-   */
-  LANDSCAPE_ARCHITECT("lsa", "Landscape architect"),
-
-  /**
-   * Use to indicate that a person or organization takes primary responsibility for a particular activity or endeavor. Use with another relator term or code to show the greater importance this person or organization has regarding that particular role. If more than one relator is assigned to a heading, use the Lead relator only if it applies to all the relators.
-   */
-  LEAD("led", "Lead"),
-
-  /**
-   * Use for a person or organization permitting the temporary use of a book, manuscript, etc., such as for photocopying or microfilming.
-   */
-  LENDER("len", "Lender"),
-
-  /**
-   * Use for the party who files a libel in an ecclesiastical or admiralty case.
-   */
-  LIBELANT("lil", "Libelant"),
-
-  /**
-   * Use for a libelant who takes an appeal from one ecclesiastical court or admiralty to another to reverse the judgment.
-   */
-  LIBELANT_APPELLANT("lit", "Libelant-appellant"),
-
-  /**
-   * Use for a libelant against whom an appeal is taken from one ecclesiastical court or admiralty to another to reverse the judgment.
-   */
-  LIBELANT_APPELLEE("lie", "Libelant-appellee"),
-
-  /**
-   * Use for a party against whom a libel has been filed in an ecclesiastical court or admiralty.
-   */
-  LIBELEE("lel", "Libelee"),
-
-  /**
-   * Use for a libelee who takes an appeal from one ecclesiastical court or admiralty to another to reverse the judgment.
-   */
-  LIBELEE_APPELLANT("let", "Libelee-appellant"),
-
-  /**
-   * Use for a libelee against whom an appeal is taken from one ecclesiastical court or admiralty to another to reverse the judgment.
-   */
-  LIBELEE_APPELLEE("lee", "Libelee-appellee"),
-
-  /**
-   * Use for a person or organization who is a writer of the text of an opera, oratorio, etc.
-   */
-  LIBRETTIST("lbt", "Librettist"),
-
-  /**
-   * Use for a person or organization who is an original recipient of the right to print or publish.
-   */
-  LICENSEE("lse", "Licensee"),
-
-  /**
-   * Use for person or organization who is a signer of the license, imprimatur, etc.
-   */
-  LICENSOR("lso", "Licensor"),
-
-  /**
-   * Use for a person or organization who designs the lighting scheme for a theatrical presentation, entertainment, motion picture, etc.
-   */
-  LIGHTING_DESIGNER("lgd", "Lighting designer"),
-
-  /**
-   * Use for a person or organization who prepares the stone or plate for lithographic printing, including a graphic artist creating a design directly on the surface from which printing will be done.
-   */
-  LITHOGRAPHER("ltg", "Lithographer"),
-
-  /**
-   * Use for a person or organization who is a writer of the text of a song.
-   */
-  LYRICIST("lyr", "Lyricist"),
-
-  /**
-   * Use for a person or organization that makes an artifactual work (an object made or modified by one or more persons). Examples of artifactual works include vases, cannons or pieces of furniture.
-   */
-  MANUFACTURER("mfr", "Manufacturer"),
-
-  /**
-   * Use for the named entity responsible for marbling paper, cloth, leather, etc. used in construction of a resource.
-   */
-  MARBLER("mrb", "Marbler"),
-
-  /**
-   * Use for a person or organization performing the coding of SGML, HTML, or XML markup of metadata, text, etc.
-   */
-  MARKUP_EDITOR("mrk", "Markup editor"),
-
-  /**
-   * Use for a person or organization primarily responsible for compiling and maintaining the original description of a metadata set (e.g., geospatial metadata set).
-   */
-  METADATA_CONTACT("mdc", "Metadata contact"),
-
-  /**
-   * Use for a person or organization responsible for decorations, illustrations, letters, etc. cut on a metal surface for printing or decoration.
-   */
-  METAL_ENGRAVER("mte", "Metal-engraver"),
-
-  /**
-   * Use for a person who leads a program (often broadcast) where topics are discussed, usually with participation of experts in fields related to the discussion.
-   */
-  MODERATOR("mod", "Moderator"),
-
-  /**
-   * Use for a person or organization that supervises compliance with the contract and is responsible for the report and controls its distribution. Sometimes referred to as the grantee, or controlling agency.
-   */
-  MONITOR("mon", "Monitor"),
-
-  /**
-   * Use for a person who transcribes or copies musical notation
-   */
-  MUSIC_COPYIST("mcp", "Music copyist"),
-
-  /**
-   * Use for a person responsible for basic music decisions about a production, including coordinating the work of the composer, the sound editor, and sound mixers, selecting musicians, and organizing and/or conducting sound for rehearsals and performances.
-   */
-  MUSICAL_DIRECTOR("msd", "Musical director"),
-
-  /**
-   * Use for a person or organization who performs music or contributes to the musical content of a work when it is not possible or desirable to identify the function more precisely.
-   */
-  MUSICIAN("mus", "Musician"),
-
-  /**
-   * Use for a person who is a speaker relating the particulars of an act, occurrence, or course of events.
-   */
-  NARRATOR("nrt", "Narrator"),
-
-  /**
-   * Use for a person or organization responsible for opposing a thesis or dissertation.
-   */
-  OPPONENT("opn", "Opponent"),
-
-  /**
-   * Use for a person or organization responsible for organizing a meeting for which an item is the report or proceedings.
-   */
-  ORGANIZER_OF_MEETING("orm", "Organizer of meeting"),
-
-  /**
-   * Use for a person or organization performing the work, i.e., the name of a person or organization associated with the intellectual content of the work. This category does not include the publisher or personal affiliation, or sponsor except where it is also the corporate author.
-   */
-  ORIGINATOR("org", "Originator"),
-
-  /**
-   * Use for relator codes from other lists which have no equivalent in the MARC list or for terms which have not been assigned a code.
-   */
-  OTHER("oth", "Other"),
-
-  /**
-   * Use for a person or organization that currently owns an item or collection.
-   */
-  OWNER("own", "Owner"),
-
-  /**
-   * Use for a person or organization responsible for the production of paper, usually from wood, cloth, or other fibrous material.
-   */
-  PAPERMAKER("ppm", "Papermaker"),
-
-  /**
-   * Use for a person or organization that applied for a patent.
-   */
-  PATENT_APPLICANT("pta", "Patent applicant"),
-
-  /**
-   * Use for a person or organization that was granted the patent referred to by the item.
-   */
-  PATENT_HOLDER("pth", "Patent holder"),
-
-  /**
-   * Use for a person or organization responsible for commissioning a work. Usually a patron uses his or her means or influence to support the work of artists, writers, etc. This includes those who commission and pay for individual works.
-   */
-  PATRON("pat", "Patron"),
-
-  /**
-   * Use for a person or organization who exhibits musical or acting skills in a musical or dramatic presentation or entertainment, if specific codes for those functions ([act], [dnc], [itr], [voc], etc.) are not used. If specific codes are used, [prf] is used for a person whose principal skill is not known or specified.
-   */
-  PERFORMER("prf", "Performer"),
-
-  /**
-   * Use for an authority (usually a government agency) that issues permits under which work is accomplished.
-   */
-  PERMITTING_AGENCY("pma", "Permitting agency"),
-
-  /**
-   * Use for a person or organization responsible for taking photographs, whether they are used in their original form or as reproductions.
-   */
-  PHOTOGRAPHER("pht", "Photographer"),
-
-  /**
-   * Use for the party who complains or sues in court in a personal action, usually in a legal proceeding.
-   */
-  PLAINTIFF("ptf", "Plaintiff"),
-
-  /**
-   * Use for a plaintiff who takes an appeal from one court or jurisdiction to another to reverse the judgment, usually in a legal proceeding.
-   */
-  PLAINTIFF_APPELLANT("ptt", "Plaintiff-appellant"),
-
-  /**
-   * Use for a plaintiff against whom an appeal is taken from one court or jurisdiction to another to reverse the judgment, usually in a legal proceeding.
-   */
-  PLAINTIFF_APPELLEE("pte", "Plaintiff-appellee"),
-
-  /**
-   * Use for a person or organization responsible for the production of plates, usually for the production of printed images and/or text.
-   */
-  PLATEMAKER("plt", "Platemaker"),
-
-  /**
-   * Use for a person or organization who prints texts, whether from type or plates.
-   */
-  PRINTER("prt", "Printer"),
-
-  /**
-   * Use for a person or organization who prints illustrations from plates.
-   */
-  PRINTER_OF_PLATES("pop", "Printer of plates"),
-
-  /**
-   * Use for a person or organization who makes a relief, intaglio, or planographic printing surface.
-   */
-  PRINTMAKER("prm", "Printmaker"),
-
-  /**
-   * Use for a person or organization primarily responsible for performing or initiating a process, such as is done with the collection of metadata sets.
-   */
-  PROCESS_CONTACT("prc", "Process contact"),
-
-  /**
-   * Use for a person or organization responsible for the making of a motion picture, including business aspects, management of the productions, and the commercial success of the work.
-   */
-  PRODUCER("pro", "Producer"),
-
-  /**
-   * Use for a person responsible for all technical and business matters in a production.
-   */
-  PRODUCTION_MANAGER("pmn", "Production manager"),
-
-  /**
-   * Use for a person or organization associated with the production (props, lighting, special effects, etc.) of a musical or dramatic presentation or entertainment.
-   */
-  PRODUCTION_PERSONNEL("prd", "Production personnel"),
-
-  /**
-   * Use for a person or organization responsible for the creation and/or maintenance of computer program design documents, source code, and machine-executable digital files and supporting documentation.
-   */
-  PROGRAMMER("prg", "Programmer"),
-
-  /**
-   * Use for a person or organization with primary responsibility for all essential aspects of a project, or that manages a very large project that demands senior level responsibility, or that has overall responsibility for managing projects, or provides overall direction to a project manager.
-   */
-  PROJECT_DIRECTOR("pdr", "Project director"),
-
-  /**
-   * Use for a person who corrects printed matter. For manuscripts, use Corrector [crr].
-   */
-  PROOFREADER("pfr", "Proofreader"),
-
-  /**
-   * Use for the name of the place where a resource is published.
-   */
-  PUBLICATION_PLACE("pup", "Publication place"),
-
-  /**
-   * Use for a person or organization that makes printed matter, often text, but also printed music, artwork, etc. available to the public.
-   */
-  PUBLISHER("pbl", "Publisher"),
-
-  /**
-   * Use for a person or organization who presides over the elaboration of a collective work to ensure its coherence or continuity. This includes editors-in-chief, literary editors, editors of series, etc.
-   */
-  PUBLISHING_DIRECTOR("pbd", "Publishing director"),
-
-  /**
-   * Use for a person or organization who manipulates, controls, or directs puppets or marionettes in a musical or dramatic presentation or entertainment.
-   */
-  PUPPETEER("ppt", "Puppeteer"),
-
-  /**
-   * Use for a person or organization to whom correspondence is addressed.
-   */
-  RECIPIENT("rcp", "Recipient"),
-
-  /**
-   * Use for a person or organization who supervises the technical aspects of a sound or video recording session.
-   */
-  RECORDING_ENGINEER("rce", "Recording engineer"),
-
-  /**
-   * Use for a person or organization who writes or develops the framework for an item without being intellectually responsible for its content.
-   */
-  REDACTOR("red", "Redactor"),
-
-  /**
-   * Use for a person or organization who prepares drawings of architectural designs (i.e., renderings) in accurate, representational perspective to show what the project will look like when completed.
-   */
-  RENDERER("ren", "Renderer"),
-
-  /**
-   * Use for a person or organization who writes or presents reports of news or current events on air or in print.
-   */
-  REPORTER("rpt", "Reporter"),
-
-  /**
-   * Use for an agency that hosts data or material culture objects and provides services to promote long term, consistent and shared use of those data or objects.
-   */
-  REPOSITORY("rps", "Repository"),
-
-  /**
-   * Use for a person who directed or managed a research project.
-   */
-  RESEARCH_TEAM_HEAD("rth", "Research team head"),
-
-  /**
-   * Use for a person who participated in a research project but whose role did not involve direction or management of it.
-   */
-  RESEARCH_TEAM_MEMBER("rtm", "Research team member"),
-
-  /**
-   * Use for a person or organization responsible for performing research.
-   */
-  RESEARCHER("res", "Researcher"),
-
-  /**
-   * Use for the party who makes an answer to the courts pursuant to an application for redress, usually in an equity proceeding.
-   */
-  RESPONDENT("rsp", "Respondent"),
-
-  /**
-   * Use for a respondent who takes an appeal from one court or jurisdiction to another to reverse the judgment, usually in an equity proceeding.
-   */
-  RESPONDENT_APPELLANT("rst", "Respondent-appellant"),
-
-  /**
-   * Use for a respondent against whom an appeal is taken from one court or jurisdiction to another to reverse the judgment, usually in an equity proceeding.
-   */
-  RESPONDENT_APPELLEE("rse", "Respondent-appellee"),
-
-  /**
-   * Use for a person or organization legally responsible for the content of the published material.
-   */
-  RESPONSIBLE_PARTY("rpy", "Responsible party"),
-
-  /**
-   * Use for a person or organization, other than the original choreographer or director, responsible for restaging a choreographic or dramatic work and who contributes minimal new content.
-   */
-  RESTAGER("rsg", "Restager"),
-
-  /**
-   * Use for a person or organization responsible for the review of a book, motion picture, performance, etc.
-   */
-  REVIEWER("rev", "Reviewer"),
-
-  /**
-   * Use for a person or organization responsible for parts of a work, often headings or opening parts of a manuscript, that appear in a distinctive color, usually red.
-   */
-  RUBRICATOR("rbr", "Rubricator"),
-
-  /**
-   * Use for a person or organization who is the author of a motion picture screenplay.
-   */
-  SCENARIST("sce", "Scenarist"),
-
-  /**
-   * Use for a person or organization who brings scientific, pedagogical, or historical competence to the conception and realization on a work, particularly in the case of audio-visual items.
-   */
-  SCIENTIFIC_ADVISOR("sad", "Scientific advisor"),
-
-  /**
-   * Use for a person who is an amanuensis and for a writer of manuscripts proper. For a person who makes pen-facsimiles, use Facsimilist [fac].
-   */
-  SCRIBE("scr", "Scribe"),
-
-  /**
-   * Use for a person or organization who models or carves figures that are three-dimensional representations.
-   */
-  SCULPTOR("scl", "Sculptor"),
-
-  /**
-   * Use for a person or organization who is identified as the party of the second part. In the case of transfer of right, this is the assignee, transferee, licensee, grantee, etc. Multiple parties can be named jointly as the second party.
-   */
-  SECOND_PARTY("spy", "Second party"),
-
-  /**
-   * Use for a person or organization who is a recorder, redactor, or other person responsible for expressing the views of a organization.
-   */
-  SECRETARY("sec", "Secretary"),
-
-  /**
-   * Use for a person or organization who translates the rough sketches of the art director into actual architectural structures for a theatrical presentation, entertainment, motion picture, etc. Set designers draw the detailed guides and specifications for building the set.
-   */
-  SET_DESIGNER("std", "Set designer"),
-
-  /**
-   * Use for a person whose signature appears without a presentation or other statement indicative of provenance. When there is a presentation statement, use Inscriber [ins].
-   */
-  SIGNER("sgn", "Signer"),
-
-  /**
-   * Use for a person or organization who uses his/her/their voice with or without instrumental accompaniment to produce music. A performance may or may not include actual words.
-   */
-  SINGER("sng", "Singer"),
-
-  /**
-   * Use for a person who produces and reproduces the sound score (both live and recorded), the installation of microphones, the setting of sound levels, and the coordination of sources of sound for a production.
-   */
-  SOUND_DESIGNER("sds", "Sound designer"),
-
-  /**
-   * Use for a person who participates in a program (often broadcast) and makes a formalized contribution or presentation generally prepared in advance.
-   */
-  SPEAKER("spk", "Speaker"),
-
-  /**
-   * Use for a person or organization that issued a contract or under the auspices of which a work has been written, printed, published, etc.
-   */
-  SPONSOR("spn", "Sponsor"),
-
-  /**
-   * Use for a person who is in charge of everything that occurs on a performance stage, and who acts as chief of all crews and assistant to a director during rehearsals.
-   */
-  STAGE_MANAGER("stm", "Stage manager"),
-
-  /**
-   * Use for an organization responsible for the development or enforcement of a standard.
-   */
-  STANDARDS_BODY("stn", "Standards body"),
-
-  /**
-   * Use for a person or organization who creates a new plate for printing by molding or copying another printing surface.
-   */
-  STEREOTYPER("str", "Stereotyper"),
-
-  /**
-   * Use for a person relaying a story with creative and/or theatrical interpretation.
-   */
-  STORYTELLER("stl", "Storyteller"),
-
-  /**
-   * Use for a person or organization that supports (by allocating facilities, staff, or other resources) a project, program, meeting, event, data objects, material culture objects, or other entities capable of support.
-   */
-  SUPPORTING_HOST("sht", "Supporting host"),
-
-  /**
-   * Use for a person or organization who does measurements of tracts of land, etc. to determine location, forms, and boundaries.
-   */
-  SURVEYOR("srv", "Surveyor"),
-
-  /**
-   * Use for a person who, in the context of a resource, gives instruction in an intellectual subject or demonstrates while teaching physical skills.
-   */
-  TEACHER("tch", "Teacher"),
-
-  /**
-   * Use for a person who is ultimately in charge of scenery, props, lights and sound for a production.
-   */
-  TECHNICAL_DIRECTOR("tcd", "Technical director"),
-
-  /**
-   * Use for a person under whose supervision a degree candidate develops and presents a thesis, mémoire, or text of a dissertation.
-   */
-  THESIS_ADVISOR("ths", "Thesis advisor"),
-
-  /**
-   * Use for a person who prepares a handwritten or typewritten copy from original material, including from dictated or orally recorded material. For makers of pen-facsimiles, use Facsimilist [fac].
-   */
-  TRANSCRIBER("trc", "Transcriber"),
-
-  /**
-   * Use for a person or organization who renders a text from one language into another, or from an older form of a language into the modern form.
-   */
-  TRANSLATOR("trl", "Translator"),
-
-  /**
-   * Use for a person or organization who designed the type face used in a particular item.
-   */
-  TYPE_DESIGNER("tyd", "Type designer"),
-
-  /**
-   * Use for a person or organization primarily responsible for choice and arrangement of type used in an item. If the typographer is also responsible for other aspects of the graphic design of a book (e.g., Book designer [bkd]), codes for both functions may be needed.
-   */
-  TYPOGRAPHER("tyg", "Typographer"),
-
-  /**
-   * Use for the name of a place where a university that is associated with a resource is located, for example, a university where an academic dissertation or thesis was presented.
-   */
-  UNIVERSITY_PLACE("uvp", "University place"),
-
-  /**
-   * Use for a person or organization in charge of a video production, e.g. the video recording of a stage production as opposed to a commercial motion picture. The videographer may be the camera operator or may supervise one or more camera operators. Do not confuse with cinematographer.
-   */
-  VIDEOGRAPHER("vdg", "Videographer"),
-
-  /**
-   * Use for a person or organization who principally exhibits singing skills in a musical or dramatic presentation or entertainment.
-   */
-  VOCALIST("voc", "Vocalist"),
-
-  /**
-   * Use for a person who verifies the truthfulness of an event or action.
-   */
-  WITNESS("wit", "Witness"),
-
-  /**
-   * Use for a person or organization who makes prints by cutting the image in relief on the end-grain of a wood block.
-   */
-  WOOD_ENGRAVER("wde", "Wood-engraver"),
-
-  /**
-   * Use for a person or organization who makes prints by cutting the image in relief on the plank side of a wood block.
-   */
-  WOODCUTTER("wdc", "Woodcutter"),
-
-  /**
-   * Use for a person or organization who writes significant material which accompanies a sound recording or other audiovisual material.
-   */
-  WRITER_OF_ACCOMPANYING_MATERIAL("wam", "Writer of accompanying material");
-
-  private final String code;
-  private final String name;
-
-  Relator(String code, String name) {
-    this.code = code;
-    this.name = name;
-  }
-
-  public String getCode() {
-    return code;
-  }
-
-  public String getName() {
-    return name;
-  }
-
-  public static Relator byCode(String code) {
-    for (Relator relator : Relator.values()) {
-      if (relator.getCode().equalsIgnoreCase(code)) {
-        return relator;
-      }
-    }
-    return null;
-  }
-
-}

+ 0 - 340
book/src/main/java/me/ag2s/epublib/domain/Resource.java

@@ -1,340 +0,0 @@
-package me.ag2s.epublib.domain;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-import java.io.Serializable;
-
-import me.ag2s.epublib.Constants;
-import me.ag2s.epublib.util.IOUtil;
-import me.ag2s.epublib.util.StringUtil;
-import me.ag2s.epublib.util.commons.io.XmlStreamReader;
-
-/**
- * Represents a resource that is part of the epub.
- * A resource can be a html file, image, xml, etc.
- *
- * @author paul
- *
- */
-public class Resource implements Serializable {
-
-  private static final long serialVersionUID = 1043946707835004037L;
-  private String id;
-  private String title;
-  private String href;
-
-
-
-  private String properties;
-  protected final String originalHref;
-  private MediaType mediaType;
-  private String inputEncoding;
-  protected byte[] data;
-
-  /**
-   * Creates an empty Resource with the given href.
-   *
-   * Assumes that if the data is of a text type (html/css/etc) then the encoding will be UTF-8
-   *
-   * @param href The location of the resource within the epub. Example: "chapter1.html".
-   */
-  public Resource(String href) {
-    this(null, new byte[0], href, MediaTypes.determineMediaType(href));
-  }
-
-  /**
-   * Creates a Resource with the given data and MediaType.
-   * The href will be automatically generated.
-   *
-   * Assumes that if the data is of a text type (html/css/etc) then the encoding will be UTF-8
-   *
-   * @param data The Resource's contents
-   * @param mediaType The MediaType of the Resource
-   */
-  public Resource(byte[] data, MediaType mediaType) {
-    this(null, data, null, mediaType);
-  }
-
-  /**
-   * Creates a resource with the given data at the specified href.
-   * The MediaType will be determined based on the href extension.
-   *
-   * Assumes that if the data is of a text type (html/css/etc) then the encoding will be UTF-8
-   *
-   * @see MediaTypes#determineMediaType(String)
-   *
-   * @param data The Resource's contents
-   * @param href The location of the resource within the epub. Example: "chapter1.html".
-   */
-  public Resource(byte[] data, String href) {
-    this(null, data, href, MediaTypes.determineMediaType(href),
-        Constants.CHARACTER_ENCODING);
-  }
-
-  /**
-   * Creates a resource with the data from the given Reader at the specified href.
-   * The MediaType will be determined based on the href extension.
-   *
-   * @see MediaTypes#determineMediaType(String)
-   *
-   * @param in The Resource's contents
-   * @param href The location of the resource within the epub. Example: "cover.jpg".
-   */
-  public Resource(Reader in, String href) throws IOException {
-    this(null, IOUtil.toByteArray(in, Constants.CHARACTER_ENCODING), href,
-        MediaTypes.determineMediaType(href),
-        Constants.CHARACTER_ENCODING);
-  }
-
-  /**
-   * Creates a resource with the data from the given InputStream at the specified href.
-   * The MediaType will be determined based on the href extension.
-   *
-   * @see MediaTypes#determineMediaType(String)
-   *
-   * Assumes that if the data is of a text type (html/css/etc) then the encoding will be UTF-8
-   *
-   * It is recommended to us the {@link #Resource(Reader, String)} method for creating textual
-   * (html/css/etc) resources to prevent encoding problems.
-   * Use this method only for binary Resources like images, fonts, etc.
-   *
-   *
-   * @param in The Resource's contents
-   * @param href The location of the resource within the epub. Example: "cover.jpg".
-   */
-  public Resource(InputStream in, String href) throws IOException {
-    this(null, IOUtil.toByteArray(in), href,
-        MediaTypes.determineMediaType(href));
-  }
-
-  /**
-   * Creates a resource with the given id, data, mediatype at the specified href.
-   * Assumes that if the data is of a text type (html/css/etc) then the encoding will be UTF-8
-   *
-   * @param id The id of the Resource. Internal use only. Will be auto-generated if it has a null-value.
-   * @param data The Resource's contents
-   * @param href The location of the resource within the epub. Example: "chapter1.html".
-   * @param mediaType The resources MediaType
-   */
-  public Resource(String id, byte[] data, String href, MediaType mediaType) {
-    this(id, data, href, mediaType, Constants.CHARACTER_ENCODING);
-  }
-  public Resource(String id, byte[] data, String href, String originalHref, MediaType mediaType) {
-    this(id, data, href, originalHref, mediaType, Constants.CHARACTER_ENCODING);
-  }
-
-
-  /**
-   * Creates a resource with the given id, data, mediatype at the specified href.
-   * If the data is of a text type (html/css/etc) then it will use the given inputEncoding.
-   *
-   * @param id The id of the Resource. Internal use only. Will be auto-generated if it has a null-value.
-   * @param data The Resource's contents
-   * @param href The location of the resource within the epub. Example: "chapter1.html".
-   * @param mediaType The resources MediaType
-   * @param inputEncoding If the data is of a text type (html/css/etc) then it will use the given inputEncoding.
-   */
-  public Resource(String id, byte[] data, String href, MediaType mediaType,
-      String inputEncoding) {
-    this.id = id;
-    this.href = href;
-    this.originalHref = href;
-    this.mediaType = mediaType;
-    this.inputEncoding = inputEncoding;
-    this.data = data;
-  }
-  public Resource(String id, byte[] data, String href, String originalHref, MediaType mediaType,
-      String inputEncoding) {
-    this.id = id;
-    this.href = href;
-    this.originalHref = originalHref;
-    this.mediaType = mediaType;
-    this.inputEncoding = inputEncoding;
-    this.data = data;
-  }
-
-  /**
-   * Gets the contents of the Resource as an InputStream.
-   *
-   * @return The contents of the Resource.
-   *
-   * @throws IOException IOException
-   */
-  public InputStream getInputStream() throws IOException {
-    return new ByteArrayInputStream(getData());
-  }
-
-  /**
-   * The contents of the resource as a byte[]
-   *
-   * @return The contents of the resource
-   */
-  public byte[] getData() throws IOException {
-    return data;
-  }
-
-  /**
-   * Tells this resource to release its cached data.
-   *
-   * If this resource was not lazy-loaded, this is a no-op.
-   */
-  public void close() {
-  }
-
-  /**
-   * Sets the data of the Resource.
-   * If the data is a of a different type then the original data then make sure to change the MediaType.
-   *
-   * @param data the data of the Resource
-   */
-  public void setData(byte[] data) {
-    this.data = data;
-  }
-
-  /**
-   * Returns the size of this resource in bytes.
-   *
-   * @return the size.
-   */
-  public long getSize() {
-    return data.length;
-  }
-
-  /**
-   * If the title is found by scanning the underlying html document then it is cached here.
-   *
-   * @return the title
-   */
-  public String getTitle() {
-    return title;
-  }
-
-  /**
-   * Sets the Resource's id: Make sure it is unique and a valid identifier.
-   *
-   * @param id Resource's id
-   */
-  public void setId(String id) {
-    this.id = id;
-  }
-
-  /**
-   * The resources Id.
-   *
-   * Must be both unique within all the resources of this book and a valid identifier.
-   * @return The resources Id.
-   */
-  public String getId() {
-    return id;
-  }
-
-  /**
-   * The location of the resource within the contents folder of the epub file.
-   *
-   * Example:<br/>
-   * images/cover.jpg<br/>
-   * content/chapter1.xhtml<br/>
-   *
-   * @return The location of the resource within the contents folder of the epub file.
-   */
-  public String getHref() {
-    return href;
-  }
-
-  /**
-   * Sets the Resource's href.
-   *
-   * @param href Resource's href.
-   */
-  public void setHref(String href) {
-    this.href = href;
-  }
-
-  /**
-   * The character encoding of the resource.
-   * Is allowed to be null for non-text resources like images.
-   *
-   * @return The character encoding of the resource.
-   */
-  public String getInputEncoding() {
-    return inputEncoding;
-  }
-
-  /**
-   * Sets the Resource's input character encoding.
-   *
-   * @param encoding Resource's input character encoding.
-   */
-  public void setInputEncoding(String encoding) {
-    this.inputEncoding = encoding;
-  }
-
-  /**
-   * Gets the contents of the Resource as Reader.
-   *
-   * Does all sorts of smart things (courtesy of apache commons io XMLStreamREader) to handle encodings, byte order markers, etc.
-   *
-   * @return the contents of the Resource as Reader.
-   * @throws IOException IOException
-   */
-  public Reader getReader() throws IOException {
-    return new XmlStreamReader(new ByteArrayInputStream(getData()),
-        getInputEncoding());
-  }
-
-  /**
-   * Gets the hashCode of the Resource's href.
-   *
-   */
-  public int hashCode() {
-    return href.hashCode();
-  }
-
-  /**
-   * Checks to see of the given resourceObject is a resource and whether its href is equal to this one.
-   *
-   * @return whether the given resourceObject is a resource and whether its href is equal to this one.
-   */
-  public boolean equals(Object resourceObject) {
-    if (!(resourceObject instanceof Resource)) {
-      return false;
-    }
-    return href.equals(((Resource) resourceObject).getHref());
-  }
-
-  /**
-   * This resource's mediaType.
-   *
-   * @return This resource's mediaType.
-   */
-  public MediaType getMediaType() {
-    return mediaType;
-  }
-
-  public void setMediaType(MediaType mediaType) {
-    this.mediaType = mediaType;
-  }
-
-  public void setTitle(String title) {
-    this.title = title;
-  }
-
-  public String getProperties() {
-    return properties;
-  }
-
-  public void setProperties(String properties) {
-    this.properties = properties;
-  }
-  @SuppressWarnings("NullableProblems")
-  public String toString() {
-    return StringUtil.toString("id", id,
-        "title", title,
-        "encoding", inputEncoding,
-        "mediaType", mediaType,
-        "href", href,
-        "size", (data == null ? 0 : data.length));
-  }
-}

+ 0 - 43
book/src/main/java/me/ag2s/epublib/domain/ResourceReference.java

@@ -1,43 +0,0 @@
-package me.ag2s.epublib.domain;
-
-import java.io.Serializable;
-
-public class ResourceReference implements Serializable {
-
-  private static final long serialVersionUID = 2596967243557743048L;
-
-  protected Resource resource;
-
-  public ResourceReference(Resource resource) {
-    this.resource = resource;
-  }
-
-
-  public Resource getResource() {
-    return resource;
-  }
-
-  /**
-   * Besides setting the resource it also sets the fragmentId to null.
-   *
-   * @param resource resource
-   */
-  public void setResource(Resource resource) {
-    this.resource = resource;
-  }
-
-
-  /**
-   * The id of the reference referred to.
-   *
-   * null of the reference is null or has a null id itself.
-   *
-   * @return The id of the reference referred to.
-   */
-  public String getResourceId() {
-    if (resource != null) {
-      return resource.getId();
-    }
-    return null;
-  }
-}

+ 0 - 192
book/src/main/java/me/ag2s/epublib/domain/Spine.java

@@ -1,192 +0,0 @@
-package me.ag2s.epublib.domain;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import me.ag2s.epublib.util.StringUtil;
-
-/**
- * The spine sections are the sections of the book in the order in which the book should be read.
- *
- * This contrasts with the Table of Contents sections which is an index into the Book's sections.
- *
- * @see TableOfContents
- *
- * @author paul
- */
-public class Spine implements Serializable {
-
-  private static final long serialVersionUID = 3878483958947357246L;
-  private Resource tocResource;
-  private List<SpineReference> spineReferences;
-
-  public Spine() {
-    this(new ArrayList<>());
-  }
-
-  /**
-   * Creates a spine out of all the resources in the table of contents.
-   *
-   * @param tableOfContents tableOfContents
-   */
-  public Spine(TableOfContents tableOfContents) {
-    this.spineReferences = createSpineReferences(
-        tableOfContents.getAllUniqueResources());
-  }
-
-  public Spine(List<SpineReference> spineReferences) {
-    this.spineReferences = spineReferences;
-  }
-
-  public static List<SpineReference> createSpineReferences(
-      Collection<Resource> resources) {
-    List<SpineReference> result = new ArrayList<>(
-            resources.size());
-    for (Resource resource : resources) {
-      result.add(new SpineReference(resource));
-    }
-    return result;
-  }
-
-  public List<SpineReference> getSpineReferences() {
-    return spineReferences;
-  }
-
-  public void setSpineReferences(List<SpineReference> spineReferences) {
-    this.spineReferences = spineReferences;
-  }
-
-  /**
-   * Gets the resource at the given index.
-   * Null if not found.
-   *
-   * @param index index
-   * @return the resource at the given index.
-   */
-  public Resource getResource(int index) {
-    if (index < 0 || index >= spineReferences.size()) {
-      return null;
-    }
-    return spineReferences.get(index).getResource();
-  }
-
-  /**
-   * Finds the first resource that has the given resourceId.
-   *
-   * Null if not found.
-   *
-   * @param resourceId resourceId
-   * @return the first resource that has the given resourceId.
-   */
-  public int findFirstResourceById(String resourceId) {
-    if (StringUtil.isBlank(resourceId)) {
-      return -1;
-    }
-
-    for (int i = 0; i < spineReferences.size(); i++) {
-      SpineReference spineReference = spineReferences.get(i);
-      if (resourceId.equals(spineReference.getResourceId())) {
-        return i;
-      }
-    }
-    return -1;
-  }
-
-  /**
-   * Adds the given spineReference to the spine references and returns it.
-   *
-   * @param spineReference spineReference
-   * @return the given spineReference
-   */
-  public SpineReference addSpineReference(SpineReference spineReference) {
-    if (spineReferences == null) {
-      this.spineReferences = new ArrayList<>();
-    }
-    spineReferences.add(spineReference);
-    return spineReference;
-  }
-
-  /**
-   * Adds the given resource to the spine references and returns it.
-   *
-   * @return the given spineReference
-   */
-  @SuppressWarnings("unused")
-  public SpineReference addResource(Resource resource) {
-    return addSpineReference(new SpineReference(resource));
-  }
-
-  /**
-   * The number of elements in the spine.
-   *
-   * @return The number of elements in the spine.
-   */
-  public int size() {
-    return spineReferences.size();
-  }
-
-  /**
-   * As per the epub file format the spine officially maintains a reference to the Table of Contents.
-   * The epubwriter will look for it here first, followed by some clever tricks to find it elsewhere if not found.
-   * Put it here to be sure of the expected behaviours.
-   *
-   * @param tocResource tocResource
-   */
-  public void setTocResource(Resource tocResource) {
-    this.tocResource = tocResource;
-  }
-
-  /**
-   * The resource containing the XML for the tableOfContents.
-   * When saving an epub file this resource needs to be in this place.
-   *
-   * @return The resource containing the XML for the tableOfContents.
-   */
-  public Resource getTocResource() {
-    return tocResource;
-  }
-
-  /**
-   * The position within the spine of the given resource.
-   *
-   * @param currentResource currentResource
-   * @return something &lt; 0 if not found.
-   *
-   */
-  public int getResourceIndex(Resource currentResource) {
-    if (currentResource == null) {
-      return -1;
-    }
-    return getResourceIndex(currentResource.getHref());
-  }
-
-  /**
-   * The first position within the spine of a resource with the given href.
-   *
-   * @return something &lt; 0 if not found.
-   *
-   */
-  public int getResourceIndex(String resourceHref) {
-    int result = -1;
-    if (StringUtil.isBlank(resourceHref)) {
-      return result;
-    }
-    for (int i = 0; i < spineReferences.size(); i++) {
-      if (resourceHref.equals(spineReferences.get(i).getResource().getHref())) {
-        result = i;
-        break;
-      }
-    }
-    return result;
-  }
-
-  /**
-   * Whether the spine has any references
-   * @return Whether the spine has any references
-   */
-  public boolean isEmpty() {
-    return spineReferences.isEmpty();
-  }
-}

+ 0 - 56
book/src/main/java/me/ag2s/epublib/domain/TOCReference.java

@@ -1,56 +0,0 @@
-package me.ag2s.epublib.domain;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-
-/**
- * An item in the Table of Contents.
- *
- * @see TableOfContents
- *
- * @author paul
- */
-public class TOCReference extends TitledResourceReference
-    implements Serializable {
-
-  private static final long serialVersionUID = 5787958246077042456L;
-  private List<TOCReference> children;
-  private static final Comparator<TOCReference> COMPARATOR_BY_TITLE_IGNORE_CASE = (tocReference1, tocReference2) -> String.CASE_INSENSITIVE_ORDER.compare(tocReference1.getTitle(), tocReference2.getTitle());
-  @Deprecated
-  public TOCReference() {
-    this(null, null, null);
-  }
-
-  public TOCReference(String name, Resource resource) {
-    this(name, resource, null);
-  }
-
-  public TOCReference(String name, Resource resource, String fragmentId) {
-    this(name, resource, fragmentId, new ArrayList<>());
-  }
-
-  public TOCReference(String title, Resource resource, String fragmentId,
-      List<TOCReference> children) {
-    super(resource, title, fragmentId);
-    this.children = children;
-  }
-  @SuppressWarnings("unused")
-  public static Comparator<TOCReference> getComparatorByTitleIgnoreCase() {
-    return COMPARATOR_BY_TITLE_IGNORE_CASE;
-  }
-
-  public List<TOCReference> getChildren() {
-    return children;
-  }
-
-  public TOCReference addChildSection(TOCReference childSection) {
-    this.children.add(childSection);
-    return childSection;
-  }
-
-  public void setChildren(List<TOCReference> children) {
-    this.children = children;
-  }
-}

+ 0 - 73
book/src/main/java/me/ag2s/epublib/epub/BookProcessorPipeline.java

@@ -1,73 +0,0 @@
-package me.ag2s.epublib.epub;
-
-import android.util.Log;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import me.ag2s.epublib.domain.EpubBook;
-
-/**
- * A book processor that combines several other bookprocessors
- * <p>
- * Fixes coverpage/coverimage.
- * Cleans up the XHTML.
- *
- * @author paul.siegmann
- */
-@SuppressWarnings("unused declaration")
-public class BookProcessorPipeline implements BookProcessor {
-
-  private static final String TAG= BookProcessorPipeline.class.getName();
-  private List<BookProcessor> bookProcessors;
-
-  public BookProcessorPipeline() {
-    this(null);
-  }
-
-  public BookProcessorPipeline(List<BookProcessor> bookProcessingPipeline) {
-    this.bookProcessors = bookProcessingPipeline;
-  }
-
-  @Override
-  public EpubBook processBook(EpubBook book) {
-    if (bookProcessors == null) {
-      return book;
-    }
-    for (BookProcessor bookProcessor : bookProcessors) {
-      try {
-        book = bookProcessor.processBook(book);
-      } catch (Exception e) {
-        Log.e(TAG, e.getMessage(), e);
-      }
-    }
-    return book;
-  }
-
-  public void addBookProcessor(BookProcessor bookProcessor) {
-    if (this.bookProcessors == null) {
-      bookProcessors = new ArrayList<>();
-    }
-    this.bookProcessors.add(bookProcessor);
-  }
-
-  public void addBookProcessors(Collection<BookProcessor> bookProcessors) {
-    if (this.bookProcessors == null) {
-      this.bookProcessors = new ArrayList<>();
-    }
-    this.bookProcessors.addAll(bookProcessors);
-  }
-
-
-  public List<BookProcessor> getBookProcessors() {
-    return bookProcessors;
-  }
-
-
-  public void setBookProcessingPipeline(
-      List<BookProcessor> bookProcessingPipeline) {
-    this.bookProcessors = bookProcessingPipeline;
-  }
-
-}

+ 0 - 190
book/src/main/java/me/ag2s/epublib/epub/EpubWriter.java

@@ -1,190 +0,0 @@
-package me.ag2s.epublib.epub;
-
-import android.util.Log;
-
-import org.xmlpull.v1.XmlSerializer;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-import java.util.zip.CRC32;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipOutputStream;
-
-import me.ag2s.epublib.domain.EpubBook;
-import me.ag2s.epublib.domain.MediaTypes;
-import me.ag2s.epublib.domain.Resource;
-import me.ag2s.epublib.util.IOUtil;
-
-/**
- * Generates an epub file. Not thread-safe, single use object.
- *
- * @author paul
- */
-public class EpubWriter {
-
-  private static final String TAG= EpubWriter.class.getName();
-
-  // package
-  static final String EMPTY_NAMESPACE_PREFIX = "";
-
-  private BookProcessor bookProcessor;
-
-  public EpubWriter() {
-    this(BookProcessor.IDENTITY_BOOKPROCESSOR);
-  }
-
-
-  public EpubWriter(BookProcessor bookProcessor) {
-    this.bookProcessor = bookProcessor;
-  }
-
-
-  public void write(EpubBook book, OutputStream out) throws IOException {
-    book = processBook(book);
-    ZipOutputStream resultStream = new ZipOutputStream(out);
-    writeMimeType(resultStream);
-    writeContainer(resultStream);
-    initTOCResource(book);
-    writeResources(book, resultStream);
-    writePackageDocument(book, resultStream);
-    resultStream.close();
-  }
-
-  private EpubBook processBook(EpubBook book) {
-    if (bookProcessor != null) {
-      book = bookProcessor.processBook(book);
-    }
-    return book;
-  }
-
-  private void initTOCResource(EpubBook book) {
-    Resource tocResource;
-    try {
-      if (book.isEpub3()) {
-        tocResource = NCXDocumentV3.createNCXResource(book);
-      } else {
-        tocResource = NCXDocumentV2.createNCXResource(book);
-      }
-
-      Resource currentTocResource = book.getSpine().getTocResource();
-      if (currentTocResource != null) {
-        book.getResources().remove(currentTocResource.getHref());
-      }
-      book.getSpine().setTocResource(tocResource);
-      book.getResources().add(tocResource);
-    } catch (Exception ex) {
-      Log.e(TAG,
-          "Error writing table of contents: "
-              + ex.getClass().getName() + ": " + ex.getMessage(), ex);
-    }
-  }
-
-
-  private void writeResources(EpubBook book, ZipOutputStream resultStream) {
-    for (Resource resource : book.getResources().getAll()) {
-      writeResource(resource, resultStream);
-    }
-  }
-
-  /**
-   * Writes the resource to the resultStream.
-   *
-   * @param resource resource
-   * @param  resultStream resultStream
-   */
-  private void writeResource(Resource resource, ZipOutputStream resultStream) {
-    if (resource == null) {
-      return;
-    }
-    try {
-      resultStream.putNextEntry(new ZipEntry("OEBPS/" + resource.getHref()));
-      InputStream inputStream = resource.getInputStream();
-
-      IOUtil.copy(inputStream, resultStream);
-      inputStream.close();
-    } catch (Exception e) {
-      Log.e(TAG,e.getMessage(), e);
-    }
-  }
-
-
-  private void writePackageDocument(EpubBook book, ZipOutputStream resultStream)
-          throws IOException {
-    resultStream.putNextEntry(new ZipEntry("OEBPS/content.opf"));
-    XmlSerializer xmlSerializer = EpubProcessorSupport
-            .createXmlSerializer(resultStream);
-    PackageDocumentWriter.write(this, xmlSerializer, book);
-    xmlSerializer.flush();
-//		String resultAsString = result.toString();
-//		resultStream.write(resultAsString.getBytes(Constants.ENCODING));
-  }
-
-  /**
-   * Writes the META-INF/container.xml file.
-   *
-   * @param  resultStream resultStream
-   * @throws IOException IOException
-   */
-  private void writeContainer(ZipOutputStream resultStream) throws IOException {
-    resultStream.putNextEntry(new ZipEntry("META-INF/container.xml"));
-    Writer out = new OutputStreamWriter(resultStream);
-    out.write("<?xml version=\"1.0\"?>\n");
-    out.write(
-        "<container version=\"1.0\" xmlns=\"urn:oasis:names:tc:opendocument:xmlns:container\">\n");
-    out.write("\t<rootfiles>\n");
-    out.write(
-        "\t\t<rootfile full-path=\"OEBPS/content.opf\" media-type=\"application/oebps-package+xml\"/>\n");
-    out.write("\t</rootfiles>\n");
-    out.write("</container>");
-    out.flush();
-  }
-
-  /**
-   * Stores the mimetype as an uncompressed file in the ZipOutputStream.
-   *
-   * @param  resultStream resultStream
-   * @throws IOException IOException
-   */
-  private void writeMimeType(ZipOutputStream resultStream) throws IOException {
-    ZipEntry mimetypeZipEntry = new ZipEntry("mimetype");
-    mimetypeZipEntry.setMethod(ZipEntry.STORED);
-    byte[] mimetypeBytes = MediaTypes.EPUB.getName().getBytes();
-    mimetypeZipEntry.setSize(mimetypeBytes.length);
-    mimetypeZipEntry.setCrc(calculateCrc(mimetypeBytes));
-    resultStream.putNextEntry(mimetypeZipEntry);
-    resultStream.write(mimetypeBytes);
-  }
-
-  private long calculateCrc(byte[] data) {
-    CRC32 crc = new CRC32();
-    crc.update(data);
-    return crc.getValue();
-  }
-
-  String getNcxId() {
-    return "ncx";
-  }
-
-  String getNcxHref() {
-    return "toc.ncx";
-  }
-
-  String getNcxMediaType() {
-    return MediaTypes.NCX.getName();
-  }
-
-
-  @SuppressWarnings("unused")
-  public BookProcessor getBookProcessor() {
-    return bookProcessor;
-  }
-
-  @SuppressWarnings("unused")
-  public void setBookProcessor(BookProcessor bookProcessor) {
-    this.bookProcessor = bookProcessor;
-  }
-
-}

+ 0 - 97
book/src/main/java/me/ag2s/epublib/epub/PackageDocumentBase.java

@@ -1,97 +0,0 @@
-package me.ag2s.epublib.epub;
-
-
-/**
- * Functionality shared by the PackageDocumentReader and the PackageDocumentWriter
- *
- * @author paul
- *
- */
-public class PackageDocumentBase {
-
-  public static final String BOOK_ID_ID = "duokan-book-id";
-  public static final String NAMESPACE_OPF = "http://www.idpf.org/2007/opf";
-  public static final String NAMESPACE_DUBLIN_CORE = "http://purl.org/dc/elements/1.1/";
-  public static final String PREFIX_DUBLIN_CORE = "dc";
-  //public static final String PREFIX_OPF = "opf";
-  //在EPUB3标准中,packge前面没有opf头,一些epub阅读器也不支持opf头。
-  //Some Epub Reader not reconize op:packge,So just let it empty;
-  public static final String PREFIX_OPF = "";
-  //添加 version 变量来区分Epub文件的版本
-  //Add the version field to distinguish the version of EPUB file
-  public static final String version="version";
-  public static final String dateFormat = "yyyy-MM-dd";
-
-  protected interface DCTags {
-
-    String title = "title";
-    String creator = "creator";
-    String subject = "subject";
-    String description = "description";
-    String publisher = "publisher";
-    String contributor = "contributor";
-    String date = "date";
-    String type = "type";
-    String format = "format";
-    String identifier = "identifier";
-    String source = "source";
-    String language = "language";
-    String relation = "relation";
-    String coverage = "coverage";
-    String rights = "rights";
-  }
-
-  protected interface DCAttributes {
-
-    String scheme = "scheme";
-    String id = "id";
-  }
-
-  protected interface OPFTags {
-
-    String metadata = "metadata";
-    String meta = "meta";
-    String manifest = "manifest";
-    String packageTag = "package";
-    String itemref = "itemref";
-    String spine = "spine";
-    String reference = "reference";
-    String guide = "guide";
-    String item = "item";
-  }
-
-  protected interface OPFAttributes {
-
-    String uniqueIdentifier = "unique-identifier";
-    String idref = "idref";
-    String name = "name";
-    String content = "content";
-    String type = "type";
-    String href = "href";
-    String linear = "linear";
-    String event = "event";
-    String role = "role";
-    String file_as = "file-as";
-    String id = "id";
-    String media_type = "media-type";
-    String title = "title";
-    String toc = "toc";
-    String version = "version";
-    String scheme = "scheme";
-    String property = "property";
-    //add for epub3
-    /**
-     * add for epub3
-     */
-    String properties="properties";
-  }
-
-  protected interface OPFValues {
-
-    String meta_cover = "cover";
-    String reference_cover = "cover";
-    String no = "no";
-    String generator = "generator";
-    String duokan = "duokan-body-font";
-  }
-}

+ 0 - 187
book/src/main/java/me/ag2s/epublib/epub/PackageDocumentMetadataWriter.java

@@ -1,187 +0,0 @@
-package me.ag2s.epublib.epub;
-
-import org.xmlpull.v1.XmlSerializer;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.namespace.QName;
-
-import me.ag2s.epublib.Constants;
-import me.ag2s.epublib.domain.Author;
-import me.ag2s.epublib.domain.Date;
-import me.ag2s.epublib.domain.EpubBook;
-import me.ag2s.epublib.domain.Identifier;
-import me.ag2s.epublib.util.StringUtil;
-
-public class PackageDocumentMetadataWriter extends PackageDocumentBase {
-
-  /**
-   * Writes the book's metadata.
-   *
-   * @param book       book
-   * @param serializer serializer
-   * @throws IOException              IOException
-   * @throws IllegalStateException    IllegalStateException
-   * @throws IllegalArgumentException IllegalArgumentException
-   */
-  public static void writeMetaData(EpubBook book, XmlSerializer serializer)
-          throws IllegalArgumentException, IllegalStateException, IOException {
-    serializer.startTag(NAMESPACE_OPF, OPFTags.metadata);
-    serializer.setPrefix(PREFIX_DUBLIN_CORE, NAMESPACE_DUBLIN_CORE);
-    serializer.setPrefix(PREFIX_OPF, NAMESPACE_OPF);
-
-    writeIdentifiers(book.getMetadata().getIdentifiers(), serializer);
-    writeSimpleMetdataElements(DCTags.title, book.getMetadata().getTitles(),
-            serializer);
-    writeSimpleMetdataElements(DCTags.subject, book.getMetadata().getSubjects(),
-            serializer);
-    writeSimpleMetdataElements(DCTags.description,
-        book.getMetadata().getDescriptions(), serializer);
-    writeSimpleMetdataElements(DCTags.publisher,
-        book.getMetadata().getPublishers(), serializer);
-    writeSimpleMetdataElements(DCTags.type, book.getMetadata().getTypes(),
-        serializer);
-    writeSimpleMetdataElements(DCTags.rights, book.getMetadata().getRights(),
-        serializer);
-
-    // write authors
-    for (Author author : book.getMetadata().getAuthors()) {
-      serializer.startTag(NAMESPACE_DUBLIN_CORE, DCTags.creator);
-      serializer.attribute(NAMESPACE_OPF, OPFAttributes.role,
-          author.getRelator().getCode());
-      serializer.attribute(NAMESPACE_OPF, OPFAttributes.file_as,
-          author.getLastname() + ", " + author.getFirstname());
-      serializer.text(author.getFirstname() + " " + author.getLastname());
-      serializer.endTag(NAMESPACE_DUBLIN_CORE, DCTags.creator);
-    }
-
-    // write contributors
-    for (Author author : book.getMetadata().getContributors()) {
-      serializer.startTag(NAMESPACE_DUBLIN_CORE, DCTags.contributor);
-      serializer.attribute(NAMESPACE_OPF, OPFAttributes.role,
-          author.getRelator().getCode());
-      serializer.attribute(NAMESPACE_OPF, OPFAttributes.file_as,
-          author.getLastname() + ", " + author.getFirstname());
-      serializer.text(author.getFirstname() + " " + author.getLastname());
-      serializer.endTag(NAMESPACE_DUBLIN_CORE, DCTags.contributor);
-    }
-
-    // write dates
-    for (Date date : book.getMetadata().getDates()) {
-      serializer.startTag(NAMESPACE_DUBLIN_CORE, DCTags.date);
-      if (date.getEvent() != null) {
-        serializer.attribute(NAMESPACE_OPF, OPFAttributes.event,
-            date.getEvent().toString());
-      }
-      serializer.text(date.getValue());
-      serializer.endTag(NAMESPACE_DUBLIN_CORE, DCTags.date);
-    }
-
-    // write language
-    if (StringUtil.isNotBlank(book.getMetadata().getLanguage())) {
-      serializer.startTag(NAMESPACE_DUBLIN_CORE, "language");
-      serializer.text(book.getMetadata().getLanguage());
-      serializer.endTag(NAMESPACE_DUBLIN_CORE, "language");
-    }
-
-    // write other properties
-    if (book.getMetadata().getOtherProperties() != null) {
-      for (Map.Entry<QName, String> mapEntry : book.getMetadata()
-          .getOtherProperties().entrySet()) {
-        serializer.startTag(mapEntry.getKey().getNamespaceURI(), OPFTags.meta);
-        serializer.attribute(EpubWriter.EMPTY_NAMESPACE_PREFIX,
-            OPFAttributes.property, mapEntry.getKey().getLocalPart());
-        serializer.text(mapEntry.getValue());
-        serializer.endTag(mapEntry.getKey().getNamespaceURI(), OPFTags.meta);
-
-      }
-    }
-
-    // write coverimage
-    if (book.getCoverImage() != null) { // write the cover image
-      serializer.startTag(NAMESPACE_OPF, OPFTags.meta);
-      serializer
-          .attribute(EpubWriter.EMPTY_NAMESPACE_PREFIX, OPFAttributes.name,
-              OPFValues.meta_cover);
-      serializer
-          .attribute(EpubWriter.EMPTY_NAMESPACE_PREFIX, OPFAttributes.content,
-              book.getCoverImage().getId());
-      serializer.endTag(NAMESPACE_OPF, OPFTags.meta);
-    }
-
-    // write generator
-    serializer.startTag(NAMESPACE_OPF, OPFTags.meta);
-    serializer.attribute(EpubWriter.EMPTY_NAMESPACE_PREFIX, OPFAttributes.name,
-        OPFValues.generator);
-    serializer
-        .attribute(EpubWriter.EMPTY_NAMESPACE_PREFIX, OPFAttributes.content,
-            Constants.EPUB_GENERATOR_NAME);
-    serializer.endTag(NAMESPACE_OPF, OPFTags.meta);
-
-    // write duokan
-    serializer.startTag(NAMESPACE_OPF, OPFTags.meta);
-    serializer.attribute(EpubWriter.EMPTY_NAMESPACE_PREFIX, OPFAttributes.name,
-            OPFValues.duokan);
-    serializer
-            .attribute(EpubWriter.EMPTY_NAMESPACE_PREFIX, OPFAttributes.content,
-                    Constants.EPUB_DUOKAN_NAME);
-    serializer.endTag(NAMESPACE_OPF, OPFTags.meta);
-
-    serializer.endTag(NAMESPACE_OPF, OPFTags.metadata);
-  }
-
-  private static void writeSimpleMetdataElements(String tagName,
-      List<String> values, XmlSerializer serializer)
-      throws IllegalArgumentException, IllegalStateException, IOException {
-    for (String value : values) {
-      if (StringUtil.isBlank(value)) {
-        continue;
-      }
-      serializer.startTag(NAMESPACE_DUBLIN_CORE, tagName);
-      serializer.text(value);
-      serializer.endTag(NAMESPACE_DUBLIN_CORE, tagName);
-    }
-  }
-
-
-  /**
-   * Writes out the complete list of Identifiers to the package document.
-   * The first identifier for which the bookId is true is made the bookId identifier.
-   * If no identifier has bookId == true then the first bookId identifier is written as the primary.
-   *
-   * @param identifiers identifiers
-   * @param serializer serializer
-   * @throws IllegalStateException e
-   * @throws IllegalArgumentException e
-   * @
-   */
-  private static void writeIdentifiers(List<Identifier> identifiers,
-      XmlSerializer serializer)
-      throws IllegalArgumentException, IllegalStateException, IOException {
-    Identifier bookIdIdentifier = Identifier.getBookIdIdentifier(identifiers);
-    if (bookIdIdentifier == null) {
-      return;
-    }
-
-    serializer.startTag(NAMESPACE_DUBLIN_CORE, DCTags.identifier);
-    serializer.attribute(EpubWriter.EMPTY_NAMESPACE_PREFIX, DCAttributes.id,
-        BOOK_ID_ID);
-    serializer.attribute(NAMESPACE_OPF, OPFAttributes.scheme,
-        bookIdIdentifier.getScheme());
-    serializer.text(bookIdIdentifier.getValue());
-    serializer.endTag(NAMESPACE_DUBLIN_CORE, DCTags.identifier);
-
-    for (Identifier identifier : identifiers.subList(1, identifiers.size())) {
-      if (identifier == bookIdIdentifier) {
-        continue;
-      }
-      serializer.startTag(NAMESPACE_DUBLIN_CORE, DCTags.identifier);
-      serializer.attribute(NAMESPACE_OPF, "scheme", identifier.getScheme());
-      serializer.text(identifier.getValue());
-      serializer.endTag(NAMESPACE_DUBLIN_CORE, DCTags.identifier);
-    }
-  }
-
-}

+ 0 - 71
book/src/main/java/me/ag2s/epublib/util/CollectionUtil.java

@@ -1,71 +0,0 @@
-package me.ag2s.epublib.util;
-
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.List;
-
-public class CollectionUtil {
-
-  /**
-   * Wraps an Enumeration around an Iterator
-   * @author paul.siegmann
-   *
-   * @param <T>
-   */
-  private static class IteratorEnumerationAdapter<T> implements Enumeration<T> {
-
-    private final Iterator<T> iterator;
-
-    public IteratorEnumerationAdapter(Iterator<T> iter) {
-      this.iterator = iter;
-    }
-
-    @Override
-    public boolean hasMoreElements() {
-      return iterator.hasNext();
-    }
-
-    @Override
-    public T nextElement() {
-      return iterator.next();
-    }
-  }
-
-  /**
-   * Creates an Enumeration out of the given Iterator.
-   * @param <T>  g
-   * @param it g
-   * @return an Enumeration created out of the given Iterator.
-   */
-  @SuppressWarnings("unused")
-  public static <T> Enumeration<T> createEnumerationFromIterator(
-      Iterator<T> it) {
-    return new IteratorEnumerationAdapter<>(it);
-  }
-
-
-  /**
-   * Returns the first element of the list, null if the list is null or empty.
-   *
-   * @param <T> f
-   * @param list f
-   * @return the first element of the list, null if the list is null or empty.
-   */
-  public static <T> T first(List<T> list) {
-    if (list == null || list.isEmpty()) {
-      return null;
-    }
-    return list.get(0);
-  }
-
-  /**
-   * Whether the given collection is null or has no elements.
-   *
-   * @param collection g
-   * @return Whether the given collection is null or has no elements.
-   */
-  public static boolean isEmpty(Collection<?> collection) {
-    return collection == null || collection.isEmpty();
-  }
-}

+ 0 - 363
book/src/main/java/me/ag2s/epublib/util/zip/AndroidZipEntry.java

@@ -1,363 +0,0 @@
-
-
-
-package me.ag2s.epublib.util.zip;
-
-import java.util.Calendar;
-import java.util.Date;
-import java.util.zip.ZipOutputStream;
-
-/**
- * This class represents a member of a zip archive.  ZipFile and
- * ZipInputStream will give you instances of this class as information
- * about the members in an archive.  On the other hand ZipOutputStream
- * needs an instance of this class to create a new member.
- *
- * @author Jochen Hoenicke
- */
-public class AndroidZipEntry implements ZipConstants, Cloneable {
-  private static final int KNOWN_SIZE = 1;
-  private static final int KNOWN_CSIZE = 2;
-  private static final int KNOWN_CRC = 4;
-  private static final int KNOWN_TIME = 8;
-
-  private static Calendar cal;
-
-  private final String name;
-  private final int nameLen;
-  private int size;
-  private int compressedSize;
-  private int crc;
-  private int dostime;
-  private short known = 0;
-  private short method = -1;
-  private byte[] extra = null;
-  private String comment = null;
-
-  int flags;              /* used by ZipOutputStream */
-  int offset;             /* used by ZipFile and ZipOutputStream */
-
-
-  /**
-   * Compression method.  This method doesn't compress at all.
-   */
-  public final static int STORED = 0;
-  /**
-   * Compression method.  This method uses the Deflater.
-   */
-  public final static int DEFLATED = 8;
-
-  /**
-   * Creates a zip entry with the given name.
-   *
-   * @param name the name. May include directory components separated
-   *             by '/'.
-   * @throws NullPointerException     when name is null.
-   * @throws IllegalArgumentException when name is bigger then 65535 chars.
-   */
-  public AndroidZipEntry(String name, int nameLen) {
-    //int length = name.length();
-    this.nameLen = nameLen;
-    if (nameLen > 65535)
-      throw new IllegalArgumentException("name length is " + nameLen);
-    this.name = name;
-  }
-
-
-  /**
-   * Creates a copy of the given zip entry.
-   *
-   * @param e the entry to copy.
-   */
-  public AndroidZipEntry(AndroidZipEntry e) {
-    name = e.name;
-    nameLen = e.nameLen;
-    known = e.known;
-    size = e.size;
-    compressedSize = e.compressedSize;
-    crc = e.crc;
-    dostime = e.dostime;
-    method = e.method;
-    extra = e.extra;
-    comment = e.comment;
-  }
-
-  final void setDOSTime(int dostime) {
-    this.dostime = dostime;
-    known |= KNOWN_TIME;
-  }
-
-  final int getDOSTime() {
-    if ((known & KNOWN_TIME) == 0)
-      return 0;
-    else
-      return dostime;
-  }
-
-  /**
-   * Creates a copy of this zip entry.
-   */
-  /**
-   * Clones the entry.
-   */
-  public Object clone() {
-    try {
-      // The JCL says that the `extra' field is also copied.
-      AndroidZipEntry clone = (AndroidZipEntry) super.clone();
-      if (extra != null)
-        clone.extra = (byte[]) extra.clone();
-      return clone;
-    } catch (CloneNotSupportedException ex) {
-      throw new InternalError();
-    }
-  }
-
-  /**
-   * Returns the entry name.  The path components in the entry are
-   * always separated by slashes ('/').
-   */
-  public String getName() {
-    return name;
-  }
-
-  public int getNameLen() {
-    return nameLen;
-  }
-
-  /**
-   * Sets the time of last modification of the entry.
-   *
-   * @time the time of last modification of the entry.
-   */
-  public void setTime(long time) {
-    Calendar cal = getCalendar();
-    synchronized (cal) {
-      cal.setTime(new Date(time * 1000L));
-      dostime = (cal.get(Calendar.YEAR) - 1980 & 0x7f) << 25
-              | (cal.get(Calendar.MONTH) + 1) << 21
-              | (cal.get(Calendar.DAY_OF_MONTH)) << 16
-              | (cal.get(Calendar.HOUR_OF_DAY)) << 11
-              | (cal.get(Calendar.MINUTE)) << 5
-              | (cal.get(Calendar.SECOND)) >> 1;
-    }
-    dostime = (int) (dostime / 1000L);
-    this.known |= KNOWN_TIME;
-  }
-
-  /**
-   * Gets the time of last modification of the entry.
-   *
-   * @return the time of last modification of the entry, or -1 if unknown.
-   */
-  public long getTime() {
-    if ((known & KNOWN_TIME) == 0)
-      return -1;
-
-    int sec = 2 * (dostime & 0x1f);
-    int min = (dostime >> 5) & 0x3f;
-    int hrs = (dostime >> 11) & 0x1f;
-    int day = (dostime >> 16) & 0x1f;
-    int mon = ((dostime >> 21) & 0xf) - 1;
-    int year = ((dostime >> 25) & 0x7f) + 1980; /* since 1900 */
-
-    try {
-      cal = getCalendar();
-      synchronized (cal) {
-        cal.set(year, mon, day, hrs, min, sec);
-        return cal.getTime().getTime();
-      }
-    } catch (RuntimeException ex) {
-      /* Ignore illegal time stamp */
-      known &= ~KNOWN_TIME;
-      return -1;
-    }
-  }
-
-  private static synchronized Calendar getCalendar() {
-    if (cal == null)
-      cal = Calendar.getInstance();
-
-    return cal;
-  }
-
-  /**
-   * Sets the size of the uncompressed data.
-   *
-   * @throws IllegalArgumentException if size is not in 0..0xffffffffL
-   */
-  public void setSize(long size) {
-    if ((size & 0xffffffff00000000L) != 0)
-      throw new IllegalArgumentException();
-    this.size = (int) size;
-    this.known |= KNOWN_SIZE;
-  }
-
-  /**
-   * Gets the size of the uncompressed data.
-   *
-   * @return the size or -1 if unknown.
-   */
-  public long getSize() {
-    return (known & KNOWN_SIZE) != 0 ? size & 0xffffffffL : -1L;
-  }
-
-  /**
-   * Sets the size of the compressed data.
-   *
-   * @throws IllegalArgumentException if size is not in 0..0xffffffffL
-   */
-  public void setCompressedSize(long csize) {
-    if ((csize & 0xffffffff00000000L) != 0)
-      throw new IllegalArgumentException();
-    this.compressedSize = (int) csize;
-    this.known |= KNOWN_CSIZE;
-  }
-
-  /**
-   * Gets the size of the compressed data.
-   *
-   * @return the size or -1 if unknown.
-   */
-  public long getCompressedSize() {
-    return (known & KNOWN_CSIZE) != 0 ? compressedSize & 0xffffffffL : -1L;
-  }
-
-  /**
-   * Sets the crc of the uncompressed data.
-   *
-   * @throws IllegalArgumentException if crc is not in 0..0xffffffffL
-   */
-  public void setCrc(long crc) {
-    if ((crc & 0xffffffff00000000L) != 0)
-      throw new IllegalArgumentException();
-    this.crc = (int) crc;
-    this.known |= KNOWN_CRC;
-  }
-
-  /**
-   * Gets the crc of the uncompressed data.
-   *
-   * @return the crc or -1 if unknown.
-   */
-  public long getCrc() {
-    return (known & KNOWN_CRC) != 0 ? crc & 0xffffffffL : -1L;
-  }
-
-  /**
-   * Sets the compression method.  Only DEFLATED and STORED are
-   * supported.
-   *
-   * @throws IllegalArgumentException if method is not supported.
-   * @see ZipOutputStream#DEFLATED
-   * @see ZipOutputStream#STORED
-   */
-  public void setMethod(int method) {
-    if (method != ZipOutputStream.STORED
-            && method != ZipOutputStream.DEFLATED)
-      throw new IllegalArgumentException();
-    this.method = (short) method;
-  }
-
-  /**
-   * Gets the compression method.
-   *
-   * @return the compression method or -1 if unknown.
-   */
-  public int getMethod() {
-    return method;
-  }
-
-  /**
-   * Sets the extra data.
-   *
-   * @throws IllegalArgumentException if extra is longer than 0xffff bytes.
-   */
-  public void setExtra(byte[] extra) {
-    if (extra == null) {
-      this.extra = null;
-      return;
-    }
-
-    if (extra.length > 0xffff)
-      throw new IllegalArgumentException();
-    this.extra = extra;
-    try {
-      int pos = 0;
-      while (pos < extra.length) {
-        int sig = (extra[pos++] & 0xff)
-                | (extra[pos++] & 0xff) << 8;
-        int len = (extra[pos++] & 0xff)
-                | (extra[pos++] & 0xff) << 8;
-        if (sig == 0x5455) {
-          /* extended time stamp */
-          int flags = extra[pos];
-          if ((flags & 1) != 0) {
-            long time = ((extra[pos + 1] & 0xff)
-                    | (extra[pos + 2] & 0xff) << 8
-                    | (extra[pos + 3] & 0xff) << 16
-                    | (extra[pos + 4] & 0xff) << 24);
-            setTime(time);
-          }
-        }
-        pos += len;
-      }
-    } catch (ArrayIndexOutOfBoundsException ex) {
-      /* be lenient */
-      return;
-    }
-  }
-
-  /**
-   * Gets the extra data.
-   *
-   * @return the extra data or null if not set.
-   */
-  public byte[] getExtra() {
-    return extra;
-  }
-
-  /**
-   * Sets the entry comment.
-   *
-   * @throws IllegalArgumentException if comment is longer than 0xffff.
-   */
-  public void setComment(String comment) {
-    if (comment != null && comment.length() > 0xffff)
-      throw new IllegalArgumentException();
-    this.comment = comment;
-  }
-
-  /**
-   * Gets the comment.
-   *
-   * @return the comment or null if not set.
-   */
-  public String getComment() {
-    return comment;
-  }
-
-  /**
-   * Gets true, if the entry is a directory.  This is solely
-   * determined by the name, a trailing slash '/' marks a directory.
-   */
-  public boolean isDirectory() {
-    int nlen = name.length();
-    return nlen > 0 && name.charAt(nlen - 1) == '/';
-  }
-
-  /**
-   * Gets the string representation of this AndroidZipEntry.  This is just
-   * the name as returned by getName().
-   */
-  public String toString() {
-    return name;
-  }
-
-  /**
-   * Gets the hashCode of this AndroidZipEntry.  This is just the hashCode
-   * of the name.  Note that the equals method isn't changed, though.
-   */
-  public int hashCode() {
-    return name.hashCode();
-  }
-}

+ 0 - 61
book/src/main/java/me/ag2s/epublib/util/zip/ZipConstants.java

@@ -1,61 +0,0 @@
-
-
-package me.ag2s.epublib.util.zip;
-
-interface ZipConstants {
-  /* The local file header */
-  int LOCHDR = 30;
-  int LOCSIG = 'P' | ('K' << 8) | (3 << 16) | (4 << 24);
-
-  int LOCVER = 4;
-  int LOCFLG = 6;
-  int LOCHOW = 8;
-  int LOCTIM = 10;
-  int LOCCRC = 14;
-  int LOCSIZ = 18;
-  int LOCLEN = 22;
-  int LOCNAM = 26;
-  int LOCEXT = 28;
-
-  /* The Data descriptor */
-  int EXTSIG = 'P' | ('K' << 8) | (7 << 16) | (8 << 24);
-  int EXTHDR = 16;
-
-  int EXTCRC = 4;
-  int EXTSIZ = 8;
-  int EXTLEN = 12;
-
-  /* The central directory file header */
-  int CENSIG = 'P' | ('K' << 8) | (1 << 16) | (2 << 24);
-  int CENHDR = 46;
-
-  int CENVEM = 4;
-  int CENVER = 6;
-  int CENFLG = 8;
-  int CENHOW = 10;
-  int CENTIM = 12;
-  int CENCRC = 16;
-  int CENSIZ = 20;
-  int CENLEN = 24;
-  int CENNAM = 28;
-  int CENEXT = 30;
-  int CENCOM = 32;
-  int CENDSK = 34;
-  int CENATT = 36;
-  int CENATX = 38;
-  int CENOFF = 42;
-
-  /* The entries in the end of central directory */
-  int ENDSIG = 'P' | ('K' << 8) | (5 << 16) | (6 << 24);
-  int ENDHDR = 22;
-
-  /* The following two fields are missing in SUN JDK */
-  int ENDNRD = 4;
-  int ENDDCD = 6;
-  int ENDSUB = 8;
-  int ENDTOT = 10;
-  int ENDSIZ = 12;
-  int ENDOFF = 16;
-  int ENDCOM = 20;
-}
-

+ 0 - 207
book/src/main/java/me/ag2s/umdlib/domain/UmdChapters.java

@@ -1,207 +0,0 @@
-package me.ag2s.umdlib.domain;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.zip.DeflaterOutputStream;
-
-import me.ag2s.umdlib.tool.UmdUtils;
-import me.ag2s.umdlib.tool.WrapOutputStream;
-
-/**
- * It includes all titles and contents of each chapter in the UMD file.
- * And the content has been compressed by zlib.
- * 
- * @author Ray Liang (liangguanhui@qq.com)
- * 2009-12-20
- */
-public class UmdChapters {
-	
-	private static final int DEFAULT_CHUNK_INIT_SIZE = 32768;
-	private int TotalContentLen;
-
-	public List<byte[]> getTitles() {
-		return titles;
-	}
-
-	private final List<byte[]> titles = new ArrayList<>();
-	public List<Integer> contentLengths = new ArrayList<>();
-	public ByteArrayOutputStream contents = new ByteArrayOutputStream();
-
-	public void addTitle(String s){
-		titles.add(UmdUtils.stringToUnicodeBytes(s));
-	}
-	public void addTitle(byte[] s){
-      titles.add(s);
-	}
-	public void addContentLength(Integer integer){
-		contentLengths.add(integer);
-	}
-	public int getContentLength(int index){
-		return contentLengths.get(index);
-	}
-
-	public byte[] getContent(int index) {
-		int st=contentLengths.get(index);
-		byte[] b=contents.toByteArray();
-		int end=index+1<contentLengths.size()?contentLengths.get(index+1): getTotalContentLen();
-		System.out.println("总长度:"+contents.size());
-		System.out.println("起始值:"+st);
-		System.out.println("结束值:"+end);
-		byte[] bAr=new byte[end-st];
-		System.arraycopy(b,st,bAr,0,bAr.length);
-		return bAr;
-
-	}
-	public String getContentString(int index) {
-		return UmdUtils.unicodeBytesToString(getContent(index)).replace((char) 0x2029, '\n');
-
-	}
-	public String getTitle(int index){
-		return UmdUtils.unicodeBytesToString(titles.get(index));
-	}
-
-	
-	public void buildChapters(WrapOutputStream wos) throws IOException {
-		writeChaptersHead(wos);
-		writeChaptersContentOffset(wos);
-		writeChaptersTitles(wos);
-		writeChaptersChunks(wos);
-	}
-	
-	private void writeChaptersHead(WrapOutputStream wos) throws IOException {
-		wos.writeBytes('#', 0x0b, 0, 0, 0x09);
-		wos.writeInt(contents.size());
-	}
-	
-	private void writeChaptersContentOffset(WrapOutputStream wos) throws IOException {
-		wos.writeBytes('#', 0x83, 0, 0, 0x09);
-		byte[] rb = UmdUtils.genRandomBytes(4);
-		wos.writeBytes(rb); //random numbers
-		wos.write('$');
-		wos.writeBytes(rb); //random numbers
-		
-		wos.writeInt(contentLengths.size() * 4 + 9);  // about the count of chapters
-		int offset = 0;
-		for (Integer n : contentLengths) {
-			wos.writeInt(offset);
-			offset += n;
-		}
-	}
-	
-	private void writeChaptersTitles(WrapOutputStream wos) throws IOException {
-		wos.writeBytes('#', 0x84, 0, 0x01, 0x09);
-		byte[] rb = UmdUtils.genRandomBytes(4);
-		wos.writeBytes(rb); //random numbers
-		wos.write('$');
-		wos.writeBytes(rb); //random numbers
-		
-		int totalTitlesLen = 0;
-		for (byte[] t : titles) {
-			totalTitlesLen += t.length;
-		}
-		
-		// about the length of the titles
-		wos.writeInt(totalTitlesLen + titles.size() + 9);  
-		
-		for (byte[] t : titles) {
-			wos.writeByte(t.length);
-			wos.write(t);
-		}
-	}
-	
-	private void writeChaptersChunks(WrapOutputStream wos) throws IOException {
-		byte[] allContents = contents.toByteArray();
-		
-		byte[] zero16 = new byte[16];
-		Arrays.fill(zero16, 0, zero16.length, (byte) 0);
-		
-		// write each package of content
-		int startPos = 0;
-		int len = 0;
-		int left = 0;
-		int chunkCnt = 0;
-		ByteArrayOutputStream bos = new ByteArrayOutputStream(DEFAULT_CHUNK_INIT_SIZE + 256);
-		List<byte[]> chunkRbList = new ArrayList<>();
-		
-		while(startPos < allContents.length) {
-			left = allContents.length - startPos;
-			len = Math.min(DEFAULT_CHUNK_INIT_SIZE, left);
-			
-			bos.reset();
-			DeflaterOutputStream zos = new DeflaterOutputStream(bos);
-			zos.write(allContents, startPos, len);
-			zos.close();
-			byte[] chunk = bos.toByteArray();
-			
-			byte[] rb = UmdUtils.genRandomBytes(4);
-			wos.writeByte('$');
-			wos.writeBytes(rb);  // 4 random
-			chunkRbList.add(rb);
-			wos.writeInt(chunk.length + 9);
-			wos.write(chunk);
-			
-			// end of each chunk
-			wos.writeBytes('#', 0xF1, 0, 0, 0x15);
-			wos.write(zero16);
-			
-			startPos += len;
-			chunkCnt++;
-		}
-		
-		// end of all chunks
-		wos.writeBytes('#', 0x81, 0, 0x01, 0x09);
-		wos.writeBytes(0, 0, 0, 0); //random numbers
-		wos.write('$');
-		wos.writeBytes(0, 0, 0, 0); //random numbers
-		wos.writeInt(chunkCnt * 4 + 9);
-		for (int i = chunkCnt - 1; i >= 0; i--) {
-			// random. They are as the same as random numbers in the begin of each chunk
-			// use desc order to output these random
-			wos.writeBytes(chunkRbList.get(i));
-		}
-	}
-	
-	public void addChapter(String title, String content) {
-		titles.add(UmdUtils.stringToUnicodeBytes(title));
-		byte[] b = UmdUtils.stringToUnicodeBytes(content);
-		contentLengths.add(b.length);
-		try {
-			contents.write(b);
-		} catch (IOException e) {
-			throw new RuntimeException(e);
-		}
-	}
-	
-	public void addFile(File f, String title) throws IOException {
-		byte[] temp = UmdUtils.readFile(f);
-		String s = new String(temp);
-		addChapter(title, s);
-	}
-	
-	public void addFile(File f) throws IOException {
-		String s = f.getName();
-		int idx = s.lastIndexOf('.');
-		if (idx >= 0) {
-			s = s.substring(0, idx);
-		}
-		addFile(f, s);
-	}
-	
-	public void clearChapters() {
-		titles.clear();
-		contentLengths.clear();
-		contents.reset();
-	}
-
-	public int getTotalContentLen() {
-		return TotalContentLen;
-	}
-
-	public void setTotalContentLen(int totalContentLen) {
-		TotalContentLen = totalContentLen;
-	}
-}

+ 0 - 165
book/src/main/java/me/ag2s/umdlib/domain/UmdHeader.java

@@ -1,165 +0,0 @@
-package me.ag2s.umdlib.domain;
-
-
-import androidx.annotation.NonNull;
-
-import java.io.IOException;
-
-import me.ag2s.umdlib.tool.UmdUtils;
-import me.ag2s.umdlib.tool.WrapOutputStream;
-
-/**
- * Header of UMD file.
- * It includes a lot of properties of header.
- * All the properties are String type.
- * 
- * @author Ray Liang (liangguanhui@qq.com)
- * 2009-12-20
- */
-public class UmdHeader {
-	public byte getUmdType() {
-		return umdType;
-	}
-
-	public void setUmdType(byte umdType) {
-		this.umdType = umdType;
-	}
-
-	private byte umdType;
-	private String title;
-
-	private String author;
-	
-	private String year;
-	
-	private String month;
-	
-	private String day;
-	
-	private String bookType;
-
-	private String bookMan;
-	
-	private String shopKeeper;
-	private final static byte B_type_umd = (byte) 0x01;
-	private final static byte B_type_title = (byte) 0x02;
-	private final static byte B_type_author = (byte) 0x03;
-	private final static byte B_type_year = (byte) 0x04;
-	private final static byte B_type_month = (byte) 0x05;
-	private final static byte B_type_day = (byte) 0x06;
-	private final static byte B_type_bookType = (byte) 0x07;
-	private final static byte B_type_bookMan = (byte) 0x08;
-	private final static byte B_type_shopKeeper = (byte) 0x09;
-	
-	public void buildHeader(WrapOutputStream wos) throws IOException {
-		wos.writeBytes(0x89, 0x9b, 0x9a, 0xde); // UMD file type flags
-		wos.writeByte('#');
-		wos.writeBytes(0x01, 0x00, 0x00, 0x08); // Unknown
-		wos.writeByte(0x01); //0x01 is text type; while 0x02 is Image type.
-		wos.writeBytes(UmdUtils.genRandomBytes(2)); //random number
-		
-		// start properties output
-		buildType(wos, B_type_title, getTitle());
-		buildType(wos, B_type_author, getAuthor());
-		buildType(wos, B_type_year, getYear());
-		buildType(wos, B_type_month, getMonth());
-		buildType(wos, B_type_day, getDay());
-		buildType(wos, B_type_bookType, getBookType());
-		buildType(wos, B_type_bookMan, getBookMan());
-		buildType(wos, B_type_shopKeeper, getShopKeeper());
-	}
-	
-	public void buildType(WrapOutputStream wos, byte type, String content) throws IOException {
-		if (content == null || content.length() == 0) {
-			return;
-		}
-		
-		wos.writeBytes('#', type, 0, 0);
-		
-		byte[] temp = UmdUtils.stringToUnicodeBytes(content);
-		wos.writeByte(temp.length + 5);
-		wos.write(temp);
-	}
-
-
-
-	public String getTitle() {
-		return title;
-	}
-
-	public void setTitle(String title) {
-		this.title = title;
-	}
-
-	public String getAuthor() {
-		return author;
-	}
-
-	public void setAuthor(String author) {
-		this.author = author;
-	}
-
-	public String getBookMan() {
-		return bookMan;
-	}
-
-	public void setBookMan(String bookMan) {
-		this.bookMan = bookMan;
-	}
-
-	public String getShopKeeper() {
-		return shopKeeper;
-	}
-
-	public void setShopKeeper(String shopKeeper) {
-		this.shopKeeper = shopKeeper;
-	}
-
-	public String getYear() {
-		return year;
-	}
-
-	public void setYear(String year) {
-		this.year = year;
-	}
-
-	public String getMonth() {
-		return month;
-	}
-
-	public void setMonth(String month) {
-		this.month = month;
-	}
-
-	public String getDay() {
-		return day;
-	}
-
-	public void setDay(String day) {
-		this.day = day;
-	}
-
-	public String getBookType() {
-		return bookType;
-	}
-
-	public void setBookType(String bookType) {
-		this.bookType = bookType;
-	}
-	
-	@Override
-	@NonNull
-	public String toString() {
-		return "UmdHeader{" +
-				"umdType=" + umdType +
-				", title='" + title + '\'' +
-				", author='" + author + '\'' +
-				", year='" + year + '\'' +
-				", month='" + month + '\'' +
-				", day='" + day + '\'' +
-				", bookType='" + bookType + '\'' +
-				", bookMan='" + bookMan + '\'' +
-				", shopKeeper='" + shopKeeper + '\'' +
-				'}';
-	}
-}

+ 0 - 153
book/src/main/java/me/ag2s/umdlib/tool/UmdUtils.java

@@ -1,153 +0,0 @@
-
-package me.ag2s.umdlib.tool;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.Random;
-import java.util.zip.InflaterInputStream;
-
-
-public class UmdUtils {
-
-	private static final int EOF = -1;
-	private static final int BUFFER_SIZE = 8 * 1024;
-
-
-	/**
-	 * 将字符串编码成Unicode形式的byte[]
-	 * @param s 要编码的字符串
-	 * @return 编码好的byte[]
-	 */
-	public static byte[] stringToUnicodeBytes(String s) {
-		if (s == null) {
-			throw new NullPointerException();
-		}
-		
-		int len = s.length();
-		byte[] ret = new byte[len * 2];
-		int a, b, c;
-		for (int i = 0; i < len; i++) {
-			c = s.charAt(i);
-			a = c >> 8;
-			b = c & 0xFF;
-			if (a < 0) {
-				a += 0xFF;
-			}
-			if (b < 0) {
-				b += 0xFF;
-			}
-			ret[i * 2] = (byte) b;
-			ret[i * 2 + 1] = (byte) a;
-		}
-		return ret;
-	}
-
-	/**
-	 * 将编码成Unicode形式的byte[]解码成原始字符串
-	 * @param bytes 编码成Unicode形式的byte[]
-	 * @return 原始字符串
-	 */
-	public static String unicodeBytesToString(byte[] bytes){
-		char[] s=new char[bytes.length/2];
-		StringBuilder sb=new StringBuilder();
-		int a,b,c;
-		for(int i=0;i<s.length;i++){
-			a=bytes[i*2+1];
-			b=bytes[i*2];
-			c=(a&0xff)<<8|(b&0xff);
-			if(c<0){
-				c+=0xffff;
-			}
-			char[] c1=Character.toChars(c);
-			sb.append(c1);
-
-		}
-		return sb.toString();
-	}
-
-	/**
-	 * 将byte[]转化成Hex形式
-	 * @param bArr byte[]
-	 * @return 目标HEX字符串
-	 */
-	public static String toHex(byte[] bArr){
-		StringBuilder sb = new StringBuilder(bArr.length);
-		String sTmp;
-
-		for (int i = 0; i < bArr.length; i++) {
-			sTmp = Integer.toHexString(0xFF & bArr[i]);
-			if (sTmp.length() < 2)
-				sb.append(0);
-			sb.append(sTmp.toUpperCase());
-		}
-
-		return sb.toString();
-	}
-
-	/**
-	 * 解压缩zip的byte[]
-	 * @param compress zippered byte[]
-	 * @return decompressed byte[]
-	 * @throws Exception 解码时失败时
-	 */
-	public static byte[] decompress(byte[] compress) throws Exception {
-		ByteArrayInputStream bais = new ByteArrayInputStream(compress);
-		InflaterInputStream iis = new InflaterInputStream(bais);
-		ByteArrayOutputStream baos = new ByteArrayOutputStream();
-		int c = 0;
-		byte[] buf = new byte[BUFFER_SIZE];
-		while (true) {
-			c = iis.read(buf);
-
-			if (c == EOF)
-				break;
-			baos.write(buf, 0, c);
-		}
-		baos.flush();
-		return baos.toByteArray();
-	}
-
-
-
-	
-	public static void saveFile(File f, byte[] content) throws IOException {
-		try (FileOutputStream fos = new FileOutputStream(f)) {
-			BufferedOutputStream bos = new BufferedOutputStream(fos);
-			bos.write(content);
-			bos.flush();
-		}
-	}
-	
-	public static byte[] readFile(File f) throws IOException {
-		try (FileInputStream fis = new FileInputStream(f)) {
-			ByteArrayOutputStream baos = new ByteArrayOutputStream();
-			BufferedInputStream bis = new BufferedInputStream(fis);
-			int ch;
-			while ((ch = bis.read()) >= 0) {
-				baos.write(ch);
-			}
-			baos.flush();
-			return baos.toByteArray();
-		}
-	}
-	
-	private static final Random random = new Random();
-	
-	public static byte[] genRandomBytes(int len) {
-		if (len <= 0) {
-			throw new IllegalArgumentException("Length must > 0: " + len);
-		}
-		byte[] ret = new byte[len];
-		for (int i = 0; i < ret.length; i++) {
-			ret[i] = (byte) random.nextInt(256);
-		}
-		return ret;
-	}
-
-}

+ 0 - 91
book/src/main/java/me/ag2s/umdlib/tool/WrapOutputStream.java

@@ -1,91 +0,0 @@
-package me.ag2s.umdlib.tool;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-public class WrapOutputStream extends OutputStream {
-	
-	private final OutputStream os;
-	private int written;
-
-	public WrapOutputStream(OutputStream os) {
-		this.os = os;
-	}
-	
-    private void incCount(int value) {
-        int temp = written + value;
-        if (temp < 0) {
-            temp = Integer.MAX_VALUE;
-        }
-        written = temp;
-    }
-	
-    // it is different from the writeInt of DataOutputStream
-	public void writeInt(int v) throws IOException {
-        os.write((v >>>  0) & 0xFF);
-        os.write((v >>>  8) & 0xFF);
-        os.write((v >>> 16) & 0xFF);
-        os.write((v >>> 24) & 0xFF);
-		incCount(4);
-	}
-	
-	public void writeByte(byte b) throws IOException {
-		write(b);
-	}
-	
-	public void writeByte(int n) throws IOException {
-		write(n);
-	}
-	
-	public void writeBytes(byte ... bytes) throws IOException {
-		write(bytes);
-	}
-	
-	public void writeBytes(int ... vals) throws IOException {
-		for (int v : vals) {
-			write(v);
-		}
-	}
-
-	public void write(byte[] b, int off, int len) throws IOException {
-		os.write(b, off, len);
-		incCount(len);
-	}
-
-	public void write(byte[] b) throws IOException {
-		os.write(b);
-		incCount(b.length);
-	}
-
-	public void write(int b) throws IOException {
-		os.write(b);
-		incCount(1);
-	}
-	
-	/////////////////////////////////////////////////
-
-	public void close() throws IOException {
-		os.close();
-	}
-
-	public void flush() throws IOException {
-		os.flush();
-	}
-
-	public boolean equals(Object obj) {
-		return os.equals(obj);
-	}
-
-	public int hashCode() {
-		return os.hashCode();
-	}
-
-	public String toString() {
-		return os.toString();
-	}
-
-	public int getWritten() {
-		return written;
-	}
-
-}

+ 0 - 390
book/src/main/resources/dtd/openebook.org/dtds/oeb-1.2/oebpkg12.dtd

@@ -1,390 +0,0 @@
-<!--
-
-Title:
-
-     The Package Document Type Definition (DTD) for the Open
-     eBook Publication Structure Version 1.2
-
-
-Version:
-
-     1.2
-
-
-Revision:
-
-     20020930-x  (supercedes 20020605-x)
-
-
-Revision History Note:
-
-     This revision, 20020930-x, which supercedes the prior revision
-     20020605-x, solely updates the email addresses within this
-     comment prologue. No changes whatsover were made to the parsed
-     content of this DTD.
-
-
-Previous Released Version:
-
-     1.0.1 (Revision of 01-February-2001, "Document Type
-            Definition for the Open eBook package version
-            1.0.1")
-
-
-Authors:
-
-     Version 1.0; 1.0.1
-
-          Steve DeRose <sjd@stg.brown.edu>
-          Gunter Hille <hille@abc.de>
-          Ben Trafford <ben@legendary.org>
-          Garret Wilson <garret@globalmentor.com>
-
-     This Version 1.2 updated and edited by:
-
-          Jon Noring <jon@noring.name>
-          Benjamin Jung <benjamin.jung@deepx.com>
-
-
-Usage:
-
-     <?xml version="1.0"?>
-     <!DOCTYPE package
-               PUBLIC "+//ISBN 0-9673008-1-9//DTD OEB 1.2 Package//EN"
-               "http://openebook.org/dtds/oeb-1.2/oebpkg12.dtd">
-     <package unique-identifier="foo">
-          metadata
-          manifest
-          spine
-          tours
-          guide
-     </package>
-
-
-Summary Description:
-
-     This is the Package Document Type Definition (DTD) for
-     the Open eBook Publication Structure version 1.2.
-
-     Changes to this DTD from version 1.0.1 include:
-
-          a. Upgrading the <dc-metadata> content model to
-             fully conform with the OEBPS 1.2 specification
-             requirements. Specifically, <dc:Language> is
-             now required, while in OEBPS 1.0.1 it was
-             optional.
-
-          b. Updating the mnemonic character entity
-             declaration to refer to version 1.2.
-
-          c. Updating the xmlns:dc namespace to refer to
-             version 1.1 of the Dublin Core Metadata
-             Initiative.
-
-          d. Editing and updating the various non-parsed
-             comments.
-
-          e. Revising the layout (e.g., white space
-             alteration) to aid in readability.
-
--->
-
-
-<!-- *************************************************** -->
-
-<!-- XHTML MNEMONIC CHARACTER ENTITIES ................. -->
-
-<!ENTITY % OEBEntities
-     PUBLIC "+//ISBN 0-9673008-1-9//DTD OEB 1.2 Entities//EN"
-     "http://openebook.org/dtds/oeb-1.2/oeb12.ent">
-
-%OEBEntities;
-
-<!-- *************************************************** -->
-
-<!-- DATATYPE ENTITIES ................................. -->
-
-<!-- Uniform Resource Identifier (URI), per [RFC2396] -->
-
-<!ENTITY % URI "CDATA">
-
-<!-- Language code, per [RFC3066] -->
-
-<!ENTITY % LanguageCode "NMTOKEN">
-
-<!-- *************************************************** -->
-
-<!-- NAMESPACE ENTITIES ................................ -->
-
-<!ENTITY % dc.xmlns
-     "'http://purl.org/dc/elements/1.1/'">
-
-<!ENTITY % oebpk.xmlns
-     "'http://openebook.org/namespaces/oeb-package/1.0/'">
-
-<!-- *************************************************** -->
-
-<!-- ELEMENT ENTITIES .................................. -->
-
-<!-- The entity 'DCMetadataOpt' includes the 12 optional
-     <dc:Xxx> children elements of <dc-metadata>. It will
-     be used in the <dc-metadata> content model. -->
-
-<!ENTITY % DCMetadataOpt
-     "dc:Contributor |
-      dc:Coverage    |
-      dc:Creator     |
-      dc:Date        |
-      dc:Description |
-      dc:Format      |
-      dc:Publisher   |
-      dc:Relation    |
-      dc:Rights      |
-      dc:Source      |
-      dc:Subject     |
-      dc:Type        ">
-
-<!-- *************************************************** -->
-
-<!-- ATTRIBUTE ENTITIES ................................ -->
-
-<!ENTITY % CoreAttributes
-     "id                 ID              #IMPLIED">
-
-<!ENTITY % InternationalAttributes
-     "xml:lang           %LanguageCode;  #IMPLIED">
-
-<!ENTITY % CommonAttributes
-     "%CoreAttributes;
-      %InternationalAttributes;">
-
-<!-- 'DCNamespaceAttribute' is an attribute entity declaring
-     the Dublin Core namespace. Used on each <dc:Xxx> element
-     to accommodate XML parsers which unnecessarily require
-     this. -->
-
-<!ENTITY % DCNamespaceAttribute
-     "xmlns:dc           %URI;           #FIXED %dc.xmlns;">
-
-<!-- *************************************************** -->
-
-<!-- ELEMENTS AND ATTRIBUTES ........................... -->
-
-<!-- <package> must have as children elements, in this order:
-     <metadata>, <manifest>, and <spine>, and optionally may
-     include <tours> and/or <guide>. The 'unique-identifier'
-     attribute is required for <package> (see comment for
-     <dc:Identifier>.) -->
-
-<!ELEMENT package (metadata, manifest, spine, tours?, guide?)>
-<!ATTLIST package
-      %CommonAttributes;
-      unique-identifier  IDREF           #REQUIRED
-      xmlns              %URI;           #FIXED %oebpk.xmlns;>
-
-<!-- <metadata> must contain one <dc-metadata>, and
-     optionally contain one <x-metadata>. There are no
-     attributes for <metadata>. -->
-
-<!ELEMENT metadata (dc-metadata, x-metadata?)>
-
-<!-- <dc-metadata> must contain at least one <dc:Title>,
-     one <dc:Identifier>, and one <dc:Language>, and may
-     contain one or more of each of the other twelve
-     optional <dc:XXX> elements, all in any order. -->
-
-<!ELEMENT dc-metadata
-( (%DCMetadataOpt;)*,
-  ( (dc:Title, (%DCMetadataOpt; | dc:Title)*,
-      ( (dc:Identifier, (%DCMetadataOpt; | dc:Title | dc:Identifier)*,
-         dc:Language) |
-        (dc:Language, (%DCMetadataOpt; | dc:Title | dc:Language)*,
-         dc:Identifier) ) ) |
-    (dc:Identifier, (%DCMetadataOpt; | dc:Identifier)*,
-      ( (dc:Title, (%DCMetadataOpt; | dc:Identifier | dc:Title)*,
-         dc:Language) |
-
-        (dc:Language, (%DCMetadataOpt; | dc:Identifier | dc:Language)*,
-         dc:Title) ) ) |
-    (dc:Language, (%DCMetadataOpt; | dc:Language)*,
-      ( (dc:Identifier, (%DCMetadataOpt; | dc:Language | dc:Identifier)*,
-         dc:Title) |
-        (dc:Title, (%DCMetadataOpt; | dc:Language | dc:Title)*,
-         dc:Identifier) ) ) ),
-  (%DCMetadataOpt; | dc:Title | dc:Identifier | dc:Language)* )>
-
-<!ATTLIST dc-metadata
-      %CommonAttributes;
-      %DCNamespaceAttribute;
-      xmlns:oebpackage   %URI;           #FIXED %oebpk.xmlns;>
-
-<!-- Required elements for <dc-metadata>. -->
-
-<!ELEMENT dc:Title (#PCDATA)>
-<!ATTLIST dc:Title
-      %CommonAttributes;
-      %DCNamespaceAttribute;>
-
-<!-- One <dc:Identifier> must specify an 'id' identical to
-     the value of the required <package> 'unique-identifier'
-     attribute. -->
-
-<!ELEMENT dc:Identifier (#PCDATA)>
-<!ATTLIST dc:Identifier
-      %CommonAttributes;
-      %DCNamespaceAttribute;
-      scheme             NMTOKEN         #IMPLIED>
-
-<!ELEMENT dc:Language (#PCDATA)>
-<!ATTLIST dc:Language
-      %CommonAttributes;
-      %DCNamespaceAttribute;>
-
-<!-- Optional elements for <dc-metadata>. -->
-
-<!ELEMENT dc:Contributor (#PCDATA)>
-<!ATTLIST dc:Contributor
-      %CommonAttributes;
-      %DCNamespaceAttribute;
-      file-as            CDATA           #IMPLIED
-      role               NMTOKEN         #IMPLIED>
-
-<!ELEMENT dc:Coverage (#PCDATA)>
-<!ATTLIST dc:Coverage
-      %CommonAttributes;
-      %DCNamespaceAttribute;>
-
-<!ELEMENT dc:Creator (#PCDATA)>
-<!ATTLIST dc:Creator
-      %CommonAttributes;
-      %DCNamespaceAttribute;
-      file-as            CDATA           #IMPLIED
-      role               NMTOKEN         #IMPLIED>
-
-<!ELEMENT dc:Date (#PCDATA)>
-<!ATTLIST dc:Date
-      %CommonAttributes;
-      %DCNamespaceAttribute;
-      event              NMTOKEN         #IMPLIED>
-
-<!ELEMENT dc:Description (#PCDATA)>
-<!ATTLIST dc:Description
-      %CommonAttributes;
-      %DCNamespaceAttribute;>
-
-<!ELEMENT dc:Format (#PCDATA)>
-<!ATTLIST dc:Format
-      %CommonAttributes;
-      %DCNamespaceAttribute;>
-
-<!ELEMENT dc:Publisher (#PCDATA)>
-<!ATTLIST dc:Publisher
-      %CommonAttributes;
-      %DCNamespaceAttribute;>
-
-<!ELEMENT dc:Relation (#PCDATA)>
-<!ATTLIST dc:Relation
-      %CommonAttributes;
-      %DCNamespaceAttribute;>
-
-<!ELEMENT dc:Rights (#PCDATA)>
-<!ATTLIST dc:Rights
-      %CommonAttributes;
-      %DCNamespaceAttribute;>
-
-<!ELEMENT dc:Source (#PCDATA)>
-<!ATTLIST dc:Source
-      %CommonAttributes;
-      %DCNamespaceAttribute;>
-
-<!ELEMENT dc:Subject (#PCDATA)>
-<!ATTLIST dc:Subject
-      %CommonAttributes;
-      %DCNamespaceAttribute;>
-
-<!ELEMENT dc:Type (#PCDATA)>
-
-<!ATTLIST dc:Type
-      %CommonAttributes;
-      %DCNamespaceAttribute;>
-
-<!-- <x-metadata> must contain at least one <meta>. -->
-
-<!ELEMENT x-metadata (meta+)>
-<!ATTLIST x-metadata %CommonAttributes;>
-
-<!-- Note that 'content' and 'name' are required attributes
-     for <meta>. -->
-
-<!ELEMENT meta EMPTY>
-<!ATTLIST meta
-      %CommonAttributes;
-      content            CDATA           #REQUIRED
-      name               NMTOKEN         #REQUIRED
-      scheme             CDATA           #IMPLIED>
-
-<!-- <manifest> must contain at least one <item>. -->
-
-<!ELEMENT manifest (item+)>
-<!ATTLIST manifest %CommonAttributes;>
-
-<!-- Note that 'href', 'id' and 'media-type' are required
-     attributes for <item>. -->
-
-<!ELEMENT item EMPTY>
-<!ATTLIST item
-      %InternationalAttributes;
-      fallback           IDREF           #IMPLIED
-      href               %URI;           #REQUIRED
-      id                 ID              #REQUIRED
-      media-type         CDATA           #REQUIRED>
-
-<!-- <spine> must contain at least one <itemref>. -->
-
-<!ELEMENT spine (itemref+)>
-<!ATTLIST spine %CommonAttributes;>
-
-<!-- Note that 'idref' is a required attribute for
-     <itemref>. -->
-
-<!ELEMENT itemref EMPTY>
-<!ATTLIST itemref
-      %CommonAttributes;
-      idref              IDREF           #REQUIRED>
-
-<!-- <tours> must contain at least one <tour>. -->
-
-<!ELEMENT tours (tour+)>
-<!ATTLIST tours %CommonAttributes;>
-
-<!-- <tour> must contain at least one <site>. Note that
-     'title' is a required attribute for <tour>. -->
-
-<!ELEMENT tour (site+)>
-<!ATTLIST tour
-      %CommonAttributes;
-      title              CDATA           #REQUIRED>
-
-<!-- Note that 'href' and 'title' are required attributes
-     for <site>. -->
-
-<!ELEMENT site EMPTY>
-<!ATTLIST site
-      %CommonAttributes;
-      href               %URI;           #REQUIRED
-      title              CDATA           #REQUIRED>
-
-<!-- <guide> must contain at least one <reference>. -->
-
-<!ELEMENT guide (reference+)>
-<!ATTLIST guide %CommonAttributes;>
-
-<!-- Note that 'href', 'title' and 'type' are required
-     attributes for <reference>. -->
-
-<!ELEMENT reference EMPTY>
-<!ATTLIST reference
-      %CommonAttributes;
-      href               %URI;           #REQUIRED
-      title              CDATA           #REQUIRED
-      type               NMTOKEN         #REQUIRED>

+ 0 - 269
book/src/main/resources/dtd/www.daisy.org/z3986/2005/ncx-2005-1.dtd

@@ -1,269 +0,0 @@
-<!-- NCX 2005-1 DTD  2005-06-26
-file: ncx-2005-1.dtd                                 
-
-  Authors: Mark Hakkinen, George Kerscher, Tom McLaughlin, James Pritchett, and Michael Moodie
-  Change list:
-  2002-02-12 M. Moodie. Changed content model of navLabel element to eliminate ambiguity.
-  2002-02-27 M. Moodie. Grammatical changes suggested by editor.
-  2004-03-31 J. Pritchett.  Various changes per the 2004 change list:
-            - Changed internal version numbers from 1.1.0 to 1.2.0
-            - Made audio clipBegin/clipEnd mandatory (change #10)
-            - Dropped value attribute from navPoint (change #11)
-            - Replaced lang attribute with xml:lang (change #12)
-            - Added <pageList> and <pageTarget> elements (change #48)
-            - Dropped onFocus and onBlur attributes from navPoint and navTarget (change #49)
-            - Added <img> to content models of docTitle and docAuthor (change #50)
-            - Removed reference to pages in description of navList (change #52)
-            - Added <navInfo> element (change #53)
-            - Added default namespace attribute to description of <ncx> (change #L8)
-            - Removed pageRef and mapRef attributes
-  2004-04-05 J. Pritchett.  Changes after feedback from MM and MG to 2004-03-31 version
-            - Changed internal version numbers from 1.2.0 to 1.1.2 (per MM e-mail of 3/31)
-            - Changed system identifier to use z3986/2004 as path instead of z3986/v100 (per 3/31 con call)
-            - Added class attribute to both pageTarget and pageList (per MG e-mail of 4/1)
-            - Added comment text describing value attribute for pageTarget and navTarget (per MM e-mail of 3/31)
-            - Changed declaration of type attribute on pageTarget to enumerate allowed values 
-            - Added playOrder attribute to navPoint, navTarget, and pageTarget (per Lloyd's proposal)
-2004-04-05 T. McLaughlin. In description of smilCustomTest, added id and defaultState are to be copied. 
-Version update to 1.1.3.
-2004-05-14 T. McLaughlin. Reinstated override attribute to be copied also. Added bookStruct attribute 
-and enum list to smilCustomTest. Update to 1.1.4.
-Revised, 4/5/2004:  Changed version to 1.1.2 
-Revised, 4/5/2004:  Changed system identifier to use '2004' path 
-Revised, 4/5/2004:  TM, Changed version to 1.1.3 
-Revised, 5/14/2004:  TM, Changed version to 1.1.4 
-2004-07-07 M. Moodie Updated version to 1.2.0 everywhere but at top, where version was set to 1.1.5.
-2004-09-15 M. Moodie.  Changed uri to URI throughout.  Set version to 1.1.6.
-2004-09-16 M. Moodie.  Changed version to 1.2.0
-2005-06-26 M. Gylling. Changed pid, sid, ns uri, and filename for Z3986-2005
-            
-  Description:
-                                                  
-  NCX (Navigation Control for XML applications) is a generalized navigation definition DTD for application
-to Digital Talking Books, eBooks, and general web content models.                                                
-This DTD is an XML application that layers navigation functionality on top of SMIL 2.0  content.                                       
-  
-  The NCX defines a navigation path/model that may be applied upon existing publications,
-without modification of the existing publication source, so long as the navigation targets within
-the source publication can be directly referenced via a URI.                      
-             
-The following identifiers apply to this DTD:
-  "-//NISO//DTD ncx 2005-1//EN"
-  "http://www.daisy.org/z3986/2005/ncx-2005-1.dtd"
--->
-
-<!-- Basic Entities -->
-
-<!ENTITY % i18n 
-  "xml:lang    NMTOKEN    #IMPLIED
-  dir    (ltr|rtl)  #IMPLIED" >
-
-<!ENTITY % SMILtimeVal  "CDATA" >
-<!ENTITY % URI    "CDATA" >
-<!ENTITY % script  "CDATA" >
-
-<!-- ELEMENTS -->
-
-<!-- Top Level NCX Container. -->
-<!-- Revised, 3/31/2004:  Added pageList to content model -->
-<!ELEMENT ncx (head, docTitle, docAuthor*, navMap, pageList?, navList*)>
-<!-- Revised, 4/5/2004:  Changed version to 1.1.2 -->
-<!-- Revised 3/29/2004:  Added xmlns -->
-<!-- Revised, 4/5/2004:  TM, Changed version to 1.1.3 -->
-<!-- Revised, 5/14/2004:  TM, Changed version to 1.1.4 -->
-<!-- Revised, 7/7/2004:  MM, Changed version to 1.2.0 -->
-<!ATTLIST ncx 
-  version     CDATA     #FIXED "2005-1"
-  xmlns       %URI;     #FIXED "http://www.daisy.org/z3986/2005/ncx/"
-  %i18n;
->
-
-<!-- Document Head - Contains all NCX metadata.  
--->
-
-<!ELEMENT head (smilCustomTest | meta)+>
-
-<!-- 2004-04-05 TM - only id and defaultState are copied -->
-<!-- 2004-05-14 TM - revert to override copied too; added bookStruct attribute -->
-<!-- smilCustomTest - Duplicates customTest data found in SMIL files.  Each unique customTest 
-element that appears in one or more SMIL files must have its id, defaultState and override 
-attributes duplicated in a smilCustomTest element in the NCX.  The NCX thus gathers in one 
-place all customTest elements used in the SMIL files, for presentation to the user.
--->
-<!ELEMENT smilCustomTest EMPTY>
-<!ATTLIST smilCustomTest
-id    ID    #REQUIRED
-defaultState  (true|false)   'false'
-override  (visible|hidden) 'hidden'
-bookStruct  (PAGE_NUMBER|NOTE|NOTE_REFERENCE|ANNOTATION|LINE_NUMBER|OPTIONAL_SIDEBAR|OPTIONAL_PRODUCER_NOTE)  #IMPLIED
->
-
-<!-- Meta Element - metadata about this NCX -->
-<!ELEMENT meta EMPTY>
-<!ATTLIST meta
-  name    CDATA    #REQUIRED
-  content  CDATA    #REQUIRED
-  scheme  CDATA    #IMPLIED
->
-
-<!-- DocTitle - the title of the document, required and must immediately follow head. 
--->
-
-<!-- Revised, 3/31/2004:  Added img to content model -->
-<!ELEMENT docTitle (text, audio?, img?)>
-<!ATTLIST docTitle
-  id    ID    #IMPLIED
-  %i18n;
->
-
-<!-- DocAuthor - the author of the document, immediately follows docTitle.
--->
-
-<!-- Revised, 3/31/2004:  Added img to content model -->
-<!ELEMENT docAuthor (text, audio?, img?)>
-<!ATTLIST docAuthor
-  id    ID    #IMPLIED
-  %i18n;
->
-
-<!-- Navigation Structure - container for all of the NCX objects that are part of the 
-hierarchical structure of the document.
--->
-
-<!-- Revised, 3/31/2004:  Added navInfo to content model -->
-<!ELEMENT navMap (navInfo*, navLabel*, navPoint+)>
-<!ATTLIST navMap
-  id    ID    #IMPLIED
->
-
-<!-- Navigation Point - contains description(s) of target, as well as a pointer to 
-entire content of target.
-Hierarchy is represented by nesting navPoints.  "class" attribute describes the kind 
-of structural unit this object represents (e.g., "chapter", "section").
--->
-<!ELEMENT navPoint (navLabel+, content, navPoint*)>
-<!-- Revised, 3/29/2004:  Removed onFocus/onBlur -->
-<!-- Revised, 3/29/2004:  Removed value -->
-<!-- Revised, 3/31/2004:  Removed pageRef -->
-<!-- Revised, 4/5/2004:  Added playOrder -->
-<!ATTLIST navPoint
-  id    ID      #REQUIRED
-  class    CDATA    #IMPLIED
-  playOrder CDATA       #REQUIRED
->
-
-<!-- Revised, 3/31/2004:  Added pageList element -->
-<!-- Page List -  Container for pagination information.
-  -->
-<!ELEMENT pageList (navInfo*, navLabel*, pageTarget+)>
-<!-- Revised, 4/5/2004:  Added class attribute -->
-<!ATTLIST pageList
-   id       ID          #IMPLIED
-   class    CDATA       #IMPLIED
->
-
-<!-- Revised, 3/31/2004:  Added pageTarget element -->
-<!-- Revised, 4/5/2004:  Added description of value attribute to comment -->
-<!-- Page Target -  Container for 
-  text, audio, image, and content elements containing navigational 
-  information for pages.  The "value" attribute is a positive integer representing 
-the numeric value associated with a page. Combination of values of type and 
-value attributes must be unique, when value attribute is present. 
--->
-<!ELEMENT pageTarget (navLabel+, content)>
-<!-- Revised, 4/5/2004:  Added class attribute -->
-<!-- Revised, 4/5/2004:  Changed declaration of type attribute to enumerate values -->
-<!-- Revised, 4/5/2004:  Added playOrder -->
-<!ATTLIST pageTarget
-   id       ID          #IMPLIED
-   value    CDATA       #IMPLIED
-   type     (front | normal | special)       #REQUIRED
-   class    CDATA       #IMPLIED
-   playOrder CDATA      #REQUIRED
->
-
-<!-- Navigation List - container for distinct, flat sets of navigable elements, e.g.  
-notes, figures, tables, etc.  Essentially a flat version of navMap.  The "class" attribute 
-describes the type of object contained in this navList, using dtbook element names, e.g., note.
--->
-
-<!-- Revised, 3/31/2004:  Added navInfo to content model -->
-<!ELEMENT navList   (navInfo*, navLabel+, navTarget+) >
-<!ATTLIST navList
-  id    ID    #IMPLIED
-  class    CDATA    #IMPLIED
->
-
-<!-- Revised, 4/5/2004:  Added description of value attribute to comment -->
-<!-- Navigation Target - contains description(s) of target, as well as a pointer to 
-entire content of target.
-navTargets are the equivalent of navPoints for use in navLists.  "class" attribute 
-describes the kind of structure this target represents, using its dtbook element 
-name, e.g., note.  The "value" attribute is a positive integer representing the 
-numeric value associated with the navTarget.
--->
-
-<!ELEMENT navTarget  (navLabel+, content) >
-<!-- Revised, 3/29/2004:  Removed onFocus/onBlur -->
-<!-- Revised, 3/31/2004:  Removed mapRef -->
-<!-- Revised, 4/5/2004:  Added playOrder -->
-<!ATTLIST navTarget
-  id    ID    #REQUIRED
-  class    CDATA    #IMPLIED
-  value    CDATA    #IMPLIED
-  playOrder CDATA       #REQUIRED
->
-
-
-<!-- Revised, 3/31/2004:  Added navInfo element -->
-<!-- Navigation Information - Contains an informative comment
-  about a navMap, pageList, or navList in various media for presentation to the user.
--->
-<!ELEMENT navInfo (((text, audio?) | audio), img?)>
-<!ATTLIST navInfo
-  %i18n; 
->
-
-
-<!-- Navigation Label - Contains a description of a given <navMap>, <navPoint>, 
-<navList>, or <navTarget> in various media for presentation to the user. Can be 
-repeated so descriptions can be provided in multiple languages. -->
-<!ELEMENT navLabel (((text, audio?) | audio), img?)>
-<!ATTLIST navLabel
-  %i18n; 
->
-
-
-<!-- Content Element - pointer into SMIL to beginning of navPoint. -->
-<!ELEMENT content EMPTY>
-<!ATTLIST content
-  id    ID    #IMPLIED
-  src    %URI;    #REQUIRED
->
-
-<!-- Text Element - Contains text of docTitle, navPoint heading, navTarget (e.g., page number), 
-or label for navMap or navList. -->
-<!ELEMENT text (#PCDATA)>
-<!ATTLIST text
-  id    ID        #IMPLIED
-  class  CDATA      #IMPLIED
->
-
-<!-- Audio Element - audio clip of navPoint heading. -->
-<!ELEMENT audio EMPTY>
-<!-- Revised, 3/29/2004:  clipBegin/clipEnd now REQUIRED -->
-<!ATTLIST audio
-  id    ID        #IMPLIED
-  class  CDATA      #IMPLIED
-  src    %URI;      #REQUIRED
-  clipBegin %SMILtimeVal;  #REQUIRED
-  clipEnd  %SMILtimeVal;  #REQUIRED
->
-
-<!-- Image Element - image that may accompany heading. -->
-<!ELEMENT img EMPTY>
-<!ATTLIST img
-  id    ID      #IMPLIED
-  class  CDATA    #IMPLIED
-  src    %URI;    #REQUIRED
->

+ 0 - 242
book/src/main/resources/dtd/www.w3.org/TR/ruby/xhtml-ruby-1.mod

@@ -1,242 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Ruby Module .................................................... -->
-<!-- file: xhtml-ruby-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1999-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-ruby-1.mod,v 4.0 2001/04/03 23:14:33 altheim Exp $
-
-     This module is based on the W3C Ruby Annotation Specification:
-
-        http://www.w3.org/TR/ruby
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Ruby 1.0//EN"
-       SYSTEM "http://www.w3.org/TR/ruby/xhtml-ruby-1.mod"
-
-     ...................................................................... -->
-
-<!-- Ruby Elements
-
-        ruby, rbc, rtc, rb, rt, rp
-
-     This module declares the elements and their attributes used to
-     support ruby annotation markup.
--->
-
-<!-- declare qualified element type names:
--->
-<!ENTITY % ruby.qname  "ruby" >
-<!ENTITY % rbc.qname  "rbc" >
-<!ENTITY % rtc.qname  "rtc" >
-<!ENTITY % rb.qname  "rb" >
-<!ENTITY % rt.qname  "rt" >
-<!ENTITY % rp.qname  "rp" >
-
-<!-- rp fallback is included by default.
--->
-<!ENTITY % Ruby.fallback "INCLUDE" >
-<!ENTITY % Ruby.fallback.mandatory "IGNORE" >
-
-<!-- Complex ruby is included by default; it may be 
-     overridden by other modules to ignore it.
--->
-<!ENTITY % Ruby.complex "INCLUDE" >
-
-<!-- Fragments for the content model of the ruby element -->
-<![%Ruby.fallback;[
-<![%Ruby.fallback.mandatory;[
-<!ENTITY % Ruby.content.simple 
-     "( %rb.qname;, %rp.qname;, %rt.qname;, %rp.qname; )"
->
-]]>
-<!ENTITY % Ruby.content.simple 
-     "( %rb.qname;, ( %rt.qname; | ( %rp.qname;, %rt.qname;, %rp.qname; ) ) )"
->
-]]>
-<!ENTITY % Ruby.content.simple "( %rb.qname;, %rt.qname; )" >
-
-<![%Ruby.complex;[
-<!ENTITY % Ruby.content.complex 
-     "| ( %rbc.qname;, %rtc.qname;, %rtc.qname;? )"
->
-]]>
-<!ENTITY % Ruby.content.complex "" >
-
-<!-- Content models of the rb and the rt elements are intended to
-     allow other inline-level elements of its parent markup language,
-     but it should not include ruby descendent elements. The following
-     parameter entity %NoRuby.content; can be used to redefine
-     those content models with minimum effort.  It's defined as
-     '( #PCDATA )' by default.
--->
-<!ENTITY % NoRuby.content "( #PCDATA )" >
-
-<!-- one or more digits (NUMBER) -->
-<!ENTITY % Number.datatype "CDATA" >
-
-<!-- ruby element ...................................... -->
-
-<!ENTITY % ruby.element  "INCLUDE" >
-<![%ruby.element;[
-<!ENTITY % ruby.content
-     "( %Ruby.content.simple; %Ruby.content.complex; )"
->
-<!ELEMENT %ruby.qname;  %ruby.content; >
-<!-- end of ruby.element -->]]>
-
-<![%Ruby.complex;[
-<!-- rbc (ruby base component) element ................. -->
-
-<!ENTITY % rbc.element  "INCLUDE" >
-<![%rbc.element;[
-<!ENTITY % rbc.content
-     "(%rb.qname;)+"
->
-<!ELEMENT %rbc.qname;  %rbc.content; >
-<!-- end of rbc.element -->]]>
-
-<!-- rtc (ruby text component) element ................. -->
-
-<!ENTITY % rtc.element  "INCLUDE" >
-<![%rtc.element;[
-<!ENTITY % rtc.content
-     "(%rt.qname;)+"
->
-<!ELEMENT %rtc.qname;  %rtc.content; >
-<!-- end of rtc.element -->]]>
-]]>
-
-<!-- rb (ruby base) element ............................ -->
-
-<!ENTITY % rb.element  "INCLUDE" >
-<![%rb.element;[
-<!-- %rb.content; uses %NoRuby.content; as its content model,
-     which is '( #PCDATA )' by default. It may be overridden
-     by other modules to allow other inline-level elements
-     of its parent markup language, but it should not include
-     ruby descendent elements.
--->
-<!ENTITY % rb.content "%NoRuby.content;" >
-<!ELEMENT %rb.qname;  %rb.content; >
-<!-- end of rb.element -->]]>
-
-<!-- rt (ruby text) element ............................ -->
-
-<!ENTITY % rt.element  "INCLUDE" >
-<![%rt.element;[
-<!-- %rt.content; uses %NoRuby.content; as its content model,
-     which is '( #PCDATA )' by default. It may be overridden
-     by other modules to allow other inline-level elements
-     of its parent markup language, but it should not include
-     ruby descendent elements.
--->
-<!ENTITY % rt.content "%NoRuby.content;" >
-
-<!ELEMENT %rt.qname;  %rt.content; >
-<!-- end of rt.element -->]]>
-
-<!-- rbspan attribute is used for complex ruby only ...... -->
-<![%Ruby.complex;[
-<!ENTITY % rt.attlist  "INCLUDE" >
-<![%rt.attlist;[
-<!ATTLIST %rt.qname;
-      rbspan         %Number.datatype;      "1"
->
-<!-- end of rt.attlist -->]]>
-]]>
-
-<!-- rp (ruby parenthesis) element ..................... -->
-
-<![%Ruby.fallback;[
-<!ENTITY % rp.element  "INCLUDE" >
-<![%rp.element;[
-<!ENTITY % rp.content
-     "( #PCDATA )"
->
-<!ELEMENT %rp.qname;  %rp.content; >
-<!-- end of rp.element -->]]>
-]]>
-
-<!-- Ruby Common Attributes
-
-     The following optional ATTLIST declarations provide an easy way
-     to define common attributes for ruby elements.  These declarations
-     are ignored by default.
-
-     Ruby elements are intended to have common attributes of its
-     parent markup language.  For example, if a markup language defines
-     common attributes as a parameter entity %attrs;, you may add
-     those attributes by just declaring the following parameter entities
-
-         <!ENTITY % Ruby.common.attlists  "INCLUDE" >
-         <!ENTITY % Ruby.common.attrib  "%attrs;" >
-
-     before including the Ruby module.
--->
-
-<!ENTITY % Ruby.common.attlists  "IGNORE" >
-<![%Ruby.common.attlists;[
-<!ENTITY % Ruby.common.attrib  "" >
-
-<!-- common attributes for ruby ........................ -->
-
-<!ENTITY % Ruby.common.attlist  "INCLUDE" >
-<![%Ruby.common.attlist;[
-<!ATTLIST %ruby.qname;
-      %Ruby.common.attrib;
->
-<!-- end of Ruby.common.attlist -->]]>
-
-<![%Ruby.complex;[
-<!-- common attributes for rbc ......................... -->
-
-<!ENTITY % Rbc.common.attlist  "INCLUDE" >
-<![%Rbc.common.attlist;[
-<!ATTLIST %rbc.qname;
-      %Ruby.common.attrib;
->
-<!-- end of Rbc.common.attlist -->]]>
-
-<!-- common attributes for rtc ......................... -->
-
-<!ENTITY % Rtc.common.attlist  "INCLUDE" >
-<![%Rtc.common.attlist;[
-<!ATTLIST %rtc.qname;
-      %Ruby.common.attrib;
->
-<!-- end of Rtc.common.attlist -->]]>
-]]>
-
-<!-- common attributes for rb .......................... -->
-
-<!ENTITY % Rb.common.attlist  "INCLUDE" >
-<![%Rb.common.attlist;[
-<!ATTLIST %rb.qname;
-      %Ruby.common.attrib;
->
-<!-- end of Rb.common.attlist -->]]>
-
-<!-- common attributes for rt .......................... -->
-
-<!ENTITY % Rt.common.attlist  "INCLUDE" >
-<![%Rt.common.attlist;[
-<!ATTLIST %rt.qname;
-      %Ruby.common.attrib;
->
-<!-- end of Rt.common.attlist -->]]>
-
-<![%Ruby.fallback;[
-<!-- common attributes for rp .......................... -->
-
-<!ENTITY % Rp.common.attlist  "INCLUDE" >
-<![%Rp.common.attlist;[
-<!ATTLIST %rp.qname;
-      %Ruby.common.attrib;
->
-<!-- end of Rp.common.attlist -->]]>
-]]>
-]]>
-
-<!-- end of xhtml-ruby-1.mod -->

+ 0 - 51
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-arch-1.mod

@@ -1,51 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Base Architecture Module  ...................................... -->
-<!-- file: xhtml-arch-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-arch-1.mod,v 1.1 2010/07/29 13:42:46 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Base Architecture 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-arch-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- This optional module includes declarations that enable XHTML to be used
-     as a base architecture according to the 'Architectural Forms Definition
-     Requirements' (Annex A.3, ISO/IEC 10744, 2nd edition). For more information
-     on use of architectural forms, see the HyTime web site at:
-
-         http://www.hytime.org/
--->
-
-<?IS10744 ArcBase xhtml ?>
-
-<!NOTATION xhtml PUBLIC "-//W3C//NOTATION AFDR ARCBASE XHTML 1.1//EN" >
-
-<!-- Entity declaration for associated Architectural DTD
--->
-<!ENTITY xhtml-arch.dtd
-      PUBLIC "-//W3C//DTD XHTML Architecture 1.1//EN"
-             "xhtml11-arch.dtd" >
-
-<?IS10744:arch xhtml
-    public-id       =  "-//W3C//NOTATION AFDR ARCBASE XHTML 1.1//EN"
-    dtd-public-id   =  "-//W3C//DTD XHTML 1.1//EN"
-    dtd-system-id   =  "xhtml11.dtd"
-    doc-elem-form   =  "html"
-    form-att        =  "html"
-    renamer-att     =  "htnames"
-    suppressor-att  =  "htsupp"
-    data-ignore-att =  "htign"
-    auto            =  "ArcAuto"
-    options         =  "HtModReq HtModOpt"
-    HtModReq        =  "Framework Text Hypertext Lists Structure"
-    HtModOpt        =  "Standard"
-?>
-
-<!-- end of xhtml-arch-1.mod -->

+ 0 - 142
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-attribs-1.mod

@@ -1,142 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Common Attributes Module  ...................................... -->
-<!-- file: xhtml-attribs-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-attribs-1.mod,v 1.1 2010/07/29 13:42:46 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ENTITIES XHTML Common Attributes 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-attribs-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Common Attributes
-
-     This module declares many of the common attributes for the XHTML DTD.
-     %NS.decl.attrib; is declared in the XHTML Qname module.
-
-	 Note that this file was extended in XHTML Modularization 1.1 to 
-	 include declarations of "global" versions of the attribute collections.
-	 The global versions of the attributes are for use on elements in other 
-	 namespaces.  The global version of "common" includes the xmlns declaration
-	 for the prefixed version of the xhtml namespace.  If you are only using a
-	 specific attribute or an individual attribute collection, you must also
-	 include the XHTML.xmlns.attrib.prefixed PE on your elements.
--->
-
-<!ENTITY % id.attrib
-     "id           ID                       #IMPLIED"
->
-
-<![%XHTML.global.attrs.prefixed;[
-<!ENTITY % XHTML.global.id.attrib
-     "%XHTML.prefix;:id           ID        #IMPLIED"
->
-]]>
-
-<!ENTITY % class.attrib
-     "class        CDATA                 #IMPLIED"
->
-
-<![%XHTML.global.attrs.prefixed;[
-<!ENTITY % XHTML.global.class.attrib
-     "%XHTML.prefix;:class        CDATA                 #IMPLIED"
->
-]]>
-
-<!ENTITY % title.attrib
-     "title        %Text.datatype;          #IMPLIED"
->
-
-<![%XHTML.global.attrs.prefixed;[
-<!ENTITY % XHTML.global.title.attrib
-     "%XHTML.prefix;:title        %Text.datatype;          #IMPLIED"
->
-]]>
-
-<!ENTITY % Core.extra.attrib "" >
-
-<!ENTITY % Core.attrib
-     "%XHTML.xmlns.attrib;
-      %id.attrib;
-      %class.attrib;
-      %title.attrib;
-      xml:space    ( preserve )             #FIXED 'preserve'
-      %Core.extra.attrib;"
->
-
-<!ENTITY % XHTML.global.core.extra.attrib "" >
-
-<![%XHTML.global.attrs.prefixed;[
-
-<!ENTITY % XHTML.global.core.attrib
-     "%XHTML.global.id.attrib;
-      %XHTML.global.class.attrib;
-      %XHTML.global.title.attrib;
-      %XHTML.global.core.extra.attrib;"
->
-]]>
-
-<!ENTITY % XHTML.global.core.attrib "" >
-
-
-<!ENTITY % lang.attrib
-     "xml:lang     %LanguageCode.datatype;  #IMPLIED"
->
-
-<![%XHTML.bidi;[
-<!ENTITY % dir.attrib
-     "dir          ( ltr | rtl )            #IMPLIED"
->
-
-<!ENTITY % I18n.attrib
-     "%dir.attrib;
-      %lang.attrib;"
->
-
-<![%XHTML.global.attrs.prefixed;[
-<!ENTITY XHTML.global.i18n.attrib
-     "%XHTML.prefix;:dir          ( ltr | rtl )            #IMPLIED
-      %lang.attrib;"
->
-]]>
-<!ENTITY XHTML.global.i18n.attrib "" >
-
-]]>
-<!ENTITY % I18n.attrib
-     "%lang.attrib;"
->
-<!ENTITY % XHTML.global.i18n.attrib
-     "%lang.attrib;"
->
-
-<!ENTITY % Common.extra.attrib "" >
-<!ENTITY % XHTML.global.common.extra.attrib "" >
-
-<!-- intrinsic event attributes declared previously
--->
-<!ENTITY % Events.attrib "" >
-
-<!ENTITY % XHTML.global.events.attrib "" >
-
-<!ENTITY % Common.attrib
-     "%Core.attrib;
-      %I18n.attrib;
-      %Events.attrib;
-      %Common.extra.attrib;"
->
-
-<!ENTITY % XHTML.global.common.attrib
-     "%XHTML.xmlns.attrib.prefixed;
-      %XHTML.global.core.attrib;
-	  %XHTML.global.i18n.attrib;
-	  %XHTML.global.events.attrib;
-	  %XHTML.global.common.extra.attrib;"
->
-
-<!-- end of xhtml-attribs-1.mod -->

+ 0 - 53
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-base-1.mod

@@ -1,53 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Base Element Module  ........................................... -->
-<!-- file: xhtml-base-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-base-1.mod,v 1.1 2010/07/29 13:42:46 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Base Element 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-base-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Base element
-
-        base
-
-     This module declares the base element type and its attributes,
-     used to define a base URI against which relative URIs in the
-     document will be resolved.
-
-     Note that this module also redeclares the content model for
-     the head element to include the base element.
--->
-
-<!-- base: Document Base URI ........................... -->
-
-<!ENTITY % base.element  "INCLUDE" >
-<![%base.element;[
-<!ENTITY % base.content  "EMPTY" >
-<!ENTITY % base.qname  "base" >
-<!ELEMENT %base.qname;  %base.content; >
-<!-- end of base.element -->]]>
-
-<!ENTITY % base.attlist  "INCLUDE" >
-<![%base.attlist;[
-<!ATTLIST %base.qname;
-      %XHTML.xmlns.attrib;
-      href         %URI.datatype;           #REQUIRED
->
-<!-- end of base.attlist -->]]>
-
-<!ENTITY % head.content
-    "( %HeadOpts.mix;,
-     ( ( %title.qname;, %HeadOpts.mix;, ( %base.qname;, %HeadOpts.mix; )? )
-     | ( %base.qname;, %HeadOpts.mix;, ( %title.qname;, %HeadOpts.mix; ))))"
->
-
-<!-- end of xhtml-base-1.mod -->

+ 0 - 47
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-bdo-1.mod

@@ -1,47 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML BDO Element Module ............................................. -->
-<!-- file: xhtml-bdo-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-bdo-1.mod,v 1.1 2010/07/29 13:42:46 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML BDO Element 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-bdo-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Bidirectional Override (bdo) Element
-
-     This modules declares the element 'bdo', used to override the
-     Unicode bidirectional algorithm for selected fragments of text.
-
-     DEPENDENCIES:
-     Relies on the conditional section keyword %XHTML.bidi; declared
-     as "INCLUDE". Bidirectional text support includes both the bdo
-     element and the 'dir' attribute.
--->
-
-<!ENTITY % bdo.element  "INCLUDE" >
-<![%bdo.element;[
-<!ENTITY % bdo.content
-     "( #PCDATA | %Inline.mix; )*"
->
-<!ENTITY % bdo.qname  "bdo" >
-<!ELEMENT %bdo.qname;  %bdo.content; >
-<!-- end of bdo.element -->]]>
-
-<!ENTITY % bdo.attlist  "INCLUDE" >
-<![%bdo.attlist;[
-<!ATTLIST %bdo.qname;
-      %Core.attrib;
-	  %lang.attrib;
-      dir          ( ltr | rtl )            #REQUIRED
->
-]]>
-
-<!-- end of xhtml-bdo-1.mod -->

+ 0 - 164
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-blkphras-1.mod

@@ -1,164 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Block Phrasal Module  .......................................... -->
-<!-- file: xhtml-blkphras-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-blkphras-1.mod,v 1.1 2010/07/29 13:42:46 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Block Phrasal 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-blkphras-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Block Phrasal
-
-        address, blockquote, pre, h1, h2, h3, h4, h5, h6
-
-     This module declares the elements and their attributes used to
-     support block-level phrasal markup.
--->
-
-<!ENTITY % address.element  "INCLUDE" >
-<![%address.element;[
-<!ENTITY % address.content
-     "( #PCDATA | %Inline.mix; )*" >
-<!ENTITY % address.qname  "address" >
-<!ELEMENT %address.qname;  %address.content; >
-<!-- end of address.element -->]]>
-
-<!ENTITY % address.attlist  "INCLUDE" >
-<![%address.attlist;[
-<!ATTLIST %address.qname;
-      %Common.attrib;
->
-<!-- end of address.attlist -->]]>
-
-<!ENTITY % blockquote.element  "INCLUDE" >
-<![%blockquote.element;[
-<!ENTITY % blockquote.content
-     "( %Block.mix; )*"
->
-<!ENTITY % blockquote.qname  "blockquote" >
-<!ELEMENT %blockquote.qname;  %blockquote.content; >
-<!-- end of blockquote.element -->]]>
-
-<!ENTITY % blockquote.attlist  "INCLUDE" >
-<![%blockquote.attlist;[
-<!ATTLIST %blockquote.qname;
-      %Common.attrib;
-      cite         %URI.datatype;           #IMPLIED
->
-<!-- end of blockquote.attlist -->]]>
-
-<!ENTITY % pre.element  "INCLUDE" >
-<![%pre.element;[
-<!ENTITY % pre.content
-     "( #PCDATA
-      | %InlStruct.class;
-      %InlPhras.class;
-      | %tt.qname; | %i.qname; | %b.qname;
-      %I18n.class;
-      %Anchor.class;
-      | %map.qname;
-      %Misc.class;
-      %Inline.extra; )*"
->
-<!ENTITY % pre.qname  "pre" >
-<!ELEMENT %pre.qname;  %pre.content; >
-<!-- end of pre.element -->]]>
-
-<!ENTITY % pre.attlist  "INCLUDE" >
-<![%pre.attlist;[
-<!ATTLIST %pre.qname;
-      %Common.attrib;
->
-<!-- end of pre.attlist -->]]>
-
-<!-- ...................  Heading Elements  ................... -->
-
-<!ENTITY % Heading.content  "( #PCDATA | %Inline.mix; )*" >
-
-<!ENTITY % h1.element  "INCLUDE" >
-<![%h1.element;[
-<!ENTITY % h1.qname  "h1" >
-<!ELEMENT %h1.qname;  %Heading.content; >
-<!-- end of h1.element -->]]>
-
-<!ENTITY % h1.attlist  "INCLUDE" >
-<![%h1.attlist;[
-<!ATTLIST %h1.qname;
-      %Common.attrib;
->
-<!-- end of h1.attlist -->]]>
-
-<!ENTITY % h2.element  "INCLUDE" >
-<![%h2.element;[
-<!ENTITY % h2.qname  "h2" >
-<!ELEMENT %h2.qname;  %Heading.content; >
-<!-- end of h2.element -->]]>
-
-<!ENTITY % h2.attlist  "INCLUDE" >
-<![%h2.attlist;[
-<!ATTLIST %h2.qname;
-      %Common.attrib;
->
-<!-- end of h2.attlist -->]]>
-
-<!ENTITY % h3.element  "INCLUDE" >
-<![%h3.element;[
-<!ENTITY % h3.qname  "h3" >
-<!ELEMENT %h3.qname;  %Heading.content; >
-<!-- end of h3.element -->]]>
-
-<!ENTITY % h3.attlist  "INCLUDE" >
-<![%h3.attlist;[
-<!ATTLIST %h3.qname;
-      %Common.attrib;
->
-<!-- end of h3.attlist -->]]>
-
-<!ENTITY % h4.element  "INCLUDE" >
-<![%h4.element;[
-<!ENTITY % h4.qname  "h4" >
-<!ELEMENT %h4.qname;  %Heading.content; >
-<!-- end of h4.element -->]]>
-
-<!ENTITY % h4.attlist  "INCLUDE" >
-<![%h4.attlist;[
-<!ATTLIST %h4.qname;
-      %Common.attrib;
->
-<!-- end of h4.attlist -->]]>
-
-<!ENTITY % h5.element  "INCLUDE" >
-<![%h5.element;[
-<!ENTITY % h5.qname  "h5" >
-<!ELEMENT %h5.qname;  %Heading.content; >
-<!-- end of h5.element -->]]>
-
-<!ENTITY % h5.attlist  "INCLUDE" >
-<![%h5.attlist;[
-<!ATTLIST %h5.qname;
-      %Common.attrib;
->
-<!-- end of h5.attlist -->]]>
-
-<!ENTITY % h6.element  "INCLUDE" >
-<![%h6.element;[
-<!ENTITY % h6.qname  "h6" >
-<!ELEMENT %h6.qname;  %Heading.content; >
-<!-- end of h6.element -->]]>
-
-<!ENTITY % h6.attlist  "INCLUDE" >
-<![%h6.attlist;[
-<!ATTLIST %h6.qname;
-      %Common.attrib;
->
-<!-- end of h6.attlist -->]]>
-
-<!-- end of xhtml-blkphras-1.mod -->

+ 0 - 40
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-blkpres-1.mod

@@ -1,40 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Block Presentation Module  ..................................... -->
-<!-- file: xhtml-blkpres-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-blkpres-1.mod,v 1.1 2010/07/29 13:42:46 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Block Presentation 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-blkpres-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Block Presentational Elements
-
-        hr
-
-     This module declares the elements and their attributes used to
-     support block-level presentational markup.
--->
-
-<!ENTITY % hr.element  "INCLUDE" >
-<![%hr.element;[
-<!ENTITY % hr.content  "EMPTY" >
-<!ENTITY % hr.qname  "hr" >
-<!ELEMENT %hr.qname;  %hr.content; >
-<!-- end of hr.element -->]]>
-
-<!ENTITY % hr.attlist  "INCLUDE" >
-<![%hr.attlist;[
-<!ATTLIST %hr.qname;
-      %Common.attrib;
->
-<!-- end of hr.attlist -->]]>
-
-<!-- end of xhtml-blkpres-1.mod -->

+ 0 - 57
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-blkstruct-1.mod

@@ -1,57 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Block Structural Module  ....................................... -->
-<!-- file: xhtml-blkstruct-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-blkstruct-1.mod,v 1.1 2010/07/29 13:42:46 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Block Structural 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-blkstruct-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Block Structural
-
-        div, p
-
-     This module declares the elements and their attributes used to
-     support block-level structural markup.
--->
-
-<!ENTITY % div.element  "INCLUDE" >
-<![%div.element;[
-<!ENTITY % div.content
-     "( #PCDATA | %Flow.mix; )*"
->
-<!ENTITY % div.qname  "div" >
-<!ELEMENT %div.qname;  %div.content; >
-<!-- end of div.element -->]]>
-
-<!ENTITY % div.attlist  "INCLUDE" >
-<![%div.attlist;[
-<!ATTLIST %div.qname;
-      %Common.attrib;
->
-<!-- end of div.attlist -->]]>
-
-<!ENTITY % p.element  "INCLUDE" >
-<![%p.element;[
-<!ENTITY % p.content
-     "( #PCDATA | %Inline.mix; )*" >
-<!ENTITY % p.qname  "p" >
-<!ELEMENT %p.qname;  %p.content; >
-<!-- end of p.element -->]]>
-
-<!ENTITY % p.attlist  "INCLUDE" >
-<![%p.attlist;[
-<!ATTLIST %p.qname;
-      %Common.attrib;
->
-<!-- end of p.attlist -->]]>
-
-<!-- end of xhtml-blkstruct-1.mod -->

+ 0 - 39
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-charent-1.mod

@@ -1,39 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Character Entities Module  ......................................... -->
-<!-- file: xhtml-charent-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-charent-1.mod,v 1.1 2010/07/29 13:42:46 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ENTITIES XHTML Character Entities 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-charent-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Character Entities for XHTML
-
-     This module declares the set of character entities for XHTML,
-     including the Latin 1, Symbol and Special character collections.
--->
-
-<!ENTITY % xhtml-lat1
-    PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN"
-           "xhtml-lat1.ent" >
-%xhtml-lat1;
-
-<!ENTITY % xhtml-symbol
-    PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN"
-           "xhtml-symbol.ent" >
-%xhtml-symbol;
-
-<!ENTITY % xhtml-special
-    PUBLIC "-//W3C//ENTITIES Special for XHTML//EN"
-           "xhtml-special.ent" >
-%xhtml-special;
-
-<!-- end of xhtml-charent-1.mod -->

+ 0 - 114
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-csismap-1.mod

@@ -1,114 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Client-side Image Map Module  .................................. -->
-<!-- file: xhtml-csismap-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-csismap-1.mod,v 1.1 2010/07/29 13:42:47 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Client-side Image Maps 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-csismap-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Client-side Image Maps
-
-        area, map
-
-     This module declares elements and attributes to support client-side
-     image maps. This requires that the Image Module (or a module
-     declaring the img element type) be included in the DTD.
-
-     These can be placed in the same document or grouped in a
-     separate document, although the latter isn't widely supported
--->
-
-<!ENTITY % area.element  "INCLUDE" >
-<![%area.element;[
-<!ENTITY % area.content  "EMPTY" >
-<!ENTITY % area.qname  "area" >
-<!ELEMENT %area.qname;  %area.content; >
-<!-- end of area.element -->]]>
-
-<!ENTITY % Shape.datatype "( rect | circle | poly | default )">
-<!ENTITY % Coords.datatype "CDATA" >
-
-<!ENTITY % area.attlist  "INCLUDE" >
-<![%area.attlist;[
-<!ATTLIST %area.qname;
-      %Common.attrib;
-      href         %URI.datatype;           #IMPLIED
-      shape        %Shape.datatype;         'rect'
-      coords       %Coords.datatype;        #IMPLIED
-      nohref       ( nohref )               #IMPLIED
-      alt          %Text.datatype;          #REQUIRED
-      tabindex     %Number.datatype;        #IMPLIED
-      accesskey    %Character.datatype;     #IMPLIED
->
-<!-- end of area.attlist -->]]>
-
-<!-- modify anchor attribute definition list
-     to allow for client-side image maps
--->
-<!ATTLIST %a.qname;
-      shape        %Shape.datatype;         'rect'
-      coords       %Coords.datatype;        #IMPLIED
->
-
-<!-- modify img attribute definition list
-     to allow for client-side image maps
--->
-<!ATTLIST %img.qname;
-      usemap       %URIREF.datatype;        #IMPLIED
->
-
-<!-- modify form input attribute definition list
-     to allow for client-side image maps
--->
-<!ATTLIST %input.qname;
-      usemap       %URIREF.datatype;        #IMPLIED
->
-
-<!-- modify object attribute definition list
-     to allow for client-side image maps
--->
-<!ATTLIST %object.qname;
-      usemap       %URIREF.datatype;        #IMPLIED
->
-
-<!-- 'usemap' points to the 'id' attribute of a <map> element,
-     which must be in the same document; support for external
-     document maps was not widely supported in HTML and is
-     eliminated in XHTML.
-
-     It is considered an error for the element pointed to by
-     a usemap URIREF to occur in anything but a <map> element.
--->
-
-<!ENTITY % map.element  "INCLUDE" >
-<![%map.element;[
-<!ENTITY % map.content
-     "(( %Block.mix; ) | %area.qname; )+"
->
-<!ENTITY % map.qname  "map" >
-<!ELEMENT %map.qname;  %map.content; >
-<!-- end of map.element -->]]>
-
-<!ENTITY % map.attlist  "INCLUDE" >
-<![%map.attlist;[
-<!ATTLIST %map.qname;
-      %XHTML.xmlns.attrib;
-      id           ID                       #REQUIRED
-      %class.attrib;
-      %title.attrib;
-      %Core.extra.attrib;
-      %I18n.attrib;
-      %Events.attrib;
->
-<!-- end of map.attlist -->]]>
-
-<!-- end of xhtml-csismap-1.mod -->

+ 0 - 103
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-datatypes-1.mod

@@ -1,103 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Datatypes Module  .............................................. -->
-<!-- file: xhtml-datatypes-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-datatypes-1.mod,v 1.1 2010/07/29 13:42:47 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-datatypes-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Datatypes
-
-     defines containers for the following datatypes, many of
-     these imported from other specifications and standards.
--->
-
-<!-- Length defined for cellpadding/cellspacing -->
-
-<!-- nn for pixels or nn% for percentage length -->
-<!ENTITY % Length.datatype "CDATA" >
-
-<!-- space-separated list of link types -->
-<!ENTITY % LinkTypes.datatype "NMTOKENS" >
-
-<!-- single or comma-separated list of media descriptors -->
-<!ENTITY % MediaDesc.datatype "CDATA" >
-
-<!-- pixel, percentage, or relative -->
-<!ENTITY % MultiLength.datatype "CDATA" >
-
-<!-- one or more digits (NUMBER) -->
-<!ENTITY % Number.datatype "CDATA" >
-
-<!-- integer representing length in pixels -->
-<!ENTITY % Pixels.datatype "CDATA" >
-
-<!-- script expression -->
-<!ENTITY % Script.datatype "CDATA" >
-
-<!-- textual content -->
-<!ENTITY % Text.datatype "CDATA" >
-
-<!-- Placeholder Compact URI-related types -->
-<!ENTITY % CURIE.datatype "CDATA" >
-<!ENTITY % CURIEs.datatype "CDATA" >
-<!ENTITY % SafeCURIE.datatype "CDATA" >
-<!ENTITY % SafeCURIEs.datatype "CDATA" >
-<!ENTITY % URIorSafeCURIE.datatype "CDATA" >
-<!ENTITY % URIorSafeCURIEs.datatype "CDATA" >
-
-<!-- Imported Datatypes ................................ -->
-
-<!-- a single character from [ISO10646] -->
-<!ENTITY % Character.datatype "CDATA" >
-
-<!-- a character encoding, as per [RFC2045] -->
-<!ENTITY % Charset.datatype "CDATA" >
-
-<!-- a space separated list of character encodings, as per [RFC2045] -->
-<!ENTITY % Charsets.datatype "CDATA" >
-
-<!-- Color specification using color name or sRGB (#RRGGBB) values -->
-<!ENTITY % Color.datatype "CDATA" >
-
-<!-- media type, as per [RFC2045] -->
-<!ENTITY % ContentType.datatype "CDATA" >
-
-<!-- comma-separated list of media types, as per [RFC2045] -->
-<!ENTITY % ContentTypes.datatype "CDATA" >
-
-<!-- date and time information. ISO date format -->
-<!ENTITY % Datetime.datatype "CDATA" >
-
-<!-- formal public identifier, as per [ISO8879] -->
-<!ENTITY % FPI.datatype "CDATA" >
-
-<!-- a language code, as per [RFC3066] or its successor -->
-<!ENTITY % LanguageCode.datatype "CDATA" >
-
-<!-- a comma separated list of language code ranges -->
-<!ENTITY % LanguageCodes.datatype "CDATA" >
-
-<!-- a qualified name , as per [XMLNS] or its successor -->
-<!ENTITY % QName.datatype "CDATA" >
-<!ENTITY % QNames.datatype "CDATA" >
-
-<!-- a Uniform Resource Identifier, see [URI] -->
-<!ENTITY % URI.datatype "CDATA" >
-
-<!-- a space-separated list of Uniform Resource Identifiers, see [URI] -->
-<!ENTITY % URIs.datatype "CDATA" >
-
-<!-- a relative URI reference consisting of an initial '#' and a fragment ID -->
-<!ENTITY % URIREF.datatype "CDATA" >
-
-<!-- end of xhtml-datatypes-1.mod -->

+ 0 - 66
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-edit-1.mod

@@ -1,66 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Editing Elements Module  ....................................... -->
-<!-- file: xhtml-edit-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-edit-1.mod,v 1.1 2010/07/29 13:42:47 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Editing Markup 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-edit-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Editing Elements
-
-        ins, del
-
-     This module declares element types and attributes used to indicate
-     inserted and deleted content while editing a document.
--->
-
-<!-- ins: Inserted Text  ............................... -->
-
-<!ENTITY % ins.element  "INCLUDE" >
-<![%ins.element;[
-<!ENTITY % ins.content
-     "( #PCDATA | %Flow.mix; )*"
->
-<!ENTITY % ins.qname  "ins" >
-<!ELEMENT %ins.qname;  %ins.content; >
-<!-- end of ins.element -->]]>
-
-<!ENTITY % ins.attlist  "INCLUDE" >
-<![%ins.attlist;[
-<!ATTLIST %ins.qname;
-      %Common.attrib;
-      cite         %URI.datatype;           #IMPLIED
-      datetime     %Datetime.datatype;      #IMPLIED
->
-<!-- end of ins.attlist -->]]>
-
-<!-- del: Deleted Text  ................................ -->
-
-<!ENTITY % del.element  "INCLUDE" >
-<![%del.element;[
-<!ENTITY % del.content
-     "( #PCDATA | %Flow.mix; )*"
->
-<!ENTITY % del.qname  "del" >
-<!ELEMENT %del.qname;  %del.content; >
-<!-- end of del.element -->]]>
-
-<!ENTITY % del.attlist  "INCLUDE" >
-<![%del.attlist;[
-<!ATTLIST %del.qname;
-      %Common.attrib;
-      cite         %URI.datatype;           #IMPLIED
-      datetime     %Datetime.datatype;      #IMPLIED
->
-<!-- end of del.attlist -->]]>
-
-<!-- end of xhtml-edit-1.mod -->

+ 0 - 135
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-events-1.mod

@@ -1,135 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Intrinsic Events Module  ....................................... -->
-<!-- file: xhtml-events-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-events-1.mod,v 1.1 2010/07/29 13:42:47 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ENTITIES XHTML Intrinsic Events 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-events-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Intrinsic Event Attributes
-
-     These are the event attributes defined in HTML 4,
-     Section 18.2.3 "Intrinsic Events". This module must be
-     instantiated prior to the Attributes Module but after
-     the Datatype Module in the Modular Framework module.
-
-    "Note: Authors of HTML documents are advised that changes
-     are likely to occur in the realm of intrinsic events
-     (e.g., how scripts are bound to events). Research in
-     this realm is carried on by members of the W3C Document
-     Object Model Working Group (see the W3C Web site at
-     http://www.w3.org/ for more information)."
--->
-<!-- NOTE: Because the ATTLIST declarations in this module occur
-     before their respective ELEMENT declarations in other
-     modules, there may be a dependency on this module that
-     should be considered if any of the parameter entities used
-     for element type names (eg., %a.qname;) are redeclared.
--->
-
-<!ENTITY % Events.attrib
-     "onclick      %Script.datatype;        #IMPLIED
-      ondblclick   %Script.datatype;        #IMPLIED
-      onmousedown  %Script.datatype;        #IMPLIED
-      onmouseup    %Script.datatype;        #IMPLIED
-      onmouseover  %Script.datatype;        #IMPLIED
-      onmousemove  %Script.datatype;        #IMPLIED
-      onmouseout   %Script.datatype;        #IMPLIED
-      onkeypress   %Script.datatype;        #IMPLIED
-      onkeydown    %Script.datatype;        #IMPLIED
-      onkeyup      %Script.datatype;        #IMPLIED"
->
-
-<![%XHTML.global.attrs.prefixed;[
-<!ENTITY % XHTML.global.events.attrib
-     "%XHTML.prefix;:onclick      %Script.datatype;        #IMPLIED
-      %XHTML.prefix;:ondblclick   %Script.datatype;        #IMPLIED
-      %XHTML.prefix;:onmousedown  %Script.datatype;        #IMPLIED
-      %XHTML.prefix;:onmouseup    %Script.datatype;        #IMPLIED
-      %XHTML.prefix;:onmouseover  %Script.datatype;        #IMPLIED
-      %XHTML.prefix;:onmousemove  %Script.datatype;        #IMPLIED
-      %XHTML.prefix;:onmouseout   %Script.datatype;        #IMPLIED
-      %XHTML.prefix;:onkeypress   %Script.datatype;        #IMPLIED
-      %XHTML.prefix;:onkeydown    %Script.datatype;        #IMPLIED
-      %XHTML.prefix;:onkeyup      %Script.datatype;        #IMPLIED"
->
-]]>
-
-<!-- additional attributes on anchor element
--->
-<!ATTLIST %a.qname;
-     onfocus      %Script.datatype;         #IMPLIED
-     onblur       %Script.datatype;         #IMPLIED
->
-
-<!-- additional attributes on form element
--->
-<!ATTLIST %form.qname;
-      onsubmit     %Script.datatype;        #IMPLIED
-      onreset      %Script.datatype;        #IMPLIED
->
-
-<!-- additional attributes on label element
--->
-<!ATTLIST %label.qname;
-      onfocus      %Script.datatype;        #IMPLIED
-      onblur       %Script.datatype;        #IMPLIED
->
-
-<!-- additional attributes on input element
--->
-<!ATTLIST %input.qname;
-      onfocus      %Script.datatype;        #IMPLIED
-      onblur       %Script.datatype;        #IMPLIED
-      onselect     %Script.datatype;        #IMPLIED
-      onchange     %Script.datatype;        #IMPLIED
->
-
-<!-- additional attributes on select element
--->
-<!ATTLIST %select.qname;
-      onfocus      %Script.datatype;        #IMPLIED
-      onblur       %Script.datatype;        #IMPLIED
-      onchange     %Script.datatype;        #IMPLIED
->
-
-<!-- additional attributes on textarea element
--->
-<!ATTLIST %textarea.qname;
-      onfocus      %Script.datatype;        #IMPLIED
-      onblur       %Script.datatype;        #IMPLIED
-      onselect     %Script.datatype;        #IMPLIED
-      onchange     %Script.datatype;        #IMPLIED
->
-
-<!-- additional attributes on button element
--->
-<!ATTLIST %button.qname;
-      onfocus      %Script.datatype;        #IMPLIED
-      onblur       %Script.datatype;        #IMPLIED
->
-
-<!-- additional attributes on body element
--->
-<!ATTLIST %body.qname;
-      onload       %Script.datatype;        #IMPLIED
-      onunload     %Script.datatype;        #IMPLIED
->
-
-<!-- additional attributes on area element
--->
-<!ATTLIST %area.qname;
-      onfocus      %Script.datatype;        #IMPLIED
-      onblur       %Script.datatype;        #IMPLIED
->
-
-<!-- end of xhtml-events-1.mod -->

+ 0 - 292
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-form-1.mod

@@ -1,292 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Forms Module  .................................................. -->
-<!-- file: xhtml-form-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-form-1.mod,v 1.1 2010/07/29 13:42:47 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Forms 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-form-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Forms
-
-        form, label, input, select, optgroup, option,
-        textarea, fieldset, legend, button
-
-     This module declares markup to provide support for online
-     forms, based on the features found in HTML 4 forms.
--->
-
-<!-- declare qualified element type names:
--->
-<!ENTITY % form.qname  "form" >
-<!ENTITY % label.qname  "label" >
-<!ENTITY % input.qname  "input" >
-<!ENTITY % select.qname  "select" >
-<!ENTITY % optgroup.qname  "optgroup" >
-<!ENTITY % option.qname  "option" >
-<!ENTITY % textarea.qname  "textarea" >
-<!ENTITY % fieldset.qname  "fieldset" >
-<!ENTITY % legend.qname  "legend" >
-<!ENTITY % button.qname  "button" >
-
-<!-- %BlkNoForm.mix; includes all non-form block elements,
-     plus %Misc.class;
--->
-<!ENTITY % BlkNoForm.mix
-     "%Heading.class;
-      | %List.class;
-      | %BlkStruct.class;
-      %BlkPhras.class;
-      %BlkPres.class;
-      %Table.class;
-      %Block.extra;
-      %Misc.class;"
->
-
-<!-- form: Form Element ................................ -->
-
-<!ENTITY % form.element  "INCLUDE" >
-<![%form.element;[
-<!ENTITY % form.content
-     "( %BlkNoForm.mix;
-      | %fieldset.qname; )+"
->
-<!ELEMENT %form.qname;  %form.content; >
-<!-- end of form.element -->]]>
-
-<!ENTITY % form.attlist  "INCLUDE" >
-<![%form.attlist;[
-<!ATTLIST %form.qname;
-      %Common.attrib;
-      action       %URI.datatype;           #REQUIRED
-      method       ( get | post )           'get'
-      name         CDATA                    #IMPLIED
-      enctype      %ContentType.datatype;   'application/x-www-form-urlencoded'
-      accept-charset %Charsets.datatype;    #IMPLIED
-      accept       %ContentTypes.datatype;  #IMPLIED
->
-<!-- end of form.attlist -->]]>
-
-<!-- label: Form Field Label Text ...................... -->
-
-<!-- Each label must not contain more than ONE field
--->
-
-<!ENTITY % label.element  "INCLUDE" >
-<![%label.element;[
-<!ENTITY % label.content
-     "( #PCDATA
-      | %input.qname; | %select.qname; | %textarea.qname; | %button.qname;
-      | %InlStruct.class;
-      %InlPhras.class;
-      %I18n.class;
-      %InlPres.class;
-      %Anchor.class;
-      %InlSpecial.class;
-      %Inline.extra;
-      %Misc.class; )*"
->
-<!ELEMENT %label.qname;  %label.content; >
-<!-- end of label.element -->]]>
-
-<!ENTITY % label.attlist  "INCLUDE" >
-<![%label.attlist;[
-<!ATTLIST %label.qname;
-      %Common.attrib;
-      for          IDREF                    #IMPLIED
-      accesskey    %Character.datatype;     #IMPLIED
->
-<!-- end of label.attlist -->]]>
-
-<!-- input: Form Control ............................... -->
-
-<!ENTITY % input.element  "INCLUDE" >
-<![%input.element;[
-<!ENTITY % input.content  "EMPTY" >
-<!ELEMENT %input.qname;  %input.content; >
-<!-- end of input.element -->]]>
-
-<!ENTITY % input.attlist  "INCLUDE" >
-<![%input.attlist;[
-<!ENTITY % InputType.class
-     "( text | password | checkbox | radio | submit
-      | reset | file | hidden | image | button )"
->
-<!-- attribute 'name' required for all but submit & reset
--->
-<!ATTLIST %input.qname;
-      %Common.attrib;
-      type         %InputType.class;        'text'
-      name         CDATA                    #IMPLIED
-      value        CDATA                    #IMPLIED
-      checked      ( checked )              #IMPLIED
-      disabled     ( disabled )             #IMPLIED
-      readonly     ( readonly )             #IMPLIED
-      size         %Number.datatype;        #IMPLIED
-      maxlength    %Number.datatype;        #IMPLIED
-      src          %URI.datatype;           #IMPLIED
-      alt          %Text.datatype;          #IMPLIED
-      tabindex     %Number.datatype;        #IMPLIED
-      accesskey    %Character.datatype;     #IMPLIED
-      accept       %ContentTypes.datatype;  #IMPLIED
->
-<!-- end of input.attlist -->]]>
-
-<!-- select: Option Selector ........................... -->
-
-<!ENTITY % select.element  "INCLUDE" >
-<![%select.element;[
-<!ENTITY % select.content
-     "( %optgroup.qname; | %option.qname; )+"
->
-<!ELEMENT %select.qname;  %select.content; >
-<!-- end of select.element -->]]>
-
-<!ENTITY % select.attlist  "INCLUDE" >
-<![%select.attlist;[
-<!ATTLIST %select.qname;
-      %Common.attrib;
-      name         CDATA                    #IMPLIED
-      size         %Number.datatype;        #IMPLIED
-      multiple     ( multiple )             #IMPLIED
-      disabled     ( disabled )             #IMPLIED
-      tabindex     %Number.datatype;        #IMPLIED
->
-<!-- end of select.attlist -->]]>
-
-<!-- optgroup: Option Group ............................ -->
-
-<!ENTITY % optgroup.element  "INCLUDE" >
-<![%optgroup.element;[
-<!ENTITY % optgroup.content  "( %option.qname; )+" >
-<!ELEMENT %optgroup.qname;  %optgroup.content; >
-<!-- end of optgroup.element -->]]>
-
-<!ENTITY % optgroup.attlist  "INCLUDE" >
-<![%optgroup.attlist;[
-<!ATTLIST %optgroup.qname;
-      %Common.attrib;
-      disabled     ( disabled )             #IMPLIED
-      label        %Text.datatype;          #REQUIRED
->
-<!-- end of optgroup.attlist -->]]>
-
-<!-- option: Selectable Choice ......................... -->
-
-<!ENTITY % option.element  "INCLUDE" >
-<![%option.element;[
-<!ENTITY % option.content  "( #PCDATA )" >
-<!ELEMENT %option.qname;  %option.content; >
-<!-- end of option.element -->]]>
-
-<!ENTITY % option.attlist  "INCLUDE" >
-<![%option.attlist;[
-<!ATTLIST %option.qname;
-      %Common.attrib;
-      selected     ( selected )             #IMPLIED
-      disabled     ( disabled )             #IMPLIED
-      label        %Text.datatype;          #IMPLIED
-      value        CDATA                    #IMPLIED
->
-<!-- end of option.attlist -->]]>
-
-<!-- textarea: Multi-Line Text Field ................... -->
-
-<!ENTITY % textarea.element  "INCLUDE" >
-<![%textarea.element;[
-<!ENTITY % textarea.content  "( #PCDATA )" >
-<!ELEMENT %textarea.qname;  %textarea.content; >
-<!-- end of textarea.element -->]]>
-
-<!ENTITY % textarea.attlist  "INCLUDE" >
-<![%textarea.attlist;[
-<!ATTLIST %textarea.qname;
-      %Common.attrib;
-      name         CDATA                    #IMPLIED
-      rows         %Number.datatype;        #REQUIRED
-      cols         %Number.datatype;        #REQUIRED
-      disabled     ( disabled )             #IMPLIED
-      readonly     ( readonly )             #IMPLIED
-      tabindex     %Number.datatype;        #IMPLIED
-      accesskey    %Character.datatype;     #IMPLIED
->
-<!-- end of textarea.attlist -->]]>
-
-<!-- fieldset: Form Control Group ...................... -->
-
-<!-- #PCDATA is to solve the mixed content problem,
-     per specification only whitespace is allowed
--->
-
-<!ENTITY % fieldset.element  "INCLUDE" >
-<![%fieldset.element;[
-<!ENTITY % fieldset.content
-     "( #PCDATA | %legend.qname; | %Flow.mix; )*"
->
-<!ELEMENT %fieldset.qname;  %fieldset.content; >
-<!-- end of fieldset.element -->]]>
-
-<!ENTITY % fieldset.attlist  "INCLUDE" >
-<![%fieldset.attlist;[
-<!ATTLIST %fieldset.qname;
-      %Common.attrib;
->
-<!-- end of fieldset.attlist -->]]>
-
-<!-- legend: Fieldset Legend ........................... -->
-
-<!ENTITY % legend.element  "INCLUDE" >
-<![%legend.element;[
-<!ENTITY % legend.content
-     "( #PCDATA | %Inline.mix; )*"
->
-<!ELEMENT %legend.qname;  %legend.content; >
-<!-- end of legend.element -->]]>
-
-<!ENTITY % legend.attlist  "INCLUDE" >
-<![%legend.attlist;[
-<!ATTLIST %legend.qname;
-      %Common.attrib;
-      accesskey    %Character.datatype;     #IMPLIED
->
-<!-- end of legend.attlist -->]]>
-
-<!-- button: Push Button ............................... -->
-
-<!ENTITY % button.element  "INCLUDE" >
-<![%button.element;[
-<!ENTITY % button.content
-     "( #PCDATA
-      | %BlkNoForm.mix;
-      | %InlStruct.class;
-      %InlPhras.class;
-      %InlPres.class;
-      %I18n.class;
-      %InlSpecial.class;
-      %Inline.extra; )*"
->
-<!ELEMENT %button.qname;  %button.content; >
-<!-- end of button.element -->]]>
-
-<!ENTITY % button.attlist  "INCLUDE" >
-<![%button.attlist;[
-<!ATTLIST %button.qname;
-      %Common.attrib;
-      name         CDATA                    #IMPLIED
-      value        CDATA                    #IMPLIED
-      type         ( button | submit | reset ) 'submit'
-      disabled     ( disabled )             #IMPLIED
-      tabindex     %Number.datatype;        #IMPLIED
-      accesskey    %Character.datatype;     #IMPLIED
->
-<!-- end of button.attlist -->]]>
-
-<!-- end of xhtml-form-1.mod -->

+ 0 - 97
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-framework-1.mod

@@ -1,97 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Modular Framework Module  ...................................... -->
-<!-- file: xhtml-framework-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-framework-1.mod,v 1.1 2010/07/29 13:42:47 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ENTITIES XHTML Modular Framework 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-framework-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Modular Framework
-
-     This required module instantiates the modules needed
-     to support the XHTML modularization model, including:
-
-        +  datatypes
-        +  namespace-qualified names
-        +  common attributes
-        +  document model
-        +  character entities
-
-     The Intrinsic Events module is ignored by default but
-     occurs in this module because it must be instantiated
-     prior to Attributes but after Datatypes.
--->
-
-<!ENTITY % xhtml-arch.module "IGNORE" >
-<![%xhtml-arch.module;[
-<!ENTITY % xhtml-arch.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Base Architecture 1.0//EN"
-            "xhtml-arch-1.mod" >
-%xhtml-arch.mod;]]>
-
-<!ENTITY % xhtml-notations.module "IGNORE" >
-<![%xhtml-notations.module;[
-<!ENTITY % xhtml-notations.mod
-     PUBLIC "-//W3C//NOTATIONS XHTML Notations 1.0//EN"
-            "xhtml-notations-1.mod" >
-%xhtml-notations.mod;]]>
-
-<!ENTITY % xhtml-datatypes.module "INCLUDE" >
-<![%xhtml-datatypes.module;[
-<!ENTITY % xhtml-datatypes.mod
-     PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN"
-            "xhtml-datatypes-1.mod" >
-%xhtml-datatypes.mod;]]>
-
-<!-- placeholder for XLink support module -->
-<!ENTITY % xhtml-xlink.mod "" >
-%xhtml-xlink.mod;
-
-<!ENTITY % xhtml-qname.module "INCLUDE" >
-<![%xhtml-qname.module;[
-<!ENTITY % xhtml-qname.mod
-     PUBLIC "-//W3C//ENTITIES XHTML Qualified Names 1.0//EN"
-            "xhtml-qname-1.mod" >
-%xhtml-qname.mod;]]>
-
-<!ENTITY % xhtml-events.module "IGNORE" >
-<![%xhtml-events.module;[
-<!ENTITY % xhtml-events.mod
-     PUBLIC "-//W3C//ENTITIES XHTML Intrinsic Events 1.0//EN"
-            "xhtml-events-1.mod" >
-%xhtml-events.mod;]]>
-
-<!ENTITY % xhtml-attribs.module "INCLUDE" >
-<![%xhtml-attribs.module;[
-<!ENTITY % xhtml-attribs.mod
-     PUBLIC "-//W3C//ENTITIES XHTML Common Attributes 1.0//EN"
-            "xhtml-attribs-1.mod" >
-%xhtml-attribs.mod;]]>
-
-<!-- placeholder for content model redeclarations -->
-<!ENTITY % xhtml-model.redecl "" >
-%xhtml-model.redecl;
-
-<!ENTITY % xhtml-model.module "INCLUDE" >
-<![%xhtml-model.module;[
-<!-- instantiate the Document Model module declared in the DTD driver
--->
-%xhtml-model.mod;]]>
-
-<!ENTITY % xhtml-charent.module "INCLUDE" >
-<![%xhtml-charent.module;[
-<!ENTITY % xhtml-charent.mod
-     PUBLIC "-//W3C//ENTITIES XHTML Character Entities 1.0//EN"
-            "xhtml-charent-1.mod" >
-%xhtml-charent.mod;]]>
-
-<!-- end of xhtml-framework-1.mod -->

+ 0 - 54
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-hypertext-1.mod

@@ -1,54 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Hypertext Module  .............................................. -->
-<!-- file: xhtml-hypertext-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-hypertext-1.mod,v 1.1 2010/07/29 13:42:47 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Hypertext 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-hypertext-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Hypertext
-
-        a
-
-     This module declares the anchor ('a') element type, which
-     defines the source of a hypertext link. The destination
-     (or link 'target') is identified via its 'id' attribute
-     rather than the 'name' attribute as was used in HTML.
--->
-
-<!-- ............  Anchor Element  ............ -->
-
-<!ENTITY % a.element  "INCLUDE" >
-<![%a.element;[
-<!ENTITY % a.content
-     "( #PCDATA | %InlNoAnchor.mix; )*"
->
-<!ENTITY % a.qname  "a" >
-<!ELEMENT %a.qname;  %a.content; >
-<!-- end of a.element -->]]>
-
-<!ENTITY % a.attlist  "INCLUDE" >
-<![%a.attlist;[
-<!ATTLIST %a.qname;
-      %Common.attrib;
-      href         %URI.datatype;           #IMPLIED
-      charset      %Charset.datatype;       #IMPLIED
-      type         %ContentType.datatype;   #IMPLIED
-      hreflang     %LanguageCode.datatype;  #IMPLIED
-      rel          %LinkTypes.datatype;     #IMPLIED
-      rev          %LinkTypes.datatype;     #IMPLIED
-      accesskey    %Character.datatype;     #IMPLIED
-      tabindex     %Number.datatype;        #IMPLIED
->
-<!-- end of a.attlist -->]]>
-
-<!-- end of xhtml-hypertext-1.mod -->

+ 0 - 51
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-image-1.mod

@@ -1,51 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Images Module  ................................................. -->
-<!-- file: xhtml-image-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Rovision: $Id: xhtml-image-1.mod,v 1.1 2010/07/29 13:42:47 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Images 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-image-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Images
-
-        img
-
-     This module provides markup to support basic image embedding.
--->
-
-<!-- To avoid problems with text-only UAs as well as to make
-     image content understandable and navigable to users of
-     non-visual UAs, you need to provide a description with
-     the 'alt' attribute, and avoid server-side image maps.
--->
-
-<!ENTITY % img.element  "INCLUDE" >
-<![%img.element;[
-<!ENTITY % img.content  "EMPTY" >
-<!ENTITY % img.qname  "img" >
-<!ELEMENT %img.qname;  %img.content; >
-<!-- end of img.element -->]]>
-
-<!ENTITY % img.attlist  "INCLUDE" >
-<![%img.attlist;[
-<!ATTLIST %img.qname;
-      %Common.attrib;
-      src          %URI.datatype;           #REQUIRED
-      alt          %Text.datatype;          #REQUIRED
-      longdesc     %URI.datatype;           #IMPLIED
-      name         CDATA                    #IMPLIED
-      height       %Length.datatype;        #IMPLIED
-      width        %Length.datatype;        #IMPLIED
->
-<!-- end of img.attlist -->]]>
-
-<!-- end of xhtml-image-1.mod -->

+ 0 - 203
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-inlphras-1.mod

@@ -1,203 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Inline Phrasal Module  ......................................... -->
-<!-- file: xhtml-inlphras-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-inlphras-1.mod,v 1.1 2010/07/29 13:42:47 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Inline Phrasal 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-inlphras-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Inline Phrasal
-
-        abbr, acronym, cite, code, dfn, em, kbd, q, samp, strong, var
-
-     This module declares the elements and their attributes used to
-     support inline-level phrasal markup.
--->
-
-<!ENTITY % abbr.element  "INCLUDE" >
-<![%abbr.element;[
-<!ENTITY % abbr.content
-     "( #PCDATA | %Inline.mix; )*"
->
-<!ENTITY % abbr.qname  "abbr" >
-<!ELEMENT %abbr.qname;  %abbr.content; >
-<!-- end of abbr.element -->]]>
-
-<!ENTITY % abbr.attlist  "INCLUDE" >
-<![%abbr.attlist;[
-<!ATTLIST %abbr.qname;
-      %Common.attrib;
->
-<!-- end of abbr.attlist -->]]>
-
-<!ENTITY % acronym.element  "INCLUDE" >
-<![%acronym.element;[
-<!ENTITY % acronym.content
-     "( #PCDATA | %Inline.mix; )*"
->
-<!ENTITY % acronym.qname  "acronym" >
-<!ELEMENT %acronym.qname;  %acronym.content; >
-<!-- end of acronym.element -->]]>
-
-<!ENTITY % acronym.attlist  "INCLUDE" >
-<![%acronym.attlist;[
-<!ATTLIST %acronym.qname;
-      %Common.attrib;
->
-<!-- end of acronym.attlist -->]]>
-
-<!ENTITY % cite.element  "INCLUDE" >
-<![%cite.element;[
-<!ENTITY % cite.content
-     "( #PCDATA | %Inline.mix; )*"
->
-<!ENTITY % cite.qname  "cite" >
-<!ELEMENT %cite.qname;  %cite.content; >
-<!-- end of cite.element -->]]>
-
-<!ENTITY % cite.attlist  "INCLUDE" >
-<![%cite.attlist;[
-<!ATTLIST %cite.qname;
-      %Common.attrib;
->
-<!-- end of cite.attlist -->]]>
-
-<!ENTITY % code.element  "INCLUDE" >
-<![%code.element;[
-<!ENTITY % code.content
-     "( #PCDATA | %Inline.mix; )*"
->
-<!ENTITY % code.qname  "code" >
-<!ELEMENT %code.qname;  %code.content; >
-<!-- end of code.element -->]]>
-
-<!ENTITY % code.attlist  "INCLUDE" >
-<![%code.attlist;[
-<!ATTLIST %code.qname;
-      %Common.attrib;
->
-<!-- end of code.attlist -->]]>
-
-<!ENTITY % dfn.element  "INCLUDE" >
-<![%dfn.element;[
-<!ENTITY % dfn.content
-     "( #PCDATA | %Inline.mix; )*"
->
-<!ENTITY % dfn.qname  "dfn" >
-<!ELEMENT %dfn.qname;  %dfn.content; >
-<!-- end of dfn.element -->]]>
-
-<!ENTITY % dfn.attlist  "INCLUDE" >
-<![%dfn.attlist;[
-<!ATTLIST %dfn.qname;
-      %Common.attrib;
->
-<!-- end of dfn.attlist -->]]>
-
-<!ENTITY % em.element  "INCLUDE" >
-<![%em.element;[
-<!ENTITY % em.content
-     "( #PCDATA | %Inline.mix; )*"
->
-<!ENTITY % em.qname  "em" >
-<!ELEMENT %em.qname;  %em.content; >
-<!-- end of em.element -->]]>
-
-<!ENTITY % em.attlist  "INCLUDE" >
-<![%em.attlist;[
-<!ATTLIST %em.qname;
-      %Common.attrib;
->
-<!-- end of em.attlist -->]]>
-
-<!ENTITY % kbd.element  "INCLUDE" >
-<![%kbd.element;[
-<!ENTITY % kbd.content
-     "( #PCDATA | %Inline.mix; )*"
->
-<!ENTITY % kbd.qname  "kbd" >
-<!ELEMENT %kbd.qname;  %kbd.content; >
-<!-- end of kbd.element -->]]>
-
-<!ENTITY % kbd.attlist  "INCLUDE" >
-<![%kbd.attlist;[
-<!ATTLIST %kbd.qname;
-      %Common.attrib;
->
-<!-- end of kbd.attlist -->]]>
-
-<!ENTITY % q.element  "INCLUDE" >
-<![%q.element;[
-<!ENTITY % q.content
-     "( #PCDATA | %Inline.mix; )*"
->
-<!ENTITY % q.qname  "q" >
-<!ELEMENT %q.qname;  %q.content; >
-<!-- end of q.element -->]]>
-
-<!ENTITY % q.attlist  "INCLUDE" >
-<![%q.attlist;[
-<!ATTLIST %q.qname;
-      %Common.attrib;
-      cite         %URI.datatype;           #IMPLIED
->
-<!-- end of q.attlist -->]]>
-
-<!ENTITY % samp.element  "INCLUDE" >
-<![%samp.element;[
-<!ENTITY % samp.content
-     "( #PCDATA | %Inline.mix; )*"
->
-<!ENTITY % samp.qname  "samp" >
-<!ELEMENT %samp.qname;  %samp.content; >
-<!-- end of samp.element -->]]>
-
-<!ENTITY % samp.attlist  "INCLUDE" >
-<![%samp.attlist;[
-<!ATTLIST %samp.qname;
-      %Common.attrib;
->
-<!-- end of samp.attlist -->]]>
-
-<!ENTITY % strong.element  "INCLUDE" >
-<![%strong.element;[
-<!ENTITY % strong.content
-     "( #PCDATA | %Inline.mix; )*"
->
-<!ENTITY % strong.qname  "strong" >
-<!ELEMENT %strong.qname;  %strong.content; >
-<!-- end of strong.element -->]]>
-
-<!ENTITY % strong.attlist  "INCLUDE" >
-<![%strong.attlist;[
-<!ATTLIST %strong.qname;
-      %Common.attrib;
->
-<!-- end of strong.attlist -->]]>
-
-<!ENTITY % var.element  "INCLUDE" >
-<![%var.element;[
-<!ENTITY % var.content
-     "( #PCDATA | %Inline.mix; )*"
->
-<!ENTITY % var.qname  "var" >
-<!ELEMENT %var.qname;  %var.content; >
-<!-- end of var.element -->]]>
-
-<!ENTITY % var.attlist  "INCLUDE" >
-<![%var.attlist;[
-<!ATTLIST %var.qname;
-      %Common.attrib;
->
-<!-- end of var.attlist -->]]>
-
-<!-- end of xhtml-inlphras-1.mod -->

+ 0 - 138
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-inlpres-1.mod

@@ -1,138 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Inline Presentation Module  .................................... -->
-<!-- file: xhtml-inlpres-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-inlpres-1.mod,v 1.1 2010/07/29 13:42:47 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Inline Presentation 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-inlpres-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Inline Presentational Elements
-
-        b, big, i, small, sub, sup, tt
-
-     This module declares the elements and their attributes used to
-     support inline-level presentational markup.
--->
-
-<!ENTITY % b.element  "INCLUDE" >
-<![%b.element;[
-<!ENTITY % b.content
-     "( #PCDATA | %Inline.mix; )*"
->
-<!ENTITY % b.qname  "b" >
-<!ELEMENT %b.qname;  %b.content; >
-<!-- end of b.element -->]]>
-
-<!ENTITY % b.attlist  "INCLUDE" >
-<![%b.attlist;[
-<!ATTLIST %b.qname;
-      %Common.attrib;
->
-<!-- end of b.attlist -->]]>
-
-<!ENTITY % big.element  "INCLUDE" >
-<![%big.element;[
-<!ENTITY % big.content
-     "( #PCDATA | %Inline.mix; )*"
->
-<!ENTITY % big.qname  "big" >
-<!ELEMENT %big.qname;  %big.content; >
-<!-- end of big.element -->]]>
-
-<!ENTITY % big.attlist  "INCLUDE" >
-<![%big.attlist;[
-<!ATTLIST %big.qname;
-      %Common.attrib;
->
-<!-- end of big.attlist -->]]>
-
-<!ENTITY % i.element  "INCLUDE" >
-<![%i.element;[
-<!ENTITY % i.content
-     "( #PCDATA | %Inline.mix; )*"
->
-<!ENTITY % i.qname  "i" >
-<!ELEMENT %i.qname;  %i.content; >
-<!-- end of i.element -->]]>
-
-<!ENTITY % i.attlist  "INCLUDE" >
-<![%i.attlist;[
-<!ATTLIST %i.qname;
-      %Common.attrib;
->
-<!-- end of i.attlist -->]]>
-
-<!ENTITY % small.element  "INCLUDE" >
-<![%small.element;[
-<!ENTITY % small.content
-     "( #PCDATA | %Inline.mix; )*"
->
-<!ENTITY % small.qname  "small" >
-<!ELEMENT %small.qname;  %small.content; >
-<!-- end of small.element -->]]>
-
-<!ENTITY % small.attlist  "INCLUDE" >
-<![%small.attlist;[
-<!ATTLIST %small.qname;
-      %Common.attrib;
->
-<!-- end of small.attlist -->]]>
-
-<!ENTITY % sub.element  "INCLUDE" >
-<![%sub.element;[
-<!ENTITY % sub.content
-     "( #PCDATA | %Inline.mix; )*"
->
-<!ENTITY % sub.qname  "sub" >
-<!ELEMENT %sub.qname;  %sub.content; >
-<!-- end of sub.element -->]]>
-
-<!ENTITY % sub.attlist  "INCLUDE" >
-<![%sub.attlist;[
-<!ATTLIST %sub.qname;
-      %Common.attrib;
->
-<!-- end of sub.attlist -->]]>
-
-<!ENTITY % sup.element  "INCLUDE" >
-<![%sup.element;[
-<!ENTITY % sup.content
-     "( #PCDATA | %Inline.mix; )*"
->
-<!ENTITY % sup.qname  "sup" >
-<!ELEMENT %sup.qname;  %sup.content; >
-<!-- end of sup.element -->]]>
-
-<!ENTITY % sup.attlist  "INCLUDE" >
-<![%sup.attlist;[
-<!ATTLIST %sup.qname;
-      %Common.attrib;
->
-<!-- end of sup.attlist -->]]>
-
-<!ENTITY % tt.element  "INCLUDE" >
-<![%tt.element;[
-<!ENTITY % tt.content
-     "( #PCDATA | %Inline.mix; )*"
->
-<!ENTITY % tt.qname  "tt" >
-<!ELEMENT %tt.qname;  %tt.content; >
-<!-- end of tt.element -->]]>
-
-<!ENTITY % tt.attlist  "INCLUDE" >
-<![%tt.attlist;[
-<!ATTLIST %tt.qname;
-      %Common.attrib;
->
-<!-- end of tt.attlist -->]]>
-
-<!-- end of xhtml-inlpres-1.mod -->

+ 0 - 62
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-inlstruct-1.mod

@@ -1,62 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Inline Structural Module  ...................................... -->
-<!-- file: xhtml-inlstruct-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-inlstruct-1.mod,v 1.1 2010/07/29 13:42:47 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Inline Structural 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-inlstruct-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Inline Structural
-
-        br, span
-
-     This module declares the elements and their attributes
-     used to support inline-level structural markup.
--->
-
-<!-- br: forced line break ............................. -->
-
-<!ENTITY % br.element  "INCLUDE" >
-<![%br.element;[
-
-<!ENTITY % br.content  "EMPTY" >
-<!ENTITY % br.qname  "br" >
-<!ELEMENT %br.qname;  %br.content; >
-
-<!-- end of br.element -->]]>
-
-<!ENTITY % br.attlist  "INCLUDE" >
-<![%br.attlist;[
-<!ATTLIST %br.qname;
-      %Core.attrib;
->
-<!-- end of br.attlist -->]]>
-
-<!-- span: generic inline container .................... -->
-
-<!ENTITY % span.element  "INCLUDE" >
-<![%span.element;[
-<!ENTITY % span.content
-     "( #PCDATA | %Inline.mix; )*"
->
-<!ENTITY % span.qname  "span" >
-<!ELEMENT %span.qname;  %span.content; >
-<!-- end of span.element -->]]>
-
-<!ENTITY % span.attlist  "INCLUDE" >
-<![%span.attlist;[
-<!ATTLIST %span.qname;
-      %Common.attrib;
->
-<!-- end of span.attlist -->]]>
-
-<!-- end of xhtml-inlstruct-1.mod -->

+ 0 - 34
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-inlstyle-1.mod

@@ -1,34 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Inline Style Module  ........................................... -->
-<!-- file: xhtml-inlstyle-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-inlstyle-1.mod,v 1.1 2010/07/29 13:42:47 bertails Exp $
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ENTITIES XHTML Inline Style 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-inlstyle-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Inline Style
-
-     This module declares the 'style' attribute, used to support inline
-     style markup. This module must be instantiated prior to the XHTML
-     Common Attributes module in order to be included in %Core.attrib;.
--->
-
-<!ENTITY % style.attrib
-     "style        CDATA                    #IMPLIED"
->
-
-
-<!ENTITY % Core.extra.attrib
-     "%style.attrib;"
->
-
-<!-- end of xhtml-inlstyle-1.mod -->

+ 0 - 196
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-lat1.ent

@@ -1,196 +0,0 @@
-<!-- Portions (C) International Organization for Standardization 1986
-     Permission to copy in any form is granted for use with
-     conforming SGML systems and applications as defined in
-     ISO 8879, provided this notice is included in all copies.
--->
-<!-- Character entity set. Typical invocation:
-    <!ENTITY % HTMLlat1 PUBLIC
-       "-//W3C//ENTITIES Latin 1 for XHTML//EN"
-       "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
-    %HTMLlat1;
--->
-
-<!ENTITY nbsp   "&#160;"> <!-- no-break space = non-breaking space,
-                                  U+00A0 ISOnum -->
-<!ENTITY iexcl  "&#161;"> <!-- inverted exclamation mark, U+00A1 ISOnum -->
-<!ENTITY cent   "&#162;"> <!-- cent sign, U+00A2 ISOnum -->
-<!ENTITY pound  "&#163;"> <!-- pound sign, U+00A3 ISOnum -->
-<!ENTITY curren "&#164;"> <!-- currency sign, U+00A4 ISOnum -->
-<!ENTITY yen    "&#165;"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->
-<!ENTITY brvbar "&#166;"> <!-- broken bar = broken vertical bar,
-                                  U+00A6 ISOnum -->
-<!ENTITY sect   "&#167;"> <!-- section sign, U+00A7 ISOnum -->
-<!ENTITY uml    "&#168;"> <!-- diaeresis = spacing diaeresis,
-                                  U+00A8 ISOdia -->
-<!ENTITY copy   "&#169;"> <!-- copyright sign, U+00A9 ISOnum -->
-<!ENTITY ordf   "&#170;"> <!-- feminine ordinal indicator, U+00AA ISOnum -->
-<!ENTITY laquo  "&#171;"> <!-- left-pointing double angle quotation mark
-                                  = left pointing guillemet, U+00AB ISOnum -->
-<!ENTITY not    "&#172;"> <!-- not sign = angled dash,
-                                  U+00AC ISOnum -->
-<!ENTITY shy    "&#173;"> <!-- soft hyphen = discretionary hyphen,
-                                  U+00AD ISOnum -->
-<!ENTITY reg    "&#174;"> <!-- registered sign = registered trade mark sign,
-                                  U+00AE ISOnum -->
-<!ENTITY macr   "&#175;"> <!-- macron = spacing macron = overline
-                                  = APL overbar, U+00AF ISOdia -->
-<!ENTITY deg    "&#176;"> <!-- degree sign, U+00B0 ISOnum -->
-<!ENTITY plusmn "&#177;"> <!-- plus-minus sign = plus-or-minus sign,
-                                  U+00B1 ISOnum -->
-<!ENTITY sup2   "&#178;"> <!-- superscript two = superscript digit two
-                                  = squared, U+00B2 ISOnum -->
-<!ENTITY sup3   "&#179;"> <!-- superscript three = superscript digit three
-                                  = cubed, U+00B3 ISOnum -->
-<!ENTITY acute  "&#180;"> <!-- acute accent = spacing acute,
-                                  U+00B4 ISOdia -->
-<!ENTITY micro  "&#181;"> <!-- micro sign, U+00B5 ISOnum -->
-<!ENTITY para   "&#182;"> <!-- pilcrow sign = paragraph sign,
-                                  U+00B6 ISOnum -->
-<!ENTITY middot "&#183;"> <!-- middle dot = Georgian comma
-                                  = Greek middle dot, U+00B7 ISOnum -->
-<!ENTITY cedil  "&#184;"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
-<!ENTITY sup1   "&#185;"> <!-- superscript one = superscript digit one,
-                                  U+00B9 ISOnum -->
-<!ENTITY ordm   "&#186;"> <!-- masculine ordinal indicator,
-                                  U+00BA ISOnum -->
-<!ENTITY raquo  "&#187;"> <!-- right-pointing double angle quotation mark
-                                  = right pointing guillemet, U+00BB ISOnum -->
-<!ENTITY frac14 "&#188;"> <!-- vulgar fraction one quarter
-                                  = fraction one quarter, U+00BC ISOnum -->
-<!ENTITY frac12 "&#189;"> <!-- vulgar fraction one half
-                                  = fraction one half, U+00BD ISOnum -->
-<!ENTITY frac34 "&#190;"> <!-- vulgar fraction three quarters
-                                  = fraction three quarters, U+00BE ISOnum -->
-<!ENTITY iquest "&#191;"> <!-- inverted question mark
-                                  = turned question mark, U+00BF ISOnum -->
-<!ENTITY Agrave "&#192;"> <!-- latin capital letter A with grave
-                                  = latin capital letter A grave,
-                                  U+00C0 ISOlat1 -->
-<!ENTITY Aacute "&#193;"> <!-- latin capital letter A with acute,
-                                  U+00C1 ISOlat1 -->
-<!ENTITY Acirc  "&#194;"> <!-- latin capital letter A with circumflex,
-                                  U+00C2 ISOlat1 -->
-<!ENTITY Atilde "&#195;"> <!-- latin capital letter A with tilde,
-                                  U+00C3 ISOlat1 -->
-<!ENTITY Auml   "&#196;"> <!-- latin capital letter A with diaeresis,
-                                  U+00C4 ISOlat1 -->
-<!ENTITY Aring  "&#197;"> <!-- latin capital letter A with ring above
-                                  = latin capital letter A ring,
-                                  U+00C5 ISOlat1 -->
-<!ENTITY AElig  "&#198;"> <!-- latin capital letter AE
-                                  = latin capital ligature AE,
-                                  U+00C6 ISOlat1 -->
-<!ENTITY Ccedil "&#199;"> <!-- latin capital letter C with cedilla,
-                                  U+00C7 ISOlat1 -->
-<!ENTITY Egrave "&#200;"> <!-- latin capital letter E with grave,
-                                  U+00C8 ISOlat1 -->
-<!ENTITY Eacute "&#201;"> <!-- latin capital letter E with acute,
-                                  U+00C9 ISOlat1 -->
-<!ENTITY Ecirc  "&#202;"> <!-- latin capital letter E with circumflex,
-                                  U+00CA ISOlat1 -->
-<!ENTITY Euml   "&#203;"> <!-- latin capital letter E with diaeresis,
-                                  U+00CB ISOlat1 -->
-<!ENTITY Igrave "&#204;"> <!-- latin capital letter I with grave,
-                                  U+00CC ISOlat1 -->
-<!ENTITY Iacute "&#205;"> <!-- latin capital letter I with acute,
-                                  U+00CD ISOlat1 -->
-<!ENTITY Icirc  "&#206;"> <!-- latin capital letter I with circumflex,
-                                  U+00CE ISOlat1 -->
-<!ENTITY Iuml   "&#207;"> <!-- latin capital letter I with diaeresis,
-                                  U+00CF ISOlat1 -->
-<!ENTITY ETH    "&#208;"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
-<!ENTITY Ntilde "&#209;"> <!-- latin capital letter N with tilde,
-                                  U+00D1 ISOlat1 -->
-<!ENTITY Ograve "&#210;"> <!-- latin capital letter O with grave,
-                                  U+00D2 ISOlat1 -->
-<!ENTITY Oacute "&#211;"> <!-- latin capital letter O with acute,
-                                  U+00D3 ISOlat1 -->
-<!ENTITY Ocirc  "&#212;"> <!-- latin capital letter O with circumflex,
-                                  U+00D4 ISOlat1 -->
-<!ENTITY Otilde "&#213;"> <!-- latin capital letter O with tilde,
-                                  U+00D5 ISOlat1 -->
-<!ENTITY Ouml   "&#214;"> <!-- latin capital letter O with diaeresis,
-                                  U+00D6 ISOlat1 -->
-<!ENTITY times  "&#215;"> <!-- multiplication sign, U+00D7 ISOnum -->
-<!ENTITY Oslash "&#216;"> <!-- latin capital letter O with stroke
-                                  = latin capital letter O slash,
-                                  U+00D8 ISOlat1 -->
-<!ENTITY Ugrave "&#217;"> <!-- latin capital letter U with grave,
-                                  U+00D9 ISOlat1 -->
-<!ENTITY Uacute "&#218;"> <!-- latin capital letter U with acute,
-                                  U+00DA ISOlat1 -->
-<!ENTITY Ucirc  "&#219;"> <!-- latin capital letter U with circumflex,
-                                  U+00DB ISOlat1 -->
-<!ENTITY Uuml   "&#220;"> <!-- latin capital letter U with diaeresis,
-                                  U+00DC ISOlat1 -->
-<!ENTITY Yacute "&#221;"> <!-- latin capital letter Y with acute,
-                                  U+00DD ISOlat1 -->
-<!ENTITY THORN  "&#222;"> <!-- latin capital letter THORN,
-                                  U+00DE ISOlat1 -->
-<!ENTITY szlig  "&#223;"> <!-- latin small letter sharp s = ess-zed,
-                                  U+00DF ISOlat1 -->
-<!ENTITY agrave "&#224;"> <!-- latin small letter a with grave
-                                  = latin small letter a grave,
-                                  U+00E0 ISOlat1 -->
-<!ENTITY aacute "&#225;"> <!-- latin small letter a with acute,
-                                  U+00E1 ISOlat1 -->
-<!ENTITY acirc  "&#226;"> <!-- latin small letter a with circumflex,
-                                  U+00E2 ISOlat1 -->
-<!ENTITY atilde "&#227;"> <!-- latin small letter a with tilde,
-                                  U+00E3 ISOlat1 -->
-<!ENTITY auml   "&#228;"> <!-- latin small letter a with diaeresis,
-                                  U+00E4 ISOlat1 -->
-<!ENTITY aring  "&#229;"> <!-- latin small letter a with ring above
-                                  = latin small letter a ring,
-                                  U+00E5 ISOlat1 -->
-<!ENTITY aelig  "&#230;"> <!-- latin small letter ae
-                                  = latin small ligature ae, U+00E6 ISOlat1 -->
-<!ENTITY ccedil "&#231;"> <!-- latin small letter c with cedilla,
-                                  U+00E7 ISOlat1 -->
-<!ENTITY egrave "&#232;"> <!-- latin small letter e with grave,
-                                  U+00E8 ISOlat1 -->
-<!ENTITY eacute "&#233;"> <!-- latin small letter e with acute,
-                                  U+00E9 ISOlat1 -->
-<!ENTITY ecirc  "&#234;"> <!-- latin small letter e with circumflex,
-                                  U+00EA ISOlat1 -->
-<!ENTITY euml   "&#235;"> <!-- latin small letter e with diaeresis,
-                                  U+00EB ISOlat1 -->
-<!ENTITY igrave "&#236;"> <!-- latin small letter i with grave,
-                                  U+00EC ISOlat1 -->
-<!ENTITY iacute "&#237;"> <!-- latin small letter i with acute,
-                                  U+00ED ISOlat1 -->
-<!ENTITY icirc  "&#238;"> <!-- latin small letter i with circumflex,
-                                  U+00EE ISOlat1 -->
-<!ENTITY iuml   "&#239;"> <!-- latin small letter i with diaeresis,
-                                  U+00EF ISOlat1 -->
-<!ENTITY eth    "&#240;"> <!-- latin small letter eth, U+00F0 ISOlat1 -->
-<!ENTITY ntilde "&#241;"> <!-- latin small letter n with tilde,
-                                  U+00F1 ISOlat1 -->
-<!ENTITY ograve "&#242;"> <!-- latin small letter o with grave,
-                                  U+00F2 ISOlat1 -->
-<!ENTITY oacute "&#243;"> <!-- latin small letter o with acute,
-                                  U+00F3 ISOlat1 -->
-<!ENTITY ocirc  "&#244;"> <!-- latin small letter o with circumflex,
-                                  U+00F4 ISOlat1 -->
-<!ENTITY otilde "&#245;"> <!-- latin small letter o with tilde,
-                                  U+00F5 ISOlat1 -->
-<!ENTITY ouml   "&#246;"> <!-- latin small letter o with diaeresis,
-                                  U+00F6 ISOlat1 -->
-<!ENTITY divide "&#247;"> <!-- division sign, U+00F7 ISOnum -->
-<!ENTITY oslash "&#248;"> <!-- latin small letter o with stroke,
-                                  = latin small letter o slash,
-                                  U+00F8 ISOlat1 -->
-<!ENTITY ugrave "&#249;"> <!-- latin small letter u with grave,
-                                  U+00F9 ISOlat1 -->
-<!ENTITY uacute "&#250;"> <!-- latin small letter u with acute,
-                                  U+00FA ISOlat1 -->
-<!ENTITY ucirc  "&#251;"> <!-- latin small letter u with circumflex,
-                                  U+00FB ISOlat1 -->
-<!ENTITY uuml   "&#252;"> <!-- latin small letter u with diaeresis,
-                                  U+00FC ISOlat1 -->
-<!ENTITY yacute "&#253;"> <!-- latin small letter y with acute,
-                                  U+00FD ISOlat1 -->
-<!ENTITY thorn  "&#254;"> <!-- latin small letter thorn,
-                                  U+00FE ISOlat1 -->
-<!ENTITY yuml   "&#255;"> <!-- latin small letter y with diaeresis,
-                                  U+00FF ISOlat1 -->

+ 0 - 59
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-link-1.mod

@@ -1,59 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Link Element Module  ........................................... -->
-<!-- file: xhtml-link-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-link-1.mod,v 1.1 2010/07/29 13:42:47 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Link Element 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-link-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Link element
-
-        link
-
-     This module declares the link element type and its attributes,
-     which could (in principle) be used to define document-level links
-     to external resources such as:
-
-     a) for document specific toolbars/menus, e.g. start, contents,
-        previous, next, index, end, help
-     b) to link to a separate style sheet (rel="stylesheet")
-     c) to make a link to a script (rel="script")
-     d) by style sheets to control how collections of html nodes are
-        rendered into printed documents
-     e) to make a link to a printable version of this document
-        e.g. a postscript or pdf version (rel="alternate" media="print")
--->
-
-<!-- link: Media-Independent Link ...................... -->
-
-<!ENTITY % link.element  "INCLUDE" >
-<![%link.element;[
-<!ENTITY % link.content  "EMPTY" >
-<!ENTITY % link.qname  "link" >
-<!ELEMENT %link.qname;  %link.content; >
-<!-- end of link.element -->]]>
-
-<!ENTITY % link.attlist  "INCLUDE" >
-<![%link.attlist;[
-<!ATTLIST %link.qname;
-      %Common.attrib;
-      charset      %Charset.datatype;       #IMPLIED
-      href         %URI.datatype;           #IMPLIED
-      hreflang     %LanguageCode.datatype;  #IMPLIED
-      type         %ContentType.datatype;   #IMPLIED
-      rel          %LinkTypes.datatype;     #IMPLIED
-      rev          %LinkTypes.datatype;     #IMPLIED
-      media        %MediaDesc.datatype;     #IMPLIED
->
-<!-- end of link.attlist -->]]>
-
-<!-- end of xhtml-link-1.mod -->

+ 0 - 129
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-list-1.mod

@@ -1,129 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Lists Module  .................................................. -->
-<!-- file: xhtml-list-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-list-1.mod,v 1.1 2010/07/29 13:42:47 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Lists 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-list-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Lists
-
-        dl, dt, dd, ol, ul, li
-
-     This module declares the list-oriented element types
-     and their attributes.
--->
-
-<!ENTITY % dl.qname  "dl" >
-<!ENTITY % dt.qname  "dt" >
-<!ENTITY % dd.qname  "dd" >
-<!ENTITY % ol.qname  "ol" >
-<!ENTITY % ul.qname  "ul" >
-<!ENTITY % li.qname  "li" >
-
-<!-- dl: Definition List ............................... -->
-
-<!ENTITY % dl.element  "INCLUDE" >
-<![%dl.element;[
-<!ENTITY % dl.content  "( %dt.qname; | %dd.qname; )+" >
-<!ELEMENT %dl.qname;  %dl.content; >
-<!-- end of dl.element -->]]>
-
-<!ENTITY % dl.attlist  "INCLUDE" >
-<![%dl.attlist;[
-<!ATTLIST %dl.qname;
-      %Common.attrib;
->
-<!-- end of dl.attlist -->]]>
-
-<!-- dt: Definition Term ............................... -->
-
-<!ENTITY % dt.element  "INCLUDE" >
-<![%dt.element;[
-<!ENTITY % dt.content
-     "( #PCDATA | %Inline.mix; )*"
->
-<!ELEMENT %dt.qname;  %dt.content; >
-<!-- end of dt.element -->]]>
-
-<!ENTITY % dt.attlist  "INCLUDE" >
-<![%dt.attlist;[
-<!ATTLIST %dt.qname;
-      %Common.attrib;
->
-<!-- end of dt.attlist -->]]>
-
-<!-- dd: Definition Description ........................ -->
-
-<!ENTITY % dd.element  "INCLUDE" >
-<![%dd.element;[
-<!ENTITY % dd.content
-     "( #PCDATA | %Flow.mix; )*"
->
-<!ELEMENT %dd.qname;  %dd.content; >
-<!-- end of dd.element -->]]>
-
-<!ENTITY % dd.attlist  "INCLUDE" >
-<![%dd.attlist;[
-<!ATTLIST %dd.qname;
-      %Common.attrib;
->
-<!-- end of dd.attlist -->]]>
-
-<!-- ol: Ordered List (numbered styles) ................ -->
-
-<!ENTITY % ol.element  "INCLUDE" >
-<![%ol.element;[
-<!ENTITY % ol.content  "( %li.qname; )+" >
-<!ELEMENT %ol.qname;  %ol.content; >
-<!-- end of ol.element -->]]>
-
-<!ENTITY % ol.attlist  "INCLUDE" >
-<![%ol.attlist;[
-<!ATTLIST %ol.qname;
-      %Common.attrib;
->
-<!-- end of ol.attlist -->]]>
-
-<!-- ul: Unordered List (bullet styles) ................ -->
-
-<!ENTITY % ul.element  "INCLUDE" >
-<![%ul.element;[
-<!ENTITY % ul.content  "( %li.qname; )+" >
-<!ELEMENT %ul.qname;  %ul.content; >
-<!-- end of ul.element -->]]>
-
-<!ENTITY % ul.attlist  "INCLUDE" >
-<![%ul.attlist;[
-<!ATTLIST %ul.qname;
-      %Common.attrib;
->
-<!-- end of ul.attlist -->]]>
-
-<!-- li: List Item ..................................... -->
-
-<!ENTITY % li.element  "INCLUDE" >
-<![%li.element;[
-<!ENTITY % li.content
-     "( #PCDATA | %Flow.mix; )*"
->
-<!ELEMENT %li.qname;  %li.content; >
-<!-- end of li.element -->]]>
-
-<!ENTITY % li.attlist  "INCLUDE" >
-<![%li.attlist;[
-<!ATTLIST %li.qname;
-      %Common.attrib;
->
-<!-- end of li.attlist -->]]>
-
-<!-- end of xhtml-list-1.mod -->

+ 0 - 47
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-meta-1.mod

@@ -1,47 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Document Metainformation Module  ............................... -->
-<!-- file: xhtml-meta-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-meta-1.mod,v 1.1 2010/07/29 13:42:47 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Metainformation 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-meta-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Meta Information
-
-        meta
-
-     This module declares the meta element type and its attributes,
-     used to provide declarative document metainformation.
--->
-
-<!-- meta: Generic Metainformation ..................... -->
-
-<!ENTITY % meta.element  "INCLUDE" >
-<![%meta.element;[
-<!ENTITY % meta.content  "EMPTY" >
-<!ENTITY % meta.qname  "meta" >
-<!ELEMENT %meta.qname;  %meta.content; >
-<!-- end of meta.element -->]]>
-
-<!ENTITY % meta.attlist  "INCLUDE" >
-<![%meta.attlist;[
-<!ATTLIST %meta.qname;
-      %XHTML.xmlns.attrib;
-      %I18n.attrib;
-      http-equiv   NMTOKEN                  #IMPLIED
-      name         NMTOKEN                  #IMPLIED
-      content      CDATA                    #REQUIRED
-      scheme       CDATA                    #IMPLIED
->
-<!-- end of meta.attlist -->]]>
-
-<!-- end of xhtml-meta-1.mod -->

+ 0 - 114
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-notations-1.mod

@@ -1,114 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Notations Module  .............................................. -->
-<!-- file: xhtml-notations-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-notations-1.mod,v 1.1 2010/07/29 13:42:48 bertails Exp $
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//NOTATIONS XHTML Notations 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-notations-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Notations
-
-     defines the following notations, many of these imported from
-     other specifications and standards. When an existing FPI is
-     known, it is incorporated here.
--->
-
-<!-- XML Notations ..................................... -->
-<!-- SGML and XML Notations ............................ -->
-
-<!-- W3C XML 1.0 Recommendation -->
-<!NOTATION w3c-xml
-     PUBLIC "ISO 8879//NOTATION Extensible Markup Language (XML) 1.0//EN" >
-
-<!-- XML 1.0 CDATA -->
-<!NOTATION cdata
-     PUBLIC "-//W3C//NOTATION XML 1.0: CDATA//EN" >
-
-<!-- SGML Formal Public Identifiers -->
-<!NOTATION fpi
-     PUBLIC "ISO 8879:1986//NOTATION Formal Public Identifier//EN" >
-
-<!-- XHTML Notations ................................... -->
-
-<!-- Length defined for cellpadding/cellspacing -->
-
-<!-- nn for pixels or nn% for percentage length -->
-<!NOTATION length
-    PUBLIC "-//W3C//NOTATION XHTML Datatype: Length//EN" >
-
-<!-- space-separated list of link types -->
-<!NOTATION linkTypes
-    PUBLIC "-//W3C//NOTATION XHTML Datatype: LinkTypes//EN" >
-
-<!-- single or comma-separated list of media descriptors -->
-<!NOTATION mediaDesc
-    PUBLIC "-//W3C//NOTATION XHTML Datatype: MediaDesc//EN" >
-
-<!-- pixel, percentage, or relative -->
-<!NOTATION multiLength
-    PUBLIC "-//W3C//NOTATION XHTML Datatype: MultiLength//EN" >
-
-<!-- one or more digits (NUMBER) -->
-<!NOTATION number
-    PUBLIC "-//W3C//NOTATION XHTML Datatype: Number//EN" >
-
-<!-- integer representing length in pixels -->
-<!NOTATION pixels
-    PUBLIC "-//W3C//NOTATION XHTML Datatype: Pixels//EN" >
-
-<!-- script expression -->
-<!NOTATION script
-    PUBLIC "-//W3C//NOTATION XHTML Datatype: Script//EN" >
-
-<!-- textual content -->
-<!NOTATION text
-    PUBLIC "-//W3C//NOTATION XHTML Datatype: Text//EN" >
-
-<!-- Imported Notations ................................ -->
-
-<!-- a single character from [ISO10646] -->
-<!NOTATION character
-    PUBLIC "-//W3C//NOTATION XHTML Datatype: Character//EN" >
-
-<!-- a character encoding, as per [RFC2045] -->
-<!NOTATION charset
-    PUBLIC "-//W3C//NOTATION XHTML Datatype: Charset//EN" >
-
-<!-- a space separated list of character encodings, as per [RFC2045] -->
-<!NOTATION charsets
-    PUBLIC "-//W3C//NOTATION XHTML Datatype: Charsets//EN" >
-
-<!-- media type, as per [RFC2045] -->
-<!NOTATION contentType
-    PUBLIC "-//W3C//NOTATION XHTML Datatype: ContentType//EN" >
-
-<!-- comma-separated list of media types, as per [RFC2045] -->
-<!NOTATION contentTypes
-    PUBLIC "-//W3C//NOTATION XHTML Datatype: ContentTypes//EN" >
-
-<!-- date and time information. ISO date format -->
-<!NOTATION datetime
-    PUBLIC "-//W3C//NOTATION XHTML Datatype: Datetime//EN" >
-
-<!-- a language code, as per [RFC3066] -->
-<!NOTATION languageCode
-    PUBLIC "-//W3C//NOTATION XHTML Datatype: LanguageCode//EN" >
-
-<!-- a Uniform Resource Identifier, see [URI] -->
-<!NOTATION uri
-    PUBLIC "-//W3C//NOTATION XHTML Datatype: URI//EN" >
-
-<!-- a space-separated list of Uniform Resource Identifiers, see [URI] -->
-<!NOTATION uris
-    PUBLIC "-//W3C//NOTATION XHTML Datatype: URIs//EN" >
-
-<!-- end of xhtml-notations-1.mod -->

+ 0 - 60
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-object-1.mod

@@ -1,60 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Embedded Object Module  ........................................ -->
-<!-- file: xhtml-object-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-object-1.mod,v 1.1 2010/07/29 13:42:48 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Embedded Object 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-object-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Embedded Objects
-
-        object
-
-     This module declares the object element type and its attributes, used
-     to embed external objects as part of XHTML pages. In the document,
-     place param elements prior to other content within the object element.
-
-     Note that use of this module requires instantiation of the Param
-     Element Module.
--->
-
-<!-- object: Generic Embedded Object ................... -->
-
-<!ENTITY % object.element  "INCLUDE" >
-<![%object.element;[
-<!ENTITY % object.content
-     "( #PCDATA | %Flow.mix; | %param.qname; )*"
->
-<!ENTITY % object.qname  "object" >
-<!ELEMENT %object.qname;  %object.content; >
-<!-- end of object.element -->]]>
-
-<!ENTITY % object.attlist  "INCLUDE" >
-<![%object.attlist;[
-<!ATTLIST %object.qname;
-      %Common.attrib;
-      declare      ( declare )              #IMPLIED
-      classid      %URI.datatype;           #IMPLIED
-      codebase     %URI.datatype;           #IMPLIED
-      data         %URI.datatype;           #IMPLIED
-      type         %ContentType.datatype;   #IMPLIED
-      codetype     %ContentType.datatype;   #IMPLIED
-      archive      %URIs.datatype;          #IMPLIED
-      standby      %Text.datatype;          #IMPLIED
-      height       %Length.datatype;        #IMPLIED
-      width        %Length.datatype;        #IMPLIED
-      name         CDATA                    #IMPLIED
-      tabindex     %Number.datatype;        #IMPLIED
->
-<!-- end of object.attlist -->]]>
-
-<!-- end of xhtml-object-1.mod -->

+ 0 - 48
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-param-1.mod

@@ -1,48 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Param Element Module  ..................................... -->
-<!-- file: xhtml-param-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-param-1.mod,v 1.1 2010/07/29 13:42:48 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Param Element 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-param-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Parameters for Java Applets and Embedded Objects
-
-        param
-
-     This module provides declarations for the param element,
-     used to provide named property values for the applet
-     and object elements.
--->
-
-<!-- param: Named Property Value ....................... -->
-
-<!ENTITY % param.element  "INCLUDE" >
-<![%param.element;[
-<!ENTITY % param.content  "EMPTY" >
-<!ENTITY % param.qname  "param" >
-<!ELEMENT %param.qname;  %param.content; >
-<!-- end of param.element -->]]>
-
-<!ENTITY % param.attlist  "INCLUDE" >
-<![%param.attlist;[
-<!ATTLIST %param.qname;
-      %XHTML.xmlns.attrib;
-      %id.attrib;
-      name         CDATA                    #REQUIRED
-      value        CDATA                    #IMPLIED
-      valuetype    ( data | ref | object )  'data'
-      type         %ContentType.datatype;   #IMPLIED
->
-<!-- end of param.attlist -->]]>
-
-<!-- end of xhtml-param-1.mod -->

+ 0 - 38
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-pres-1.mod

@@ -1,38 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Presentation Module ............................................ -->
-<!-- file: xhtml-pres-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-pres-1.mod,v 1.1 2010/07/29 13:42:48 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Presentation 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-pres-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Presentational Elements
-
-     This module defines elements and their attributes for
-     simple presentation-related markup.
--->
-
-<!ENTITY % xhtml-inlpres.module "INCLUDE" >
-<![%xhtml-inlpres.module;[
-<!ENTITY % xhtml-inlpres.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Inline Presentation 1.0//EN"
-            "xhtml-inlpres-1.mod" >
-%xhtml-inlpres.mod;]]>
-
-<!ENTITY % xhtml-blkpres.module "INCLUDE" >
-<![%xhtml-blkpres.module;[
-<!ENTITY % xhtml-blkpres.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Block Presentation 1.0//EN"
-            "xhtml-blkpres-1.mod" >
-%xhtml-blkpres.mod;]]>
-
-<!-- end of xhtml-pres-1.mod -->

+ 0 - 318
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-qname-1.mod

@@ -1,318 +0,0 @@
-<!-- ....................................................................... -->
-<!-- XHTML Qname Module  ................................................... -->
-<!-- file: xhtml-qname-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-qname-1.mod,v 1.1 2010/07/29 13:42:48 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ENTITIES XHTML Qualified Names 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-qname-1.mod"
-
-     Revisions:
-	   #2000-10-22: added qname declarations for ruby elements
-     ....................................................................... -->
-
-<!-- XHTML Qname (Qualified Name) Module
-
-     This module is contained in two parts, labeled Section 'A' and 'B':
-
-       Section A declares parameter entities to support namespace-
-       qualified names, namespace declarations, and name prefixing
-       for XHTML and extensions.
-
-       Section B declares parameter entities used to provide
-       namespace-qualified names for all XHTML element types:
-
-         %applet.qname;   the xmlns-qualified name for <applet>
-         %base.qname;     the xmlns-qualified name for <base>
-         ...
-
-     XHTML extensions would create a module similar to this one.
-     Included in the XHTML distribution is a template module
-     ('template-qname-1.mod') suitable for this purpose.
--->
-
-<!-- Section A: XHTML XML Namespace Framework :::::::::::::::::::: -->
-
-<!-- 1. Declare a %XHTML.prefixed; conditional section keyword, used
-        to activate namespace prefixing. The default value should
-        inherit '%NS.prefixed;' from the DTD driver, so that unless
-        overridden, the default behaviour follows the overall DTD
-        prefixing scheme.
--->
-<!ENTITY % NS.prefixed "IGNORE" >
-<!ENTITY % XHTML.prefixed "%NS.prefixed;" >
-
-<!-- By default, we always permit XHTML attribute collections to have
-     namespace-qualified prefixes as well.
--->
-<!ENTITY % XHTML.global.attrs.prefixed "INCLUDE" >
-<!-- By default, we allow the XML Schema attributes on the root
-     element.
--->
-<!ENTITY % XHTML.xsi.attrs "INCLUDE" >
-
-<!-- 2. Declare a parameter entity (eg., %XHTML.xmlns;) containing
-        the URI reference used to identify the XHTML namespace:
--->
-<!ENTITY % XHTML.xmlns  "http://www.w3.org/1999/xhtml" >
-
-<!-- 3. Declare parameter entities (eg., %XHTML.prefix;) containing
-        the default namespace prefix string(s) to use when prefixing
-        is enabled. This may be overridden in the DTD driver or the
-        internal subset of an document instance. If no default prefix
-        is desired, this may be declared as an empty string.
-
-     NOTE: As specified in [XMLNAMES], the namespace prefix serves
-     as a proxy for the URI reference, and is not in itself significant.
--->
-<!ENTITY % XHTML.prefix  "xhtml" >
-
-<!-- 4. Declare parameter entities (eg., %XHTML.pfx;) containing the
-        colonized prefix(es) (eg., '%XHTML.prefix;:') used when
-        prefixing is active, an empty string when it is not.
--->
-<![%XHTML.prefixed;[
-<!ENTITY % XHTML.pfx  "%XHTML.prefix;:" >
-]]>
-<!ENTITY % XHTML.pfx  "" >
-
-<!-- declare qualified name extensions here ............ -->
-<!ENTITY % xhtml-qname-extra.mod "" >
-%xhtml-qname-extra.mod;
-
-<!-- 5. The parameter entity %XHTML.xmlns.extra.attrib; may be
-        redeclared to contain any non-XHTML namespace declaration
-        attributes for namespaces embedded in XHTML. The default
-        is an empty string.  XLink should be included here if used
-        in the DTD.
--->
-<!ENTITY % XHTML.xmlns.extra.attrib "" >
-
-<!-- The remainder of Section A is only followed in XHTML, not extensions. -->
-
-<!-- Declare a parameter entity %NS.decl.attrib; containing
-     all XML Namespace declarations used in the DTD, plus the
-     xmlns declaration for XHTML, its form dependent on whether
-     prefixing is active.
--->
-<!ENTITY % XHTML.xmlns.attrib.prefixed
-     "xmlns:%XHTML.prefix;  %URI.datatype;   #FIXED '%XHTML.xmlns;'"
->
-<![%XHTML.prefixed;[
-<!ENTITY % NS.decl.attrib
-     "%XHTML.xmlns.attrib.prefixed;
-      %XHTML.xmlns.extra.attrib;"
->
-]]>
-<!ENTITY % NS.decl.attrib
-     "%XHTML.xmlns.extra.attrib;"
->
-
-<!-- Declare a parameter entity %XSI.prefix as a prefix to use for XML
-     Schema Instance attributes.
--->
-<!ENTITY % XSI.prefix "xsi" >
-
-<!ENTITY % XSI.xmlns "http://www.w3.org/2001/XMLSchema-instance" >
-
-<!-- Declare a parameter entity %XSI.xmlns.attrib as support for the
-     schemaLocation attribute, since this is legal throughout the DTD.
--->
-<!ENTITY % XSI.xmlns.attrib
-     "xmlns:%XSI.prefix;  %URI.datatype;   #FIXED '%XSI.xmlns;'" >
-
-<!-- This is a placeholder for future XLink support.
--->
-<!ENTITY % XLINK.xmlns.attrib "" >
-
-<!-- This is the attribute for the XML Schema namespace - XHTML
-     Modularization is also expressed in XML Schema, and it needs to
-	 be legal to declare the XML Schema namespace and the
-	 schemaLocation attribute on the root element of XHTML family
-	 documents.
--->
-<![%XHTML.xsi.attrs;[
-<!ENTITY % XSI.prefix "xsi" >
-<!ENTITY % XSI.pfx "%XSI.prefix;:" >
-<!ENTITY % XSI.xmlns "http://www.w3.org/2001/XMLSchema-instance" >
-
-<!ENTITY % XSI.xmlns.attrib
-     "xmlns:%XSI.prefix;  %URI.datatype;    #FIXED '%XSI.xmlns;'"
->
-]]>
-<!ENTITY % XSI.prefix "" >
-<!ENTITY % XSI.pfx "" >
-<!ENTITY % XSI.xmlns.attrib "" >
-
-
-<!-- Declare a parameter entity %NS.decl.attrib; containing all
-     XML namespace declaration attributes used by XHTML, including
-     a default xmlns attribute when prefixing is inactive.
--->
-<![%XHTML.prefixed;[
-<!ENTITY % XHTML.xmlns.attrib
-     "%NS.decl.attrib;
-      %XSI.xmlns.attrib;
-      %XLINK.xmlns.attrib;"
->
-]]>
-<!ENTITY % XHTML.xmlns.attrib
-     "xmlns        %URI.datatype;           #FIXED '%XHTML.xmlns;'
-      %NS.decl.attrib;
-      %XSI.xmlns.attrib;
-      %XLINK.xmlns.attrib;"
->
-
-<!-- placeholder for qualified name redeclarations -->
-<!ENTITY % xhtml-qname.redecl "" >
-%xhtml-qname.redecl;
-
-<!-- Section B: XHTML Qualified Names ::::::::::::::::::::::::::::: -->
-
-<!-- 6. This section declares parameter entities used to provide
-        namespace-qualified names for all XHTML element types.
--->
-
-<!-- module:  xhtml-applet-1.mod -->
-<!ENTITY % applet.qname  "%XHTML.pfx;applet" >
-
-<!-- module:  xhtml-base-1.mod -->
-<!ENTITY % base.qname    "%XHTML.pfx;base" >
-
-<!-- module:  xhtml-bdo-1.mod -->
-<!ENTITY % bdo.qname     "%XHTML.pfx;bdo" >
-
-<!-- module:  xhtml-blkphras-1.mod -->
-<!ENTITY % address.qname "%XHTML.pfx;address" >
-<!ENTITY % blockquote.qname  "%XHTML.pfx;blockquote" >
-<!ENTITY % pre.qname     "%XHTML.pfx;pre" >
-<!ENTITY % h1.qname      "%XHTML.pfx;h1" >
-<!ENTITY % h2.qname      "%XHTML.pfx;h2" >
-<!ENTITY % h3.qname      "%XHTML.pfx;h3" >
-<!ENTITY % h4.qname      "%XHTML.pfx;h4" >
-<!ENTITY % h5.qname      "%XHTML.pfx;h5" >
-<!ENTITY % h6.qname      "%XHTML.pfx;h6" >
-
-<!-- module:  xhtml-blkpres-1.mod -->
-<!ENTITY % hr.qname      "%XHTML.pfx;hr" >
-
-<!-- module:  xhtml-blkstruct-1.mod -->
-<!ENTITY % div.qname     "%XHTML.pfx;div" >
-<!ENTITY % p.qname       "%XHTML.pfx;p" >
-
-<!-- module:  xhtml-edit-1.mod -->
-<!ENTITY % ins.qname     "%XHTML.pfx;ins" >
-<!ENTITY % del.qname     "%XHTML.pfx;del" >
-
-<!-- module:  xhtml-form-1.mod -->
-<!ENTITY % form.qname    "%XHTML.pfx;form" >
-<!ENTITY % label.qname   "%XHTML.pfx;label" >
-<!ENTITY % input.qname   "%XHTML.pfx;input" >
-<!ENTITY % select.qname  "%XHTML.pfx;select" >
-<!ENTITY % optgroup.qname  "%XHTML.pfx;optgroup" >
-<!ENTITY % option.qname  "%XHTML.pfx;option" >
-<!ENTITY % textarea.qname  "%XHTML.pfx;textarea" >
-<!ENTITY % fieldset.qname  "%XHTML.pfx;fieldset" >
-<!ENTITY % legend.qname  "%XHTML.pfx;legend" >
-<!ENTITY % button.qname  "%XHTML.pfx;button" >
-
-<!-- module:  xhtml-hypertext-1.mod -->
-<!ENTITY % a.qname       "%XHTML.pfx;a" >
-
-<!-- module:  xhtml-image-1.mod -->
-<!ENTITY % img.qname     "%XHTML.pfx;img" >
-
-<!-- module:  xhtml-inlphras-1.mod -->
-<!ENTITY % abbr.qname    "%XHTML.pfx;abbr" >
-<!ENTITY % acronym.qname "%XHTML.pfx;acronym" >
-<!ENTITY % cite.qname    "%XHTML.pfx;cite" >
-<!ENTITY % code.qname    "%XHTML.pfx;code" >
-<!ENTITY % dfn.qname     "%XHTML.pfx;dfn" >
-<!ENTITY % em.qname      "%XHTML.pfx;em" >
-<!ENTITY % kbd.qname     "%XHTML.pfx;kbd" >
-<!ENTITY % q.qname       "%XHTML.pfx;q" >
-<!ENTITY % samp.qname    "%XHTML.pfx;samp" >
-<!ENTITY % strong.qname  "%XHTML.pfx;strong" >
-<!ENTITY % var.qname     "%XHTML.pfx;var" >
-
-<!-- module:  xhtml-inlpres-1.mod -->
-<!ENTITY % b.qname       "%XHTML.pfx;b" >
-<!ENTITY % big.qname     "%XHTML.pfx;big" >
-<!ENTITY % i.qname       "%XHTML.pfx;i" >
-<!ENTITY % small.qname   "%XHTML.pfx;small" >
-<!ENTITY % sub.qname     "%XHTML.pfx;sub" >
-<!ENTITY % sup.qname     "%XHTML.pfx;sup" >
-<!ENTITY % tt.qname      "%XHTML.pfx;tt" >
-
-<!-- module:  xhtml-inlstruct-1.mod -->
-<!ENTITY % br.qname      "%XHTML.pfx;br" >
-<!ENTITY % span.qname    "%XHTML.pfx;span" >
-
-<!-- module:  xhtml-ismap-1.mod (also csismap, ssismap) -->
-<!ENTITY % map.qname     "%XHTML.pfx;map" >
-<!ENTITY % area.qname    "%XHTML.pfx;area" >
-
-<!-- module:  xhtml-link-1.mod -->
-<!ENTITY % link.qname    "%XHTML.pfx;link" >
-
-<!-- module:  xhtml-list-1.mod -->
-<!ENTITY % dl.qname      "%XHTML.pfx;dl" >
-<!ENTITY % dt.qname      "%XHTML.pfx;dt" >
-<!ENTITY % dd.qname      "%XHTML.pfx;dd" >
-<!ENTITY % ol.qname      "%XHTML.pfx;ol" >
-<!ENTITY % ul.qname      "%XHTML.pfx;ul" >
-<!ENTITY % li.qname      "%XHTML.pfx;li" >
-
-<!-- module:  xhtml-meta-1.mod -->
-<!ENTITY % meta.qname    "%XHTML.pfx;meta" >
-
-<!-- module:  xhtml-param-1.mod -->
-<!ENTITY % param.qname   "%XHTML.pfx;param" >
-
-<!-- module:  xhtml-object-1.mod -->
-<!ENTITY % object.qname  "%XHTML.pfx;object" >
-
-<!-- module:  xhtml-script-1.mod -->
-<!ENTITY % script.qname  "%XHTML.pfx;script" >
-<!ENTITY % noscript.qname  "%XHTML.pfx;noscript" >
-
-<!-- module:  xhtml-struct-1.mod -->
-<!ENTITY % html.qname    "%XHTML.pfx;html" >
-<!ENTITY % head.qname    "%XHTML.pfx;head" >
-<!ENTITY % title.qname   "%XHTML.pfx;title" >
-<!ENTITY % body.qname    "%XHTML.pfx;body" >
-
-<!-- module:  xhtml-style-1.mod -->
-<!ENTITY % style.qname   "%XHTML.pfx;style" >
-
-<!-- module:  xhtml-table-1.mod -->
-<!ENTITY % table.qname   "%XHTML.pfx;table" >
-<!ENTITY % caption.qname "%XHTML.pfx;caption" >
-<!ENTITY % thead.qname   "%XHTML.pfx;thead" >
-<!ENTITY % tfoot.qname   "%XHTML.pfx;tfoot" >
-<!ENTITY % tbody.qname   "%XHTML.pfx;tbody" >
-<!ENTITY % colgroup.qname  "%XHTML.pfx;colgroup" >
-<!ENTITY % col.qname     "%XHTML.pfx;col" >
-<!ENTITY % tr.qname      "%XHTML.pfx;tr" >
-<!ENTITY % th.qname      "%XHTML.pfx;th" >
-<!ENTITY % td.qname      "%XHTML.pfx;td" >
-
-<!-- module:  xhtml-ruby-1.mod -->
-
-<!ENTITY % ruby.qname    "%XHTML.pfx;ruby" >
-<!ENTITY % rbc.qname     "%XHTML.pfx;rbc" >
-<!ENTITY % rtc.qname     "%XHTML.pfx;rtc" >
-<!ENTITY % rb.qname      "%XHTML.pfx;rb" >
-<!ENTITY % rt.qname      "%XHTML.pfx;rt" >
-<!ENTITY % rp.qname      "%XHTML.pfx;rp" >
-
-<!-- Provisional XHTML 2.0 Qualified Names  ...................... -->
-
-<!-- module:  xhtml-image-2.mod -->
-<!ENTITY % alt.qname     "%XHTML.pfx;alt" >
-
-<!-- end of xhtml-qname-1.mod -->

+ 0 - 67
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-script-1.mod

@@ -1,67 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Document Scripting Module  ..................................... -->
-<!-- file: xhtml-script-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-script-1.mod,v 1.1 2010/07/29 13:42:48 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Scripting 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-script-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Scripting
-
-        script, noscript
-
-     This module declares element types and attributes used to provide
-     support for executable scripts as well as an alternate content
-     container where scripts are not supported.
--->
-
-<!-- script: Scripting Statement ....................... -->
-
-<!ENTITY % script.element  "INCLUDE" >
-<![%script.element;[
-<!ENTITY % script.content  "( #PCDATA )" >
-<!ENTITY % script.qname  "script" >
-<!ELEMENT %script.qname;  %script.content; >
-<!-- end of script.element -->]]>
-
-<!ENTITY % script.attlist  "INCLUDE" >
-<![%script.attlist;[
-<!ATTLIST %script.qname;
-      %XHTML.xmlns.attrib;
-	  %id.attrib;
-      xml:space    ( preserve )             #FIXED 'preserve'
-      charset      %Charset.datatype;       #IMPLIED
-      type         %ContentType.datatype;   #REQUIRED
-      src          %URI.datatype;           #IMPLIED
-      defer        ( defer )                #IMPLIED
->
-<!-- end of script.attlist -->]]>
-
-<!-- noscript: No-Script Alternate Content ............. -->
-
-<!ENTITY % noscript.element  "INCLUDE" >
-<![%noscript.element;[
-<!ENTITY % noscript.content
-     "( %Block.mix; )+"
->
-<!ENTITY % noscript.qname  "noscript" >
-<!ELEMENT %noscript.qname;  %noscript.content; >
-<!-- end of noscript.element -->]]>
-
-<!ENTITY % noscript.attlist  "INCLUDE" >
-<![%noscript.attlist;[
-<!ATTLIST %noscript.qname;
-      %Common.attrib;
->
-<!-- end of noscript.attlist -->]]>
-
-<!-- end of xhtml-script-1.mod -->

+ 0 - 80
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-special.ent

@@ -1,80 +0,0 @@
-<!-- Special characters for XHTML -->
-
-<!-- Character entity set. Typical invocation:
-     <!ENTITY % HTMLspecial PUBLIC
-        "-//W3C//ENTITIES Special for XHTML//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
-     %HTMLspecial;
--->
-
-<!-- Portions (C) International Organization for Standardization 1986:
-     Permission to copy in any form is granted for use with
-     conforming SGML systems and applications as defined in
-     ISO 8879, provided this notice is included in all copies.
--->
-
-<!-- Relevant ISO entity set is given unless names are newly introduced.
-     New names (i.e., not in ISO 8879 list) do not clash with any
-     existing ISO 8879 entity names. ISO 10646 character numbers
-     are given for each character, in hex. values are decimal
-     conversions of the ISO 10646 values and refer to the document
-     character set. Names are Unicode names. 
--->
-
-<!-- C0 Controls and Basic Latin -->
-<!ENTITY quot    "&#34;"> <!--  quotation mark, U+0022 ISOnum -->
-<!ENTITY amp     "&#38;#38;"> <!--  ampersand, U+0026 ISOnum -->
-<!ENTITY lt      "&#38;#60;"> <!--  less-than sign, U+003C ISOnum -->
-<!ENTITY gt      "&#62;"> <!--  greater-than sign, U+003E ISOnum -->
-<!ENTITY apos	 "&#39;"> <!--  apostrophe = APL quote, U+0027 ISOnum -->
-
-<!-- Latin Extended-A -->
-<!ENTITY OElig   "&#338;"> <!--  latin capital ligature OE,
-                                    U+0152 ISOlat2 -->
-<!ENTITY oelig   "&#339;"> <!--  latin small ligature oe, U+0153 ISOlat2 -->
-<!-- ligature is a misnomer, this is a separate character in some languages -->
-<!ENTITY Scaron  "&#352;"> <!--  latin capital letter S with caron,
-                                    U+0160 ISOlat2 -->
-<!ENTITY scaron  "&#353;"> <!--  latin small letter s with caron,
-                                    U+0161 ISOlat2 -->
-<!ENTITY Yuml    "&#376;"> <!--  latin capital letter Y with diaeresis,
-                                    U+0178 ISOlat2 -->
-
-<!-- Spacing Modifier Letters -->
-<!ENTITY circ    "&#710;"> <!--  modifier letter circumflex accent,
-                                    U+02C6 ISOpub -->
-<!ENTITY tilde   "&#732;"> <!--  small tilde, U+02DC ISOdia -->
-
-<!-- General Punctuation -->
-<!ENTITY ensp    "&#8194;"> <!-- en space, U+2002 ISOpub -->
-<!ENTITY emsp    "&#8195;"> <!-- em space, U+2003 ISOpub -->
-<!ENTITY thinsp  "&#8201;"> <!-- thin space, U+2009 ISOpub -->
-<!ENTITY zwnj    "&#8204;"> <!-- zero width non-joiner,
-                                    U+200C NEW RFC 2070 -->
-<!ENTITY zwj     "&#8205;"> <!-- zero width joiner, U+200D NEW RFC 2070 -->
-<!ENTITY lrm     "&#8206;"> <!-- left-to-right mark, U+200E NEW RFC 2070 -->
-<!ENTITY rlm     "&#8207;"> <!-- right-to-left mark, U+200F NEW RFC 2070 -->
-<!ENTITY ndash   "&#8211;"> <!-- en dash, U+2013 ISOpub -->
-<!ENTITY mdash   "&#8212;"> <!-- em dash, U+2014 ISOpub -->
-<!ENTITY lsquo   "&#8216;"> <!-- left single quotation mark,
-                                    U+2018 ISOnum -->
-<!ENTITY rsquo   "&#8217;"> <!-- right single quotation mark,
-                                    U+2019 ISOnum -->
-<!ENTITY sbquo   "&#8218;"> <!-- single low-9 quotation mark, U+201A NEW -->
-<!ENTITY ldquo   "&#8220;"> <!-- left double quotation mark,
-                                    U+201C ISOnum -->
-<!ENTITY rdquo   "&#8221;"> <!-- right double quotation mark,
-                                    U+201D ISOnum -->
-<!ENTITY bdquo   "&#8222;"> <!-- double low-9 quotation mark, U+201E NEW -->
-<!ENTITY dagger  "&#8224;"> <!-- dagger, U+2020 ISOpub -->
-<!ENTITY Dagger  "&#8225;"> <!-- double dagger, U+2021 ISOpub -->
-<!ENTITY permil  "&#8240;"> <!-- per mille sign, U+2030 ISOtech -->
-<!ENTITY lsaquo  "&#8249;"> <!-- single left-pointing angle quotation mark,
-                                    U+2039 ISO proposed -->
-<!-- lsaquo is proposed but not yet ISO standardized -->
-<!ENTITY rsaquo  "&#8250;"> <!-- single right-pointing angle quotation mark,
-                                    U+203A ISO proposed -->
-<!-- rsaquo is proposed but not yet ISO standardized -->
-
-<!-- Currency Symbols -->
-<!ENTITY euro   "&#8364;"> <!--  euro sign, U+20AC NEW -->

+ 0 - 32
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-ssismap-1.mod

@@ -1,32 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Server-side Image Map Module  .................................. -->
-<!-- file: xhtml-ssismap-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-ssismap-1.mod,v 1.1 2010/07/29 13:42:48 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Server-side Image Maps 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-ssismap-1.mod"
-
-     Revisions:
-#2000-10-22: added declaration for 'ismap' on <input>
-     ....................................................................... -->
-
-<!-- Server-side Image Maps
-
-     This adds the 'ismap' attribute to the img and input elements
-     to support server-side processing of a user selection.
--->
-
-<!ATTLIST %img.qname;
-      ismap        ( ismap )                #IMPLIED
->
-
-<!ATTLIST %input.qname;
-      ismap        ( ismap )                #IMPLIED
->
-
-<!-- end of xhtml-ssismap-1.mod -->

+ 0 - 136
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-struct-1.mod

@@ -1,136 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Structure Module  .............................................. -->
-<!-- file: xhtml-struct-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-struct-1.mod,v 1.1 2010/07/29 13:42:48 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Document Structure 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-struct-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Document Structure
-
-        title, head, body, html
-
-     The Structure Module defines the major structural elements and
-     their attributes.
-
-     Note that the content model of the head element type is redeclared
-     when the Base Module is included in the DTD.
-
-     The parameter entity containing the XML namespace URI value used
-     for XHTML is '%XHTML.xmlns;', defined in the Qualified Names module.
--->
-
-<!-- title: Document Title ............................. -->
-
-<!-- The title element is not considered part of the flow of text.
-     It should be displayed, for example as the page header or
-     window title. Exactly one title is required per document.
--->
-
-<!ENTITY % title.element  "INCLUDE" >
-<![%title.element;[
-<!ENTITY % title.content  "( #PCDATA )" >
-<!ENTITY % title.qname  "title" >
-<!ELEMENT %title.qname;  %title.content; >
-<!-- end of title.element -->]]>
-
-<!ENTITY % title.attlist  "INCLUDE" >
-<![%title.attlist;[
-<!ATTLIST %title.qname;
-      %XHTML.xmlns.attrib;
-      %I18n.attrib;
->
-<!-- end of title.attlist -->]]>
-
-<!-- head: Document Head ............................... -->
-
-<!ENTITY % head.element  "INCLUDE" >
-<![%head.element;[
-<!ENTITY % head.content
-    "( %HeadOpts.mix;, %title.qname;, %HeadOpts.mix; )"
->
-<!ENTITY % head.qname  "head" >
-<!ELEMENT %head.qname;  %head.content; >
-<!-- end of head.element -->]]>
-
-<!ENTITY % head.attlist  "INCLUDE" >
-<![%head.attlist;[
-<!-- reserved for future use with document profiles
--->
-<!ENTITY % profile.attrib
-     "profile      %URIs.datatype;           #IMPLIED"
->
-
-<!ATTLIST %head.qname;
-      %XHTML.xmlns.attrib;
-      %I18n.attrib;
-      %profile.attrib;
-      %id.attrib;
->
-<!-- end of head.attlist -->]]>
-
-<!-- body: Document Body ............................... -->
-
-<!ENTITY % body.element  "INCLUDE" >
-<![%body.element;[
-<!ENTITY % body.content
-     "( %Block.mix; )*"
->
-<!ENTITY % body.qname  "body" >
-<!ELEMENT %body.qname;  %body.content; >
-<!-- end of body.element -->]]>
-
-<!ENTITY % body.attlist  "INCLUDE" >
-<![%body.attlist;[
-<!ATTLIST %body.qname;
-      %Common.attrib;
->
-<!-- end of body.attlist -->]]>
-
-<!-- html: XHTML Document Element ...................... -->
-
-<!ENTITY % html.element  "INCLUDE" >
-<![%html.element;[
-<!ENTITY % html.content  "( %head.qname;, %body.qname; )" >
-<!ENTITY % html.qname  "html" >
-<!ELEMENT %html.qname;  %html.content; >
-<!-- end of html.element -->]]>
-
-<![%XHTML.xsi.attrs;[
-<!-- define a parameter for the XSI schemaLocation attribute -->
-<!ENTITY % XSI.schemaLocation.attrib
-     "%XSI.pfx;schemaLocation  %URIs.datatype;    #IMPLIED"
->
-]]>
-<!ENTITY % XSI.schemaLocation.attrib "">
-
-<!ENTITY % html.attlist  "INCLUDE" >
-<![%html.attlist;[
-<!-- version attribute value defined in driver
--->
-<!ENTITY % XHTML.version.attrib
-     "version      CDATA           #FIXED '%XHTML.version;'"
->
-
-<!-- see the Qualified Names module for information
-     on how to extend XHTML using XML namespaces
--->
-<!ATTLIST %html.qname;
-      %XHTML.xmlns.attrib;
-      %XSI.schemaLocation.attrib;
-      %XHTML.version.attrib;
-      %I18n.attrib;
-      %id.attrib;
->
-<!-- end of html.attlist -->]]>
-
-<!-- end of xhtml-struct-1.mod -->

+ 0 - 48
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-style-1.mod

@@ -1,48 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Document Style Sheet Module  ................................... -->
-<!-- file: xhtml-style-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-style-1.mod,v 1.1 2010/07/29 13:42:48 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//DTD XHTML Style Sheets 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-style-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Style Sheets
-
-        style
-
-     This module declares the style element type and its attributes,
-     used to embed style sheet information in the document head element.
--->
-
-<!-- style: Style Sheet Information .................... -->
-
-<!ENTITY % style.element  "INCLUDE" >
-<![%style.element;[
-<!ENTITY % style.content  "( #PCDATA )" >
-<!ENTITY % style.qname  "style" >
-<!ELEMENT %style.qname;  %style.content; >
-<!-- end of style.element -->]]>
-
-<!ENTITY % style.attlist  "INCLUDE" >
-<![%style.attlist;[
-<!ATTLIST %style.qname;
-      %XHTML.xmlns.attrib;
-      %id.attrib;
-      %title.attrib;
-      %I18n.attrib;
-      xml:space    ( preserve )             #FIXED 'preserve'
-      type         %ContentType.datatype;   #REQUIRED
-      media        %MediaDesc.datatype;     #IMPLIED
->
-<!-- end of style.attlist -->]]>
-
-<!-- end of xhtml-style-1.mod -->

+ 0 - 237
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-symbol.ent

@@ -1,237 +0,0 @@
-<!-- Mathematical, Greek and Symbolic characters for XHTML -->
-
-<!-- Character entity set. Typical invocation:
-     <!ENTITY % HTMLsymbol PUBLIC
-        "-//W3C//ENTITIES Symbols for XHTML//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
-     %HTMLsymbol;
--->
-
-<!-- Portions (C) International Organization for Standardization 1986:
-     Permission to copy in any form is granted for use with
-     conforming SGML systems and applications as defined in
-     ISO 8879, provided this notice is included in all copies.
--->
-
-<!-- Relevant ISO entity set is given unless names are newly introduced.
-     New names (i.e., not in ISO 8879 list) do not clash with any
-     existing ISO 8879 entity names. ISO 10646 character numbers
-     are given for each character, in hex. values are decimal
-     conversions of the ISO 10646 values and refer to the document
-     character set. Names are Unicode names. 
--->
-
-<!-- Latin Extended-B -->
-<!ENTITY fnof     "&#402;"> <!-- latin small letter f with hook = function
-                                    = florin, U+0192 ISOtech -->
-
-<!-- Greek -->
-<!ENTITY Alpha    "&#913;"> <!-- greek capital letter alpha, U+0391 -->
-<!ENTITY Beta     "&#914;"> <!-- greek capital letter beta, U+0392 -->
-<!ENTITY Gamma    "&#915;"> <!-- greek capital letter gamma,
-                                    U+0393 ISOgrk3 -->
-<!ENTITY Delta    "&#916;"> <!-- greek capital letter delta,
-                                    U+0394 ISOgrk3 -->
-<!ENTITY Epsilon  "&#917;"> <!-- greek capital letter epsilon, U+0395 -->
-<!ENTITY Zeta     "&#918;"> <!-- greek capital letter zeta, U+0396 -->
-<!ENTITY Eta      "&#919;"> <!-- greek capital letter eta, U+0397 -->
-<!ENTITY Theta    "&#920;"> <!-- greek capital letter theta,
-                                    U+0398 ISOgrk3 -->
-<!ENTITY Iota     "&#921;"> <!-- greek capital letter iota, U+0399 -->
-<!ENTITY Kappa    "&#922;"> <!-- greek capital letter kappa, U+039A -->
-<!ENTITY Lambda   "&#923;"> <!-- greek capital letter lamda,
-                                    U+039B ISOgrk3 -->
-<!ENTITY Mu       "&#924;"> <!-- greek capital letter mu, U+039C -->
-<!ENTITY Nu       "&#925;"> <!-- greek capital letter nu, U+039D -->
-<!ENTITY Xi       "&#926;"> <!-- greek capital letter xi, U+039E ISOgrk3 -->
-<!ENTITY Omicron  "&#927;"> <!-- greek capital letter omicron, U+039F -->
-<!ENTITY Pi       "&#928;"> <!-- greek capital letter pi, U+03A0 ISOgrk3 -->
-<!ENTITY Rho      "&#929;"> <!-- greek capital letter rho, U+03A1 -->
-<!-- there is no Sigmaf, and no U+03A2 character either -->
-<!ENTITY Sigma    "&#931;"> <!-- greek capital letter sigma,
-                                    U+03A3 ISOgrk3 -->
-<!ENTITY Tau      "&#932;"> <!-- greek capital letter tau, U+03A4 -->
-<!ENTITY Upsilon  "&#933;"> <!-- greek capital letter upsilon,
-                                    U+03A5 ISOgrk3 -->
-<!ENTITY Phi      "&#934;"> <!-- greek capital letter phi,
-                                    U+03A6 ISOgrk3 -->
-<!ENTITY Chi      "&#935;"> <!-- greek capital letter chi, U+03A7 -->
-<!ENTITY Psi      "&#936;"> <!-- greek capital letter psi,
-                                    U+03A8 ISOgrk3 -->
-<!ENTITY Omega    "&#937;"> <!-- greek capital letter omega,
-                                    U+03A9 ISOgrk3 -->
-
-<!ENTITY alpha    "&#945;"> <!-- greek small letter alpha,
-                                    U+03B1 ISOgrk3 -->
-<!ENTITY beta     "&#946;"> <!-- greek small letter beta, U+03B2 ISOgrk3 -->
-<!ENTITY gamma    "&#947;"> <!-- greek small letter gamma,
-                                    U+03B3 ISOgrk3 -->
-<!ENTITY delta    "&#948;"> <!-- greek small letter delta,
-                                    U+03B4 ISOgrk3 -->
-<!ENTITY epsilon  "&#949;"> <!-- greek small letter epsilon,
-                                    U+03B5 ISOgrk3 -->
-<!ENTITY zeta     "&#950;"> <!-- greek small letter zeta, U+03B6 ISOgrk3 -->
-<!ENTITY eta      "&#951;"> <!-- greek small letter eta, U+03B7 ISOgrk3 -->
-<!ENTITY theta    "&#952;"> <!-- greek small letter theta,
-                                    U+03B8 ISOgrk3 -->
-<!ENTITY iota     "&#953;"> <!-- greek small letter iota, U+03B9 ISOgrk3 -->
-<!ENTITY kappa    "&#954;"> <!-- greek small letter kappa,
-                                    U+03BA ISOgrk3 -->
-<!ENTITY lambda   "&#955;"> <!-- greek small letter lamda,
-                                    U+03BB ISOgrk3 -->
-<!ENTITY mu       "&#956;"> <!-- greek small letter mu, U+03BC ISOgrk3 -->
-<!ENTITY nu       "&#957;"> <!-- greek small letter nu, U+03BD ISOgrk3 -->
-<!ENTITY xi       "&#958;"> <!-- greek small letter xi, U+03BE ISOgrk3 -->
-<!ENTITY omicron  "&#959;"> <!-- greek small letter omicron, U+03BF NEW -->
-<!ENTITY pi       "&#960;"> <!-- greek small letter pi, U+03C0 ISOgrk3 -->
-<!ENTITY rho      "&#961;"> <!-- greek small letter rho, U+03C1 ISOgrk3 -->
-<!ENTITY sigmaf   "&#962;"> <!-- greek small letter final sigma,
-                                    U+03C2 ISOgrk3 -->
-<!ENTITY sigma    "&#963;"> <!-- greek small letter sigma,
-                                    U+03C3 ISOgrk3 -->
-<!ENTITY tau      "&#964;"> <!-- greek small letter tau, U+03C4 ISOgrk3 -->
-<!ENTITY upsilon  "&#965;"> <!-- greek small letter upsilon,
-                                    U+03C5 ISOgrk3 -->
-<!ENTITY phi      "&#966;"> <!-- greek small letter phi, U+03C6 ISOgrk3 -->
-<!ENTITY chi      "&#967;"> <!-- greek small letter chi, U+03C7 ISOgrk3 -->
-<!ENTITY psi      "&#968;"> <!-- greek small letter psi, U+03C8 ISOgrk3 -->
-<!ENTITY omega    "&#969;"> <!-- greek small letter omega,
-                                    U+03C9 ISOgrk3 -->
-<!ENTITY thetasym "&#977;"> <!-- greek theta symbol,
-                                    U+03D1 NEW -->
-<!ENTITY upsih    "&#978;"> <!-- greek upsilon with hook symbol,
-                                    U+03D2 NEW -->
-<!ENTITY piv      "&#982;"> <!-- greek pi symbol, U+03D6 ISOgrk3 -->
-
-<!-- General Punctuation -->
-<!ENTITY bull     "&#8226;"> <!-- bullet = black small circle,
-                                     U+2022 ISOpub  -->
-<!-- bullet is NOT the same as bullet operator, U+2219 -->
-<!ENTITY hellip   "&#8230;"> <!-- horizontal ellipsis = three dot leader,
-                                     U+2026 ISOpub  -->
-<!ENTITY prime    "&#8242;"> <!-- prime = minutes = feet, U+2032 ISOtech -->
-<!ENTITY Prime    "&#8243;"> <!-- double prime = seconds = inches,
-                                     U+2033 ISOtech -->
-<!ENTITY oline    "&#8254;"> <!-- overline = spacing overscore,
-                                     U+203E NEW -->
-<!ENTITY frasl    "&#8260;"> <!-- fraction slash, U+2044 NEW -->
-
-<!-- Letterlike Symbols -->
-<!ENTITY weierp   "&#8472;"> <!-- script capital P = power set
-                                     = Weierstrass p, U+2118 ISOamso -->
-<!ENTITY image    "&#8465;"> <!-- black-letter capital I = imaginary part,
-                                     U+2111 ISOamso -->
-<!ENTITY real     "&#8476;"> <!-- black-letter capital R = real part symbol,
-                                     U+211C ISOamso -->
-<!ENTITY trade    "&#8482;"> <!-- trade mark sign, U+2122 ISOnum -->
-<!ENTITY alefsym  "&#8501;"> <!-- alef symbol = first transfinite cardinal,
-                                     U+2135 NEW -->
-<!-- alef symbol is NOT the same as hebrew letter alef,
-     U+05D0 although the same glyph could be used to depict both characters -->
-
-<!-- Arrows -->
-<!ENTITY larr     "&#8592;"> <!-- leftwards arrow, U+2190 ISOnum -->
-<!ENTITY uarr     "&#8593;"> <!-- upwards arrow, U+2191 ISOnum-->
-<!ENTITY rarr     "&#8594;"> <!-- rightwards arrow, U+2192 ISOnum -->
-<!ENTITY darr     "&#8595;"> <!-- downwards arrow, U+2193 ISOnum -->
-<!ENTITY harr     "&#8596;"> <!-- left right arrow, U+2194 ISOamsa -->
-<!ENTITY crarr    "&#8629;"> <!-- downwards arrow with corner leftwards
-                                     = carriage return, U+21B5 NEW -->
-<!ENTITY lArr     "&#8656;"> <!-- leftwards double arrow, U+21D0 ISOtech -->
-<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
-    but also does not have any other character for that function. So lArr can
-    be used for 'is implied by' as ISOtech suggests -->
-<!ENTITY uArr     "&#8657;"> <!-- upwards double arrow, U+21D1 ISOamsa -->
-<!ENTITY rArr     "&#8658;"> <!-- rightwards double arrow,
-                                     U+21D2 ISOtech -->
-<!-- Unicode does not say this is the 'implies' character but does not have 
-     another character with this function so rArr can be used for 'implies'
-     as ISOtech suggests -->
-<!ENTITY dArr     "&#8659;"> <!-- downwards double arrow, U+21D3 ISOamsa -->
-<!ENTITY hArr     "&#8660;"> <!-- left right double arrow,
-                                     U+21D4 ISOamsa -->
-
-<!-- Mathematical Operators -->
-<!ENTITY forall   "&#8704;"> <!-- for all, U+2200 ISOtech -->
-<!ENTITY part     "&#8706;"> <!-- partial differential, U+2202 ISOtech  -->
-<!ENTITY exist    "&#8707;"> <!-- there exists, U+2203 ISOtech -->
-<!ENTITY empty    "&#8709;"> <!-- empty set = null set, U+2205 ISOamso -->
-<!ENTITY nabla    "&#8711;"> <!-- nabla = backward difference,
-                                     U+2207 ISOtech -->
-<!ENTITY isin     "&#8712;"> <!-- element of, U+2208 ISOtech -->
-<!ENTITY notin    "&#8713;"> <!-- not an element of, U+2209 ISOtech -->
-<!ENTITY ni       "&#8715;"> <!-- contains as member, U+220B ISOtech -->
-<!ENTITY prod     "&#8719;"> <!-- n-ary product = product sign,
-                                     U+220F ISOamsb -->
-<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
-     the same glyph might be used for both -->
-<!ENTITY sum      "&#8721;"> <!-- n-ary summation, U+2211 ISOamsb -->
-<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
-     though the same glyph might be used for both -->
-<!ENTITY minus    "&#8722;"> <!-- minus sign, U+2212 ISOtech -->
-<!ENTITY lowast   "&#8727;"> <!-- asterisk operator, U+2217 ISOtech -->
-<!ENTITY radic    "&#8730;"> <!-- square root = radical sign,
-                                     U+221A ISOtech -->
-<!ENTITY prop     "&#8733;"> <!-- proportional to, U+221D ISOtech -->
-<!ENTITY infin    "&#8734;"> <!-- infinity, U+221E ISOtech -->
-<!ENTITY ang      "&#8736;"> <!-- angle, U+2220 ISOamso -->
-<!ENTITY and      "&#8743;"> <!-- logical and = wedge, U+2227 ISOtech -->
-<!ENTITY or       "&#8744;"> <!-- logical or = vee, U+2228 ISOtech -->
-<!ENTITY cap      "&#8745;"> <!-- intersection = cap, U+2229 ISOtech -->
-<!ENTITY cup      "&#8746;"> <!-- union = cup, U+222A ISOtech -->
-<!ENTITY int      "&#8747;"> <!-- integral, U+222B ISOtech -->
-<!ENTITY there4   "&#8756;"> <!-- therefore, U+2234 ISOtech -->
-<!ENTITY sim      "&#8764;"> <!-- tilde operator = varies with = similar to,
-                                     U+223C ISOtech -->
-<!-- tilde operator is NOT the same character as the tilde, U+007E,
-     although the same glyph might be used to represent both  -->
-<!ENTITY cong     "&#8773;"> <!-- approximately equal to, U+2245 ISOtech -->
-<!ENTITY asymp    "&#8776;"> <!-- almost equal to = asymptotic to,
-                                     U+2248 ISOamsr -->
-<!ENTITY ne       "&#8800;"> <!-- not equal to, U+2260 ISOtech -->
-<!ENTITY equiv    "&#8801;"> <!-- identical to, U+2261 ISOtech -->
-<!ENTITY le       "&#8804;"> <!-- less-than or equal to, U+2264 ISOtech -->
-<!ENTITY ge       "&#8805;"> <!-- greater-than or equal to,
-                                     U+2265 ISOtech -->
-<!ENTITY sub      "&#8834;"> <!-- subset of, U+2282 ISOtech -->
-<!ENTITY sup      "&#8835;"> <!-- superset of, U+2283 ISOtech -->
-<!ENTITY nsub     "&#8836;"> <!-- not a subset of, U+2284 ISOamsn -->
-<!ENTITY sube     "&#8838;"> <!-- subset of or equal to, U+2286 ISOtech -->
-<!ENTITY supe     "&#8839;"> <!-- superset of or equal to,
-                                     U+2287 ISOtech -->
-<!ENTITY oplus    "&#8853;"> <!-- circled plus = direct sum,
-                                     U+2295 ISOamsb -->
-<!ENTITY otimes   "&#8855;"> <!-- circled times = vector product,
-                                     U+2297 ISOamsb -->
-<!ENTITY perp     "&#8869;"> <!-- up tack = orthogonal to = perpendicular,
-                                     U+22A5 ISOtech -->
-<!ENTITY sdot     "&#8901;"> <!-- dot operator, U+22C5 ISOamsb -->
-<!-- dot operator is NOT the same character as U+00B7 middle dot -->
-
-<!-- Miscellaneous Technical -->
-<!ENTITY lceil    "&#8968;"> <!-- left ceiling = APL upstile,
-                                     U+2308 ISOamsc  -->
-<!ENTITY rceil    "&#8969;"> <!-- right ceiling, U+2309 ISOamsc  -->
-<!ENTITY lfloor   "&#8970;"> <!-- left floor = APL downstile,
-                                     U+230A ISOamsc  -->
-<!ENTITY rfloor   "&#8971;"> <!-- right floor, U+230B ISOamsc  -->
-<!ENTITY lang     "&#9001;"> <!-- left-pointing angle bracket = bra,
-                                     U+2329 ISOtech -->
-<!-- lang is NOT the same character as U+003C 'less than sign' 
-     or U+2039 'single left-pointing angle quotation mark' -->
-<!ENTITY rang     "&#9002;"> <!-- right-pointing angle bracket = ket,
-                                     U+232A ISOtech -->
-<!-- rang is NOT the same character as U+003E 'greater than sign' 
-     or U+203A 'single right-pointing angle quotation mark' -->
-
-<!-- Geometric Shapes -->
-<!ENTITY loz      "&#9674;"> <!-- lozenge, U+25CA ISOpub -->
-
-<!-- Miscellaneous Symbols -->
-<!ENTITY spades   "&#9824;"> <!-- black spade suit, U+2660 ISOpub -->
-<!-- black here seems to mean filled as opposed to hollow -->
-<!ENTITY clubs    "&#9827;"> <!-- black club suit = shamrock,
-                                     U+2663 ISOpub -->
-<!ENTITY hearts   "&#9829;"> <!-- black heart suit = valentine,
-                                     U+2665 ISOpub -->
-<!ENTITY diams    "&#9830;"> <!-- black diamond suit, U+2666 ISOpub -->

+ 0 - 333
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-table-1.mod

@@ -1,333 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Table Module  .................................................. -->
-<!-- file: xhtml-table-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-table-1.mod,v 1.1 2010/07/29 13:42:48 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Tables 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-table-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Tables
-
-        table, caption, thead, tfoot, tbody, colgroup, col, tr, th, td
-
-     This module declares element types and attributes used to provide
-     table markup similar to HTML 4, including features that enable
-     better accessibility for non-visual user agents.
--->
-
-<!-- declare qualified element type names:
--->
-<!ENTITY % table.qname  "table" >
-<!ENTITY % caption.qname  "caption" >
-<!ENTITY % thead.qname  "thead" >
-<!ENTITY % tfoot.qname  "tfoot" >
-<!ENTITY % tbody.qname  "tbody" >
-<!ENTITY % colgroup.qname  "colgroup" >
-<!ENTITY % col.qname  "col" >
-<!ENTITY % tr.qname  "tr" >
-<!ENTITY % th.qname  "th" >
-<!ENTITY % td.qname  "td" >
-
-<!-- The frame attribute specifies which parts of the frame around
-     the table should be rendered. The values are not the same as
-     CALS to avoid a name clash with the valign attribute.
--->
-<!ENTITY % frame.attrib
-     "frame        ( void
-                   | above
-                   | below
-                   | hsides
-                   | lhs
-                   | rhs
-                   | vsides
-                   | box
-                   | border )               #IMPLIED"
->
-
-<!-- The rules attribute defines which rules to draw between cells:
-
-     If rules is absent then assume:
-
-       "none" if border is absent or border="0" otherwise "all"
--->
-<!ENTITY % rules.attrib
-     "rules        ( none
-                   | groups
-                   | rows
-                   | cols
-                   | all )                  #IMPLIED"
->
-
-<!-- horizontal alignment attributes for cell contents
--->
-<!ENTITY % CellHAlign.attrib
-     "align        ( left
-                   | center
-                   | right
-                   | justify
-                   | char )                 #IMPLIED
-      char         %Character.datatype;     #IMPLIED
-      charoff      %Length.datatype;        #IMPLIED"
->
-
-<!-- vertical alignment attribute for cell contents
--->
-<!ENTITY % CellVAlign.attrib
-     "valign       ( top
-                   | middle
-                   | bottom
-                   | baseline )             #IMPLIED"
->
-
-<!-- scope is simpler than axes attribute for common tables
--->
-<!ENTITY % scope.attrib
-     "scope        ( row
-                   | col
-                   | rowgroup
-                   | colgroup )             #IMPLIED"
->
-
-<!-- table: Table Element .............................. -->
-
-<!ENTITY % table.element  "INCLUDE" >
-<![%table.element;[
-<!ENTITY % table.content
-     "( %caption.qname;?, ( %col.qname;* | %colgroup.qname;* ),
-      (( %thead.qname;?, %tfoot.qname;?, %tbody.qname;+ ) | ( %tr.qname;+ )))"
->
-<!ELEMENT %table.qname;  %table.content; >
-<!-- end of table.element -->]]>
-
-<!ENTITY % table.attlist  "INCLUDE" >
-<![%table.attlist;[
-<!ATTLIST %table.qname;
-      %Common.attrib;
-      summary      %Text.datatype;          #IMPLIED
-      width        %Length.datatype;        #IMPLIED
-      border       %Pixels.datatype;        #IMPLIED
-      %frame.attrib;
-      %rules.attrib;
-      cellspacing  %Length.datatype;        #IMPLIED
-      cellpadding  %Length.datatype;        #IMPLIED
->
-<!-- end of table.attlist -->]]>
-
-<!-- caption: Table Caption ............................ -->
-
-<!ENTITY % caption.element  "INCLUDE" >
-<![%caption.element;[
-<!ENTITY % caption.content
-     "( #PCDATA | %Inline.mix; )*"
->
-<!ELEMENT %caption.qname;  %caption.content; >
-<!-- end of caption.element -->]]>
-
-<!ENTITY % caption.attlist  "INCLUDE" >
-<![%caption.attlist;[
-<!ATTLIST %caption.qname;
-      %Common.attrib;
->
-<!-- end of caption.attlist -->]]>
-
-<!-- thead: Table Header ............................... -->
-
-<!-- Use thead to duplicate headers when breaking table
-     across page boundaries, or for static headers when
-     tbody sections are rendered in scrolling panel.
--->
-
-<!ENTITY % thead.element  "INCLUDE" >
-<![%thead.element;[
-<!ENTITY % thead.content  "( %tr.qname; )+" >
-<!ELEMENT %thead.qname;  %thead.content; >
-<!-- end of thead.element -->]]>
-
-<!ENTITY % thead.attlist  "INCLUDE" >
-<![%thead.attlist;[
-<!ATTLIST %thead.qname;
-      %Common.attrib;
-      %CellHAlign.attrib;
-      %CellVAlign.attrib;
->
-<!-- end of thead.attlist -->]]>
-
-<!-- tfoot: Table Footer ............................... -->
-
-<!-- Use tfoot to duplicate footers when breaking table
-     across page boundaries, or for static footers when
-     tbody sections are rendered in scrolling panel.
--->
-
-<!ENTITY % tfoot.element  "INCLUDE" >
-<![%tfoot.element;[
-<!ENTITY % tfoot.content  "( %tr.qname; )+" >
-<!ELEMENT %tfoot.qname;  %tfoot.content; >
-<!-- end of tfoot.element -->]]>
-
-<!ENTITY % tfoot.attlist  "INCLUDE" >
-<![%tfoot.attlist;[
-<!ATTLIST %tfoot.qname;
-      %Common.attrib;
-      %CellHAlign.attrib;
-      %CellVAlign.attrib;
->
-<!-- end of tfoot.attlist -->]]>
-
-<!-- tbody: Table Body ................................. -->
-
-<!-- Use multiple tbody sections when rules are needed
-     between groups of table rows.
--->
-
-<!ENTITY % tbody.element  "INCLUDE" >
-<![%tbody.element;[
-<!ENTITY % tbody.content  "( %tr.qname; )+" >
-<!ELEMENT %tbody.qname;  %tbody.content; >
-<!-- end of tbody.element -->]]>
-
-<!ENTITY % tbody.attlist  "INCLUDE" >
-<![%tbody.attlist;[
-<!ATTLIST %tbody.qname;
-      %Common.attrib;
-      %CellHAlign.attrib;
-      %CellVAlign.attrib;
->
-<!-- end of tbody.attlist -->]]>
-
-<!-- colgroup: Table Column Group ...................... -->
-
-<!-- colgroup groups a set of col elements. It allows you
-     to group several semantically-related columns together.
--->
-
-<!ENTITY % colgroup.element  "INCLUDE" >
-<![%colgroup.element;[
-<!ENTITY % colgroup.content  "( %col.qname; )*" >
-<!ELEMENT %colgroup.qname;  %colgroup.content; >
-<!-- end of colgroup.element -->]]>
-
-<!ENTITY % colgroup.attlist  "INCLUDE" >
-<![%colgroup.attlist;[
-<!ATTLIST %colgroup.qname;
-      %Common.attrib;
-      span         %Number.datatype;        '1'
-      width        %MultiLength.datatype;   #IMPLIED
-      %CellHAlign.attrib;
-      %CellVAlign.attrib;
->
-<!-- end of colgroup.attlist -->]]>
-
-<!-- col: Table Column ................................. -->
-
-<!-- col elements define the alignment properties for
-     cells in one or more columns.
-
-     The width attribute specifies the width of the
-     columns, e.g.
-
-       width="64"        width in screen pixels
-       width="0.5*"      relative width of 0.5
-
-     The span attribute causes the attributes of one
-     col element to apply to more than one column.
--->
-
-<!ENTITY % col.element  "INCLUDE" >
-<![%col.element;[
-<!ENTITY % col.content  "EMPTY" >
-<!ELEMENT %col.qname;  %col.content; >
-<!-- end of col.element -->]]>
-
-<!ENTITY % col.attlist  "INCLUDE" >
-<![%col.attlist;[
-<!ATTLIST %col.qname;
-      %Common.attrib;
-      span         %Number.datatype;        '1'
-      width        %MultiLength.datatype;   #IMPLIED
-      %CellHAlign.attrib;
-      %CellVAlign.attrib;
->
-<!-- end of col.attlist -->]]>
-
-<!-- tr: Table Row ..................................... -->
-
-<!ENTITY % tr.element  "INCLUDE" >
-<![%tr.element;[
-<!ENTITY % tr.content  "( %th.qname; | %td.qname; )+" >
-<!ELEMENT %tr.qname;  %tr.content; >
-<!-- end of tr.element -->]]>
-
-<!ENTITY % tr.attlist  "INCLUDE" >
-<![%tr.attlist;[
-<!ATTLIST %tr.qname;
-      %Common.attrib;
-      %CellHAlign.attrib;
-      %CellVAlign.attrib;
->
-<!-- end of tr.attlist -->]]>
-
-<!-- th: Table Header Cell ............................. -->
-
-<!-- th is for header cells, td for data,
-     but for cells acting as both use td
--->
-
-<!ENTITY % th.element  "INCLUDE" >
-<![%th.element;[
-<!ENTITY % th.content
-     "( #PCDATA | %Flow.mix; )*"
->
-<!ELEMENT %th.qname;  %th.content; >
-<!-- end of th.element -->]]>
-
-<!ENTITY % th.attlist  "INCLUDE" >
-<![%th.attlist;[
-<!ATTLIST %th.qname;
-      %Common.attrib;
-      abbr         %Text.datatype;          #IMPLIED
-      axis         CDATA                    #IMPLIED
-      headers      IDREFS                   #IMPLIED
-      %scope.attrib;
-      rowspan      %Number.datatype;        '1'
-      colspan      %Number.datatype;        '1'
-      %CellHAlign.attrib;
-      %CellVAlign.attrib;
->
-<!-- end of th.attlist -->]]>
-
-<!-- td: Table Data Cell ............................... -->
-
-<!ENTITY % td.element  "INCLUDE" >
-<![%td.element;[
-<!ENTITY % td.content
-     "( #PCDATA | %Flow.mix; )*"
->
-<!ELEMENT %td.qname;  %td.content; >
-<!-- end of td.element -->]]>
-
-<!ENTITY % td.attlist  "INCLUDE" >
-<![%td.attlist;[
-<!ATTLIST %td.qname;
-      %Common.attrib;
-      abbr         %Text.datatype;          #IMPLIED
-      axis         CDATA                    #IMPLIED
-      headers      IDREFS                   #IMPLIED
-      %scope.attrib;
-      rowspan      %Number.datatype;        '1'
-      colspan      %Number.datatype;        '1'
-      %CellHAlign.attrib;
-      %CellVAlign.attrib;
->
-<!-- end of td.attlist -->]]>
-
-<!-- end of xhtml-table-1.mod -->

+ 0 - 52
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml-text-1.mod

@@ -1,52 +0,0 @@
-<!-- ...................................................................... -->
-<!-- XHTML Text Module  ................................................... -->
-<!-- file: xhtml-text-1.mod
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
-     Revision: $Id: xhtml-text-1.mod,v 1.1 2010/07/29 13:42:48 bertails Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ELEMENTS XHTML Text 1.0//EN"
-       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-text-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- Textual Content
-
-     The Text module includes declarations for all core
-     text container elements and their attributes.
--->
-
-<!ENTITY % xhtml-inlstruct.module "INCLUDE" >
-<![%xhtml-inlstruct.module;[
-<!ENTITY % xhtml-inlstruct.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Inline Structural 1.0//EN"
-            "xhtml-inlstruct-1.mod" >
-%xhtml-inlstruct.mod;]]>
-
-<!ENTITY % xhtml-inlphras.module "INCLUDE" >
-<![%xhtml-inlphras.module;[
-<!ENTITY % xhtml-inlphras.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Inline Phrasal 1.0//EN"
-            "xhtml-inlphras-1.mod" >
-%xhtml-inlphras.mod;]]>
-
-<!ENTITY % xhtml-blkstruct.module "INCLUDE" >
-<![%xhtml-blkstruct.module;[
-<!ENTITY % xhtml-blkstruct.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Block Structural 1.0//EN"
-            "xhtml-blkstruct-1.mod" >
-%xhtml-blkstruct.mod;]]>
-
-<!ENTITY % xhtml-blkphras.module "INCLUDE" >
-<![%xhtml-blkphras.module;[
-<!ENTITY % xhtml-blkphras.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Block Phrasal 1.0//EN"
-            "xhtml-blkphras-1.mod" >
-%xhtml-blkphras.mod;]]>
-
-<!-- end of xhtml-text-1.mod -->

+ 0 - 252
book/src/main/resources/dtd/www.w3.org/TR/xhtml-modularization/DTD/xhtml11-model-1.mod

@@ -1,252 +0,0 @@
-<!-- ....................................................................... -->
-<!-- XHTML 1.1 Document Model Module  ...................................... -->
-<!-- file: xhtml11-model-1.mod
-
-     This is XHTML 1.1, a reformulation of HTML as a modular XML application.
-     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
-     Revision: $Id: xhtml11-model-1.mod,v 1.13 2001/05/29 16:37:01 ahby Exp $ SMI
-
-     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-       PUBLIC "-//W3C//ENTITIES XHTML 1.1 Document Model 1.0//EN"
-       SYSTEM "http://www.w3.org/TR/xhtml11/DTD/xhtml11-model-1.mod"
-
-     Revisions:
-     (none)
-     ....................................................................... -->
-
-<!-- XHTML 1.1 Document Model
-
-     This module describes the groupings of elements that make up
-     common content models for XHTML elements.
-
-     XHTML has three basic content models:
-
-         %Inline.mix;  character-level elements
-         %Block.mix;   block-like elements, eg., paragraphs and lists
-         %Flow.mix;    any block or inline elements
-
-     Any parameter entities declared in this module may be used
-     to create element content models, but the above three are
-     considered 'global' (insofar as that term applies here).
-
-     The reserved word '#PCDATA' (indicating a text string) is now
-     included explicitly with each element declaration that is
-     declared as mixed content, as XML requires that this token
-     occur first in a content model specification.
--->
-<!-- Extending the Model
-
-     While in some cases this module may need to be rewritten to
-     accommodate changes to the document model, minor extensions
-     may be accomplished by redeclaring any of the three *.extra;
-     parameter entities to contain extension element types as follows:
-
-         %Misc.extra;    whose parent may be any block or
-                         inline element.
-
-         %Inline.extra;  whose parent may be any inline element.
-
-         %Block.extra;   whose parent may be any block element.
-
-     If used, these parameter entities must be an OR-separated
-     list beginning with an OR separator ("|"), eg., "| a | b | c"
-
-     All block and inline *.class parameter entities not part
-     of the *struct.class classes begin with "| " to allow for
-     exclusion from mixes.
--->
-
-<!-- ..............  Optional Elements in head  .................. -->
-
-<!ENTITY % HeadOpts.mix
-     "( %script.qname; | %style.qname; | %meta.qname;
-      | %link.qname; | %object.qname; )*"
->
-
-<!-- .................  Miscellaneous Elements  .................. -->
-
-<!-- ins and del are used to denote editing changes
--->
-<!ENTITY % Edit.class "| %ins.qname; | %del.qname;" >
-
-<!-- script and noscript are used to contain scripts
-     and alternative content
--->
-<!ENTITY % Script.class "| %script.qname; | %noscript.qname;" >
-
-<!ENTITY % Misc.extra "" >
-
-<!-- These elements are neither block nor inline, and can
-     essentially be used anywhere in the document body.
--->
-<!ENTITY % Misc.class
-     "%Edit.class;
-      %Script.class;
-      %Misc.extra;"
->
-
-<!-- ....................  Inline Elements  ...................... -->
-
-<!ENTITY % InlStruct.class "%br.qname; | %span.qname;" >
-
-<!ENTITY % InlPhras.class
-     "| %em.qname; | %strong.qname; | %dfn.qname; | %code.qname;
-      | %samp.qname; | %kbd.qname; | %var.qname; | %cite.qname;
-      | %abbr.qname; | %acronym.qname; | %q.qname;" >
-
-<!ENTITY % InlPres.class
-     "| %tt.qname; | %i.qname; | %b.qname; | %big.qname;
-      | %small.qname; | %sub.qname; | %sup.qname;" >
-
-<!ENTITY % I18n.class "| %bdo.qname;" >
-
-<!ENTITY % Anchor.class "| %a.qname;" >
-
-<!ENTITY % InlSpecial.class
-     "| %img.qname; | %map.qname;
-      | %object.qname;" >
-
-<!ENTITY % InlForm.class
-     "| %input.qname; | %select.qname; | %textarea.qname;
-      | %label.qname; | %button.qname;" >
-
-<!ENTITY % Inline.extra "" >
-
-<!ENTITY % Ruby.class "| %ruby.qname;" >
-
-<!-- %Inline.class; includes all inline elements,
-     used as a component in mixes
--->
-<!ENTITY % Inline.class
-     "%InlStruct.class;
-      %InlPhras.class;
-      %InlPres.class;
-      %I18n.class;
-      %Anchor.class;
-      %InlSpecial.class;
-      %InlForm.class;
-      %Ruby.class;
-      %Inline.extra;"
->
-
-<!-- %InlNoRuby.class; includes all inline elements
-     except ruby, used as a component in mixes
--->
-<!ENTITY % InlNoRuby.class
-     "%InlStruct.class;
-      %InlPhras.class;
-      %InlPres.class;
-      %I18n.class;
-      %Anchor.class;
-      %InlSpecial.class;
-      %InlForm.class;
-      %Inline.extra;"
->
-
-<!-- %NoRuby.content; includes all inlines except ruby
--->
-<!ENTITY % NoRuby.content
-     "( #PCDATA
-      | %InlNoRuby.class;
-      %Misc.class; )*"
->
-
-<!-- %InlNoAnchor.class; includes all non-anchor inlines,
-     used as a component in mixes
--->
-<!ENTITY % InlNoAnchor.class
-     "%InlStruct.class;
-      %InlPhras.class;
-      %InlPres.class;
-      %I18n.class;
-      %InlSpecial.class;
-      %InlForm.class;
-      %Ruby.class;
-      %Inline.extra;"
->
-
-<!-- %InlNoAnchor.mix; includes all non-anchor inlines
--->
-<!ENTITY % InlNoAnchor.mix
-     "%InlNoAnchor.class;
-      %Misc.class;"
->
-
-<!-- %Inline.mix; includes all inline elements, including %Misc.class;
--->
-<!ENTITY % Inline.mix
-     "%Inline.class;
-      %Misc.class;"
->
-
-<!-- .....................  Block Elements  ...................... -->
-
-<!-- In the HTML 4.0 DTD, heading and list elements were included
-     in the %block; parameter entity. The %Heading.class; and
-     %List.class; parameter entities must now be included explicitly
-     on element declarations where desired.
--->
-
-<!ENTITY % Heading.class
-     "%h1.qname; | %h2.qname; | %h3.qname;
-      | %h4.qname; | %h5.qname; | %h6.qname;" >
-
-<!ENTITY % List.class "%ul.qname; | %ol.qname; | %dl.qname;" >
-
-<!ENTITY % Table.class "| %table.qname;" >
-
-<!ENTITY % Form.class  "| %form.qname;" >
-
-<!ENTITY % Fieldset.class  "| %fieldset.qname;" >
-
-<!ENTITY % BlkStruct.class "%p.qname; | %div.qname;" >
-
-<!ENTITY % BlkPhras.class
-     "| %pre.qname; | %blockquote.qname; | %address.qname;" >
-
-<!ENTITY % BlkPres.class "| %hr.qname;" >
-
-<!ENTITY % BlkSpecial.class
-     "%Table.class;
-      %Form.class;
-      %Fieldset.class;"
->
-
-<!ENTITY % Block.extra "" >
-
-<!-- %Block.class; includes all block elements,
-     used as an component in mixes
--->
-<!ENTITY % Block.class
-     "%BlkStruct.class;
-      %BlkPhras.class;
-      %BlkPres.class;
-      %BlkSpecial.class;
-      %Block.extra;"
->
-
-<!-- %Block.mix; includes all block elements plus %Misc.class;
--->
-<!ENTITY % Block.mix
-     "%Heading.class;
-      | %List.class;
-      | %Block.class;
-      %Misc.class;"
->
-
-<!-- ................  All Content Elements  .................. -->
-
-<!-- %Flow.mix; includes all text content, block and inline
--->
-<!ENTITY % Flow.mix
-     "%Heading.class;
-      | %List.class;
-      | %Block.class;
-      | %Inline.class;
-      %Misc.class;"
->
-
-<!-- end of xhtml11-model-1.mod -->
-
-

+ 0 - 196
book/src/main/resources/dtd/www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent

@@ -1,196 +0,0 @@
-<!-- Portions (C) International Organization for Standardization 1986
-     Permission to copy in any form is granted for use with
-     conforming SGML systems and applications as defined in
-     ISO 8879, provided this notice is included in all copies.
--->
-<!-- Character entity set. Typical invocation:
-    <!ENTITY % HTMLlat1 PUBLIC
-       "-//W3C//ENTITIES Latin 1 for XHTML//EN"
-       "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
-    %HTMLlat1;
--->
-
-<!ENTITY nbsp   "&#160;"> <!-- no-break space = non-breaking space,
-                                  U+00A0 ISOnum -->
-<!ENTITY iexcl  "&#161;"> <!-- inverted exclamation mark, U+00A1 ISOnum -->
-<!ENTITY cent   "&#162;"> <!-- cent sign, U+00A2 ISOnum -->
-<!ENTITY pound  "&#163;"> <!-- pound sign, U+00A3 ISOnum -->
-<!ENTITY curren "&#164;"> <!-- currency sign, U+00A4 ISOnum -->
-<!ENTITY yen    "&#165;"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->
-<!ENTITY brvbar "&#166;"> <!-- broken bar = broken vertical bar,
-                                  U+00A6 ISOnum -->
-<!ENTITY sect   "&#167;"> <!-- section sign, U+00A7 ISOnum -->
-<!ENTITY uml    "&#168;"> <!-- diaeresis = spacing diaeresis,
-                                  U+00A8 ISOdia -->
-<!ENTITY copy   "&#169;"> <!-- copyright sign, U+00A9 ISOnum -->
-<!ENTITY ordf   "&#170;"> <!-- feminine ordinal indicator, U+00AA ISOnum -->
-<!ENTITY laquo  "&#171;"> <!-- left-pointing double angle quotation mark
-                                  = left pointing guillemet, U+00AB ISOnum -->
-<!ENTITY not    "&#172;"> <!-- not sign = angled dash,
-                                  U+00AC ISOnum -->
-<!ENTITY shy    "&#173;"> <!-- soft hyphen = discretionary hyphen,
-                                  U+00AD ISOnum -->
-<!ENTITY reg    "&#174;"> <!-- registered sign = registered trade mark sign,
-                                  U+00AE ISOnum -->
-<!ENTITY macr   "&#175;"> <!-- macron = spacing macron = overline
-                                  = APL overbar, U+00AF ISOdia -->
-<!ENTITY deg    "&#176;"> <!-- degree sign, U+00B0 ISOnum -->
-<!ENTITY plusmn "&#177;"> <!-- plus-minus sign = plus-or-minus sign,
-                                  U+00B1 ISOnum -->
-<!ENTITY sup2   "&#178;"> <!-- superscript two = superscript digit two
-                                  = squared, U+00B2 ISOnum -->
-<!ENTITY sup3   "&#179;"> <!-- superscript three = superscript digit three
-                                  = cubed, U+00B3 ISOnum -->
-<!ENTITY acute  "&#180;"> <!-- acute accent = spacing acute,
-                                  U+00B4 ISOdia -->
-<!ENTITY micro  "&#181;"> <!-- micro sign, U+00B5 ISOnum -->
-<!ENTITY para   "&#182;"> <!-- pilcrow sign = paragraph sign,
-                                  U+00B6 ISOnum -->
-<!ENTITY middot "&#183;"> <!-- middle dot = Georgian comma
-                                  = Greek middle dot, U+00B7 ISOnum -->
-<!ENTITY cedil  "&#184;"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
-<!ENTITY sup1   "&#185;"> <!-- superscript one = superscript digit one,
-                                  U+00B9 ISOnum -->
-<!ENTITY ordm   "&#186;"> <!-- masculine ordinal indicator,
-                                  U+00BA ISOnum -->
-<!ENTITY raquo  "&#187;"> <!-- right-pointing double angle quotation mark
-                                  = right pointing guillemet, U+00BB ISOnum -->
-<!ENTITY frac14 "&#188;"> <!-- vulgar fraction one quarter
-                                  = fraction one quarter, U+00BC ISOnum -->
-<!ENTITY frac12 "&#189;"> <!-- vulgar fraction one half
-                                  = fraction one half, U+00BD ISOnum -->
-<!ENTITY frac34 "&#190;"> <!-- vulgar fraction three quarters
-                                  = fraction three quarters, U+00BE ISOnum -->
-<!ENTITY iquest "&#191;"> <!-- inverted question mark
-                                  = turned question mark, U+00BF ISOnum -->
-<!ENTITY Agrave "&#192;"> <!-- latin capital letter A with grave
-                                  = latin capital letter A grave,
-                                  U+00C0 ISOlat1 -->
-<!ENTITY Aacute "&#193;"> <!-- latin capital letter A with acute,
-                                  U+00C1 ISOlat1 -->
-<!ENTITY Acirc  "&#194;"> <!-- latin capital letter A with circumflex,
-                                  U+00C2 ISOlat1 -->
-<!ENTITY Atilde "&#195;"> <!-- latin capital letter A with tilde,
-                                  U+00C3 ISOlat1 -->
-<!ENTITY Auml   "&#196;"> <!-- latin capital letter A with diaeresis,
-                                  U+00C4 ISOlat1 -->
-<!ENTITY Aring  "&#197;"> <!-- latin capital letter A with ring above
-                                  = latin capital letter A ring,
-                                  U+00C5 ISOlat1 -->
-<!ENTITY AElig  "&#198;"> <!-- latin capital letter AE
-                                  = latin capital ligature AE,
-                                  U+00C6 ISOlat1 -->
-<!ENTITY Ccedil "&#199;"> <!-- latin capital letter C with cedilla,
-                                  U+00C7 ISOlat1 -->
-<!ENTITY Egrave "&#200;"> <!-- latin capital letter E with grave,
-                                  U+00C8 ISOlat1 -->
-<!ENTITY Eacute "&#201;"> <!-- latin capital letter E with acute,
-                                  U+00C9 ISOlat1 -->
-<!ENTITY Ecirc  "&#202;"> <!-- latin capital letter E with circumflex,
-                                  U+00CA ISOlat1 -->
-<!ENTITY Euml   "&#203;"> <!-- latin capital letter E with diaeresis,
-                                  U+00CB ISOlat1 -->
-<!ENTITY Igrave "&#204;"> <!-- latin capital letter I with grave,
-                                  U+00CC ISOlat1 -->
-<!ENTITY Iacute "&#205;"> <!-- latin capital letter I with acute,
-                                  U+00CD ISOlat1 -->
-<!ENTITY Icirc  "&#206;"> <!-- latin capital letter I with circumflex,
-                                  U+00CE ISOlat1 -->
-<!ENTITY Iuml   "&#207;"> <!-- latin capital letter I with diaeresis,
-                                  U+00CF ISOlat1 -->
-<!ENTITY ETH    "&#208;"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
-<!ENTITY Ntilde "&#209;"> <!-- latin capital letter N with tilde,
-                                  U+00D1 ISOlat1 -->
-<!ENTITY Ograve "&#210;"> <!-- latin capital letter O with grave,
-                                  U+00D2 ISOlat1 -->
-<!ENTITY Oacute "&#211;"> <!-- latin capital letter O with acute,
-                                  U+00D3 ISOlat1 -->
-<!ENTITY Ocirc  "&#212;"> <!-- latin capital letter O with circumflex,
-                                  U+00D4 ISOlat1 -->
-<!ENTITY Otilde "&#213;"> <!-- latin capital letter O with tilde,
-                                  U+00D5 ISOlat1 -->
-<!ENTITY Ouml   "&#214;"> <!-- latin capital letter O with diaeresis,
-                                  U+00D6 ISOlat1 -->
-<!ENTITY times  "&#215;"> <!-- multiplication sign, U+00D7 ISOnum -->
-<!ENTITY Oslash "&#216;"> <!-- latin capital letter O with stroke
-                                  = latin capital letter O slash,
-                                  U+00D8 ISOlat1 -->
-<!ENTITY Ugrave "&#217;"> <!-- latin capital letter U with grave,
-                                  U+00D9 ISOlat1 -->
-<!ENTITY Uacute "&#218;"> <!-- latin capital letter U with acute,
-                                  U+00DA ISOlat1 -->
-<!ENTITY Ucirc  "&#219;"> <!-- latin capital letter U with circumflex,
-                                  U+00DB ISOlat1 -->
-<!ENTITY Uuml   "&#220;"> <!-- latin capital letter U with diaeresis,
-                                  U+00DC ISOlat1 -->
-<!ENTITY Yacute "&#221;"> <!-- latin capital letter Y with acute,
-                                  U+00DD ISOlat1 -->
-<!ENTITY THORN  "&#222;"> <!-- latin capital letter THORN,
-                                  U+00DE ISOlat1 -->
-<!ENTITY szlig  "&#223;"> <!-- latin small letter sharp s = ess-zed,
-                                  U+00DF ISOlat1 -->
-<!ENTITY agrave "&#224;"> <!-- latin small letter a with grave
-                                  = latin small letter a grave,
-                                  U+00E0 ISOlat1 -->
-<!ENTITY aacute "&#225;"> <!-- latin small letter a with acute,
-                                  U+00E1 ISOlat1 -->
-<!ENTITY acirc  "&#226;"> <!-- latin small letter a with circumflex,
-                                  U+00E2 ISOlat1 -->
-<!ENTITY atilde "&#227;"> <!-- latin small letter a with tilde,
-                                  U+00E3 ISOlat1 -->
-<!ENTITY auml   "&#228;"> <!-- latin small letter a with diaeresis,
-                                  U+00E4 ISOlat1 -->
-<!ENTITY aring  "&#229;"> <!-- latin small letter a with ring above
-                                  = latin small letter a ring,
-                                  U+00E5 ISOlat1 -->
-<!ENTITY aelig  "&#230;"> <!-- latin small letter ae
-                                  = latin small ligature ae, U+00E6 ISOlat1 -->
-<!ENTITY ccedil "&#231;"> <!-- latin small letter c with cedilla,
-                                  U+00E7 ISOlat1 -->
-<!ENTITY egrave "&#232;"> <!-- latin small letter e with grave,
-                                  U+00E8 ISOlat1 -->
-<!ENTITY eacute "&#233;"> <!-- latin small letter e with acute,
-                                  U+00E9 ISOlat1 -->
-<!ENTITY ecirc  "&#234;"> <!-- latin small letter e with circumflex,
-                                  U+00EA ISOlat1 -->
-<!ENTITY euml   "&#235;"> <!-- latin small letter e with diaeresis,
-                                  U+00EB ISOlat1 -->
-<!ENTITY igrave "&#236;"> <!-- latin small letter i with grave,
-                                  U+00EC ISOlat1 -->
-<!ENTITY iacute "&#237;"> <!-- latin small letter i with acute,
-                                  U+00ED ISOlat1 -->
-<!ENTITY icirc  "&#238;"> <!-- latin small letter i with circumflex,
-                                  U+00EE ISOlat1 -->
-<!ENTITY iuml   "&#239;"> <!-- latin small letter i with diaeresis,
-                                  U+00EF ISOlat1 -->
-<!ENTITY eth    "&#240;"> <!-- latin small letter eth, U+00F0 ISOlat1 -->
-<!ENTITY ntilde "&#241;"> <!-- latin small letter n with tilde,
-                                  U+00F1 ISOlat1 -->
-<!ENTITY ograve "&#242;"> <!-- latin small letter o with grave,
-                                  U+00F2 ISOlat1 -->
-<!ENTITY oacute "&#243;"> <!-- latin small letter o with acute,
-                                  U+00F3 ISOlat1 -->
-<!ENTITY ocirc  "&#244;"> <!-- latin small letter o with circumflex,
-                                  U+00F4 ISOlat1 -->
-<!ENTITY otilde "&#245;"> <!-- latin small letter o with tilde,
-                                  U+00F5 ISOlat1 -->
-<!ENTITY ouml   "&#246;"> <!-- latin small letter o with diaeresis,
-                                  U+00F6 ISOlat1 -->
-<!ENTITY divide "&#247;"> <!-- division sign, U+00F7 ISOnum -->
-<!ENTITY oslash "&#248;"> <!-- latin small letter o with stroke,
-                                  = latin small letter o slash,
-                                  U+00F8 ISOlat1 -->
-<!ENTITY ugrave "&#249;"> <!-- latin small letter u with grave,
-                                  U+00F9 ISOlat1 -->
-<!ENTITY uacute "&#250;"> <!-- latin small letter u with acute,
-                                  U+00FA ISOlat1 -->
-<!ENTITY ucirc  "&#251;"> <!-- latin small letter u with circumflex,
-                                  U+00FB ISOlat1 -->
-<!ENTITY uuml   "&#252;"> <!-- latin small letter u with diaeresis,
-                                  U+00FC ISOlat1 -->
-<!ENTITY yacute "&#253;"> <!-- latin small letter y with acute,
-                                  U+00FD ISOlat1 -->
-<!ENTITY thorn  "&#254;"> <!-- latin small letter thorn,
-                                  U+00FE ISOlat1 -->
-<!ENTITY yuml   "&#255;"> <!-- latin small letter y with diaeresis,
-                                  U+00FF ISOlat1 -->

+ 0 - 80
book/src/main/resources/dtd/www.w3.org/TR/xhtml1/DTD/xhtml-special.ent

@@ -1,80 +0,0 @@
-<!-- Special characters for XHTML -->
-
-<!-- Character entity set. Typical invocation:
-     <!ENTITY % HTMLspecial PUBLIC
-        "-//W3C//ENTITIES Special for XHTML//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
-     %HTMLspecial;
--->
-
-<!-- Portions (C) International Organization for Standardization 1986:
-     Permission to copy in any form is granted for use with
-     conforming SGML systems and applications as defined in
-     ISO 8879, provided this notice is included in all copies.
--->
-
-<!-- Relevant ISO entity set is given unless names are newly introduced.
-     New names (i.e., not in ISO 8879 list) do not clash with any
-     existing ISO 8879 entity names. ISO 10646 character numbers
-     are given for each character, in hex. values are decimal
-     conversions of the ISO 10646 values and refer to the document
-     character set. Names are Unicode names. 
--->
-
-<!-- C0 Controls and Basic Latin -->
-<!ENTITY quot    "&#34;"> <!--  quotation mark, U+0022 ISOnum -->
-<!ENTITY amp     "&#38;#38;"> <!--  ampersand, U+0026 ISOnum -->
-<!ENTITY lt      "&#38;#60;"> <!--  less-than sign, U+003C ISOnum -->
-<!ENTITY gt      "&#62;"> <!--  greater-than sign, U+003E ISOnum -->
-<!ENTITY apos	 "&#39;"> <!--  apostrophe = APL quote, U+0027 ISOnum -->
-
-<!-- Latin Extended-A -->
-<!ENTITY OElig   "&#338;"> <!--  latin capital ligature OE,
-                                    U+0152 ISOlat2 -->
-<!ENTITY oelig   "&#339;"> <!--  latin small ligature oe, U+0153 ISOlat2 -->
-<!-- ligature is a misnomer, this is a separate character in some languages -->
-<!ENTITY Scaron  "&#352;"> <!--  latin capital letter S with caron,
-                                    U+0160 ISOlat2 -->
-<!ENTITY scaron  "&#353;"> <!--  latin small letter s with caron,
-                                    U+0161 ISOlat2 -->
-<!ENTITY Yuml    "&#376;"> <!--  latin capital letter Y with diaeresis,
-                                    U+0178 ISOlat2 -->
-
-<!-- Spacing Modifier Letters -->
-<!ENTITY circ    "&#710;"> <!--  modifier letter circumflex accent,
-                                    U+02C6 ISOpub -->
-<!ENTITY tilde   "&#732;"> <!--  small tilde, U+02DC ISOdia -->
-
-<!-- General Punctuation -->
-<!ENTITY ensp    "&#8194;"> <!-- en space, U+2002 ISOpub -->
-<!ENTITY emsp    "&#8195;"> <!-- em space, U+2003 ISOpub -->
-<!ENTITY thinsp  "&#8201;"> <!-- thin space, U+2009 ISOpub -->
-<!ENTITY zwnj    "&#8204;"> <!-- zero width non-joiner,
-                                    U+200C NEW RFC 2070 -->
-<!ENTITY zwj     "&#8205;"> <!-- zero width joiner, U+200D NEW RFC 2070 -->
-<!ENTITY lrm     "&#8206;"> <!-- left-to-right mark, U+200E NEW RFC 2070 -->
-<!ENTITY rlm     "&#8207;"> <!-- right-to-left mark, U+200F NEW RFC 2070 -->
-<!ENTITY ndash   "&#8211;"> <!-- en dash, U+2013 ISOpub -->
-<!ENTITY mdash   "&#8212;"> <!-- em dash, U+2014 ISOpub -->
-<!ENTITY lsquo   "&#8216;"> <!-- left single quotation mark,
-                                    U+2018 ISOnum -->
-<!ENTITY rsquo   "&#8217;"> <!-- right single quotation mark,
-                                    U+2019 ISOnum -->
-<!ENTITY sbquo   "&#8218;"> <!-- single low-9 quotation mark, U+201A NEW -->
-<!ENTITY ldquo   "&#8220;"> <!-- left double quotation mark,
-                                    U+201C ISOnum -->
-<!ENTITY rdquo   "&#8221;"> <!-- right double quotation mark,
-                                    U+201D ISOnum -->
-<!ENTITY bdquo   "&#8222;"> <!-- double low-9 quotation mark, U+201E NEW -->
-<!ENTITY dagger  "&#8224;"> <!-- dagger, U+2020 ISOpub -->
-<!ENTITY Dagger  "&#8225;"> <!-- double dagger, U+2021 ISOpub -->
-<!ENTITY permil  "&#8240;"> <!-- per mille sign, U+2030 ISOtech -->
-<!ENTITY lsaquo  "&#8249;"> <!-- single left-pointing angle quotation mark,
-                                    U+2039 ISO proposed -->
-<!-- lsaquo is proposed but not yet ISO standardized -->
-<!ENTITY rsaquo  "&#8250;"> <!-- single right-pointing angle quotation mark,
-                                    U+203A ISO proposed -->
-<!-- rsaquo is proposed but not yet ISO standardized -->
-
-<!-- Currency Symbols -->
-<!ENTITY euro   "&#8364;"> <!--  euro sign, U+20AC NEW -->

+ 0 - 237
book/src/main/resources/dtd/www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent

@@ -1,237 +0,0 @@
-<!-- Mathematical, Greek and Symbolic characters for XHTML -->
-
-<!-- Character entity set. Typical invocation:
-     <!ENTITY % HTMLsymbol PUBLIC
-        "-//W3C//ENTITIES Symbols for XHTML//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
-     %HTMLsymbol;
--->
-
-<!-- Portions (C) International Organization for Standardization 1986:
-     Permission to copy in any form is granted for use with
-     conforming SGML systems and applications as defined in
-     ISO 8879, provided this notice is included in all copies.
--->
-
-<!-- Relevant ISO entity set is given unless names are newly introduced.
-     New names (i.e., not in ISO 8879 list) do not clash with any
-     existing ISO 8879 entity names. ISO 10646 character numbers
-     are given for each character, in hex. values are decimal
-     conversions of the ISO 10646 values and refer to the document
-     character set. Names are Unicode names. 
--->
-
-<!-- Latin Extended-B -->
-<!ENTITY fnof     "&#402;"> <!-- latin small letter f with hook = function
-                                    = florin, U+0192 ISOtech -->
-
-<!-- Greek -->
-<!ENTITY Alpha    "&#913;"> <!-- greek capital letter alpha, U+0391 -->
-<!ENTITY Beta     "&#914;"> <!-- greek capital letter beta, U+0392 -->
-<!ENTITY Gamma    "&#915;"> <!-- greek capital letter gamma,
-                                    U+0393 ISOgrk3 -->
-<!ENTITY Delta    "&#916;"> <!-- greek capital letter delta,
-                                    U+0394 ISOgrk3 -->
-<!ENTITY Epsilon  "&#917;"> <!-- greek capital letter epsilon, U+0395 -->
-<!ENTITY Zeta     "&#918;"> <!-- greek capital letter zeta, U+0396 -->
-<!ENTITY Eta      "&#919;"> <!-- greek capital letter eta, U+0397 -->
-<!ENTITY Theta    "&#920;"> <!-- greek capital letter theta,
-                                    U+0398 ISOgrk3 -->
-<!ENTITY Iota     "&#921;"> <!-- greek capital letter iota, U+0399 -->
-<!ENTITY Kappa    "&#922;"> <!-- greek capital letter kappa, U+039A -->
-<!ENTITY Lambda   "&#923;"> <!-- greek capital letter lamda,
-                                    U+039B ISOgrk3 -->
-<!ENTITY Mu       "&#924;"> <!-- greek capital letter mu, U+039C -->
-<!ENTITY Nu       "&#925;"> <!-- greek capital letter nu, U+039D -->
-<!ENTITY Xi       "&#926;"> <!-- greek capital letter xi, U+039E ISOgrk3 -->
-<!ENTITY Omicron  "&#927;"> <!-- greek capital letter omicron, U+039F -->
-<!ENTITY Pi       "&#928;"> <!-- greek capital letter pi, U+03A0 ISOgrk3 -->
-<!ENTITY Rho      "&#929;"> <!-- greek capital letter rho, U+03A1 -->
-<!-- there is no Sigmaf, and no U+03A2 character either -->
-<!ENTITY Sigma    "&#931;"> <!-- greek capital letter sigma,
-                                    U+03A3 ISOgrk3 -->
-<!ENTITY Tau      "&#932;"> <!-- greek capital letter tau, U+03A4 -->
-<!ENTITY Upsilon  "&#933;"> <!-- greek capital letter upsilon,
-                                    U+03A5 ISOgrk3 -->
-<!ENTITY Phi      "&#934;"> <!-- greek capital letter phi,
-                                    U+03A6 ISOgrk3 -->
-<!ENTITY Chi      "&#935;"> <!-- greek capital letter chi, U+03A7 -->
-<!ENTITY Psi      "&#936;"> <!-- greek capital letter psi,
-                                    U+03A8 ISOgrk3 -->
-<!ENTITY Omega    "&#937;"> <!-- greek capital letter omega,
-                                    U+03A9 ISOgrk3 -->
-
-<!ENTITY alpha    "&#945;"> <!-- greek small letter alpha,
-                                    U+03B1 ISOgrk3 -->
-<!ENTITY beta     "&#946;"> <!-- greek small letter beta, U+03B2 ISOgrk3 -->
-<!ENTITY gamma    "&#947;"> <!-- greek small letter gamma,
-                                    U+03B3 ISOgrk3 -->
-<!ENTITY delta    "&#948;"> <!-- greek small letter delta,
-                                    U+03B4 ISOgrk3 -->
-<!ENTITY epsilon  "&#949;"> <!-- greek small letter epsilon,
-                                    U+03B5 ISOgrk3 -->
-<!ENTITY zeta     "&#950;"> <!-- greek small letter zeta, U+03B6 ISOgrk3 -->
-<!ENTITY eta      "&#951;"> <!-- greek small letter eta, U+03B7 ISOgrk3 -->
-<!ENTITY theta    "&#952;"> <!-- greek small letter theta,
-                                    U+03B8 ISOgrk3 -->
-<!ENTITY iota     "&#953;"> <!-- greek small letter iota, U+03B9 ISOgrk3 -->
-<!ENTITY kappa    "&#954;"> <!-- greek small letter kappa,
-                                    U+03BA ISOgrk3 -->
-<!ENTITY lambda   "&#955;"> <!-- greek small letter lamda,
-                                    U+03BB ISOgrk3 -->
-<!ENTITY mu       "&#956;"> <!-- greek small letter mu, U+03BC ISOgrk3 -->
-<!ENTITY nu       "&#957;"> <!-- greek small letter nu, U+03BD ISOgrk3 -->
-<!ENTITY xi       "&#958;"> <!-- greek small letter xi, U+03BE ISOgrk3 -->
-<!ENTITY omicron  "&#959;"> <!-- greek small letter omicron, U+03BF NEW -->
-<!ENTITY pi       "&#960;"> <!-- greek small letter pi, U+03C0 ISOgrk3 -->
-<!ENTITY rho      "&#961;"> <!-- greek small letter rho, U+03C1 ISOgrk3 -->
-<!ENTITY sigmaf   "&#962;"> <!-- greek small letter final sigma,
-                                    U+03C2 ISOgrk3 -->
-<!ENTITY sigma    "&#963;"> <!-- greek small letter sigma,
-                                    U+03C3 ISOgrk3 -->
-<!ENTITY tau      "&#964;"> <!-- greek small letter tau, U+03C4 ISOgrk3 -->
-<!ENTITY upsilon  "&#965;"> <!-- greek small letter upsilon,
-                                    U+03C5 ISOgrk3 -->
-<!ENTITY phi      "&#966;"> <!-- greek small letter phi, U+03C6 ISOgrk3 -->
-<!ENTITY chi      "&#967;"> <!-- greek small letter chi, U+03C7 ISOgrk3 -->
-<!ENTITY psi      "&#968;"> <!-- greek small letter psi, U+03C8 ISOgrk3 -->
-<!ENTITY omega    "&#969;"> <!-- greek small letter omega,
-                                    U+03C9 ISOgrk3 -->
-<!ENTITY thetasym "&#977;"> <!-- greek theta symbol,
-                                    U+03D1 NEW -->
-<!ENTITY upsih    "&#978;"> <!-- greek upsilon with hook symbol,
-                                    U+03D2 NEW -->
-<!ENTITY piv      "&#982;"> <!-- greek pi symbol, U+03D6 ISOgrk3 -->
-
-<!-- General Punctuation -->
-<!ENTITY bull     "&#8226;"> <!-- bullet = black small circle,
-                                     U+2022 ISOpub  -->
-<!-- bullet is NOT the same as bullet operator, U+2219 -->
-<!ENTITY hellip   "&#8230;"> <!-- horizontal ellipsis = three dot leader,
-                                     U+2026 ISOpub  -->
-<!ENTITY prime    "&#8242;"> <!-- prime = minutes = feet, U+2032 ISOtech -->
-<!ENTITY Prime    "&#8243;"> <!-- double prime = seconds = inches,
-                                     U+2033 ISOtech -->
-<!ENTITY oline    "&#8254;"> <!-- overline = spacing overscore,
-                                     U+203E NEW -->
-<!ENTITY frasl    "&#8260;"> <!-- fraction slash, U+2044 NEW -->
-
-<!-- Letterlike Symbols -->
-<!ENTITY weierp   "&#8472;"> <!-- script capital P = power set
-                                     = Weierstrass p, U+2118 ISOamso -->
-<!ENTITY image    "&#8465;"> <!-- black-letter capital I = imaginary part,
-                                     U+2111 ISOamso -->
-<!ENTITY real     "&#8476;"> <!-- black-letter capital R = real part symbol,
-                                     U+211C ISOamso -->
-<!ENTITY trade    "&#8482;"> <!-- trade mark sign, U+2122 ISOnum -->
-<!ENTITY alefsym  "&#8501;"> <!-- alef symbol = first transfinite cardinal,
-                                     U+2135 NEW -->
-<!-- alef symbol is NOT the same as hebrew letter alef,
-     U+05D0 although the same glyph could be used to depict both characters -->
-
-<!-- Arrows -->
-<!ENTITY larr     "&#8592;"> <!-- leftwards arrow, U+2190 ISOnum -->
-<!ENTITY uarr     "&#8593;"> <!-- upwards arrow, U+2191 ISOnum-->
-<!ENTITY rarr     "&#8594;"> <!-- rightwards arrow, U+2192 ISOnum -->
-<!ENTITY darr     "&#8595;"> <!-- downwards arrow, U+2193 ISOnum -->
-<!ENTITY harr     "&#8596;"> <!-- left right arrow, U+2194 ISOamsa -->
-<!ENTITY crarr    "&#8629;"> <!-- downwards arrow with corner leftwards
-                                     = carriage return, U+21B5 NEW -->
-<!ENTITY lArr     "&#8656;"> <!-- leftwards double arrow, U+21D0 ISOtech -->
-<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
-    but also does not have any other character for that function. So lArr can
-    be used for 'is implied by' as ISOtech suggests -->
-<!ENTITY uArr     "&#8657;"> <!-- upwards double arrow, U+21D1 ISOamsa -->
-<!ENTITY rArr     "&#8658;"> <!-- rightwards double arrow,
-                                     U+21D2 ISOtech -->
-<!-- Unicode does not say this is the 'implies' character but does not have 
-     another character with this function so rArr can be used for 'implies'
-     as ISOtech suggests -->
-<!ENTITY dArr     "&#8659;"> <!-- downwards double arrow, U+21D3 ISOamsa -->
-<!ENTITY hArr     "&#8660;"> <!-- left right double arrow,
-                                     U+21D4 ISOamsa -->
-
-<!-- Mathematical Operators -->
-<!ENTITY forall   "&#8704;"> <!-- for all, U+2200 ISOtech -->
-<!ENTITY part     "&#8706;"> <!-- partial differential, U+2202 ISOtech  -->
-<!ENTITY exist    "&#8707;"> <!-- there exists, U+2203 ISOtech -->
-<!ENTITY empty    "&#8709;"> <!-- empty set = null set, U+2205 ISOamso -->
-<!ENTITY nabla    "&#8711;"> <!-- nabla = backward difference,
-                                     U+2207 ISOtech -->
-<!ENTITY isin     "&#8712;"> <!-- element of, U+2208 ISOtech -->
-<!ENTITY notin    "&#8713;"> <!-- not an element of, U+2209 ISOtech -->
-<!ENTITY ni       "&#8715;"> <!-- contains as member, U+220B ISOtech -->
-<!ENTITY prod     "&#8719;"> <!-- n-ary product = product sign,
-                                     U+220F ISOamsb -->
-<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
-     the same glyph might be used for both -->
-<!ENTITY sum      "&#8721;"> <!-- n-ary summation, U+2211 ISOamsb -->
-<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
-     though the same glyph might be used for both -->
-<!ENTITY minus    "&#8722;"> <!-- minus sign, U+2212 ISOtech -->
-<!ENTITY lowast   "&#8727;"> <!-- asterisk operator, U+2217 ISOtech -->
-<!ENTITY radic    "&#8730;"> <!-- square root = radical sign,
-                                     U+221A ISOtech -->
-<!ENTITY prop     "&#8733;"> <!-- proportional to, U+221D ISOtech -->
-<!ENTITY infin    "&#8734;"> <!-- infinity, U+221E ISOtech -->
-<!ENTITY ang      "&#8736;"> <!-- angle, U+2220 ISOamso -->
-<!ENTITY and      "&#8743;"> <!-- logical and = wedge, U+2227 ISOtech -->
-<!ENTITY or       "&#8744;"> <!-- logical or = vee, U+2228 ISOtech -->
-<!ENTITY cap      "&#8745;"> <!-- intersection = cap, U+2229 ISOtech -->
-<!ENTITY cup      "&#8746;"> <!-- union = cup, U+222A ISOtech -->
-<!ENTITY int      "&#8747;"> <!-- integral, U+222B ISOtech -->
-<!ENTITY there4   "&#8756;"> <!-- therefore, U+2234 ISOtech -->
-<!ENTITY sim      "&#8764;"> <!-- tilde operator = varies with = similar to,
-                                     U+223C ISOtech -->
-<!-- tilde operator is NOT the same character as the tilde, U+007E,
-     although the same glyph might be used to represent both  -->
-<!ENTITY cong     "&#8773;"> <!-- approximately equal to, U+2245 ISOtech -->
-<!ENTITY asymp    "&#8776;"> <!-- almost equal to = asymptotic to,
-                                     U+2248 ISOamsr -->
-<!ENTITY ne       "&#8800;"> <!-- not equal to, U+2260 ISOtech -->
-<!ENTITY equiv    "&#8801;"> <!-- identical to, U+2261 ISOtech -->
-<!ENTITY le       "&#8804;"> <!-- less-than or equal to, U+2264 ISOtech -->
-<!ENTITY ge       "&#8805;"> <!-- greater-than or equal to,
-                                     U+2265 ISOtech -->
-<!ENTITY sub      "&#8834;"> <!-- subset of, U+2282 ISOtech -->
-<!ENTITY sup      "&#8835;"> <!-- superset of, U+2283 ISOtech -->
-<!ENTITY nsub     "&#8836;"> <!-- not a subset of, U+2284 ISOamsn -->
-<!ENTITY sube     "&#8838;"> <!-- subset of or equal to, U+2286 ISOtech -->
-<!ENTITY supe     "&#8839;"> <!-- superset of or equal to,
-                                     U+2287 ISOtech -->
-<!ENTITY oplus    "&#8853;"> <!-- circled plus = direct sum,
-                                     U+2295 ISOamsb -->
-<!ENTITY otimes   "&#8855;"> <!-- circled times = vector product,
-                                     U+2297 ISOamsb -->
-<!ENTITY perp     "&#8869;"> <!-- up tack = orthogonal to = perpendicular,
-                                     U+22A5 ISOtech -->
-<!ENTITY sdot     "&#8901;"> <!-- dot operator, U+22C5 ISOamsb -->
-<!-- dot operator is NOT the same character as U+00B7 middle dot -->
-
-<!-- Miscellaneous Technical -->
-<!ENTITY lceil    "&#8968;"> <!-- left ceiling = APL upstile,
-                                     U+2308 ISOamsc  -->
-<!ENTITY rceil    "&#8969;"> <!-- right ceiling, U+2309 ISOamsc  -->
-<!ENTITY lfloor   "&#8970;"> <!-- left floor = APL downstile,
-                                     U+230A ISOamsc  -->
-<!ENTITY rfloor   "&#8971;"> <!-- right floor, U+230B ISOamsc  -->
-<!ENTITY lang     "&#9001;"> <!-- left-pointing angle bracket = bra,
-                                     U+2329 ISOtech -->
-<!-- lang is NOT the same character as U+003C 'less than sign' 
-     or U+2039 'single left-pointing angle quotation mark' -->
-<!ENTITY rang     "&#9002;"> <!-- right-pointing angle bracket = ket,
-                                     U+232A ISOtech -->
-<!-- rang is NOT the same character as U+003E 'greater than sign' 
-     or U+203A 'single right-pointing angle quotation mark' -->
-
-<!-- Geometric Shapes -->
-<!ENTITY loz      "&#9674;"> <!-- lozenge, U+25CA ISOpub -->
-
-<!-- Miscellaneous Symbols -->
-<!ENTITY spades   "&#9824;"> <!-- black spade suit, U+2660 ISOpub -->
-<!-- black here seems to mean filled as opposed to hollow -->
-<!ENTITY clubs    "&#9827;"> <!-- black club suit = shamrock,
-                                     U+2663 ISOpub -->
-<!ENTITY hearts   "&#9829;"> <!-- black heart suit = valentine,
-                                     U+2665 ISOpub -->
-<!ENTITY diams    "&#9830;"> <!-- black diamond suit, U+2666 ISOpub -->

+ 0 - 978
book/src/main/resources/dtd/www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd

@@ -1,978 +0,0 @@
-<!--
-   Extensible HTML version 1.0 Strict DTD
-
-   This is the same as HTML 4 Strict except for
-   changes due to the differences between XML and SGML.
-
-   Namespace = http://www.w3.org/1999/xhtml
-
-   For further information, see: http://www.w3.org/TR/xhtml1
-
-   Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
-   All Rights Reserved. 
-
-   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-   PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
-
-   $Revision: 1.1 $
-   $Date: 2002/08/01 13:56:03 $
-
--->
-
-<!--================ Character mnemonic entities =========================-->
-
-<!ENTITY % HTMLlat1 PUBLIC
-   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
-   "xhtml-lat1.ent">
-%HTMLlat1;
-
-<!ENTITY % HTMLsymbol PUBLIC
-   "-//W3C//ENTITIES Symbols for XHTML//EN"
-   "xhtml-symbol.ent">
-%HTMLsymbol;
-
-<!ENTITY % HTMLspecial PUBLIC
-   "-//W3C//ENTITIES Special for XHTML//EN"
-   "xhtml-special.ent">
-%HTMLspecial;
-
-<!--================== Imported Names ====================================-->
-
-<!ENTITY % ContentType "CDATA">
-    <!-- media type, as per [RFC2045] -->
-
-<!ENTITY % ContentTypes "CDATA">
-    <!-- comma-separated list of media types, as per [RFC2045] -->
-
-<!ENTITY % Charset "CDATA">
-    <!-- a character encoding, as per [RFC2045] -->
-
-<!ENTITY % Charsets "CDATA">
-    <!-- a space separated list of character encodings, as per [RFC2045] -->
-
-<!ENTITY % LanguageCode "NMTOKEN">
-    <!-- a language code, as per [RFC3066] -->
-
-<!ENTITY % Character "CDATA">
-    <!-- a single character, as per section 2.2 of [XML] -->
-
-<!ENTITY % Number "CDATA">
-    <!-- one or more digits -->
-
-<!ENTITY % LinkTypes "CDATA">
-    <!-- space-separated list of link types -->
-
-<!ENTITY % MediaDesc "CDATA">
-    <!-- single or comma-separated list of media descriptors -->
-
-<!ENTITY % URI "CDATA">
-    <!-- a Uniform Resource Identifier, see [RFC2396] -->
-
-<!ENTITY % UriList "CDATA">
-    <!-- a space separated list of Uniform Resource Identifiers -->
-
-<!ENTITY % Datetime "CDATA">
-    <!-- date and time information. ISO date format -->
-
-<!ENTITY % Script "CDATA">
-    <!-- script expression -->
-
-<!ENTITY % StyleSheet "CDATA">
-    <!-- style sheet data -->
-
-<!ENTITY % Text "CDATA">
-    <!-- used for titles etc. -->
-
-<!ENTITY % Length "CDATA">
-    <!-- nn for pixels or nn% for percentage length -->
-
-<!ENTITY % MultiLength "CDATA">
-    <!-- pixel, percentage, or relative -->
-
-<!ENTITY % Pixels "CDATA">
-    <!-- integer representing length in pixels -->
-
-<!-- these are used for image maps -->
-
-<!ENTITY % Shape "(rect|circle|poly|default)">
-
-<!ENTITY % Coords "CDATA">
-    <!-- comma separated list of lengths -->
-
-<!--=================== Generic Attributes ===============================-->
-
-<!-- core attributes common to most elements
-  id       document-wide unique id
-  class    space separated list of classes
-  style    associated style info
-  title    advisory title/amplification
--->
-<!ENTITY % coreattrs
- "id          ID             #IMPLIED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED"
-  >
-
-<!-- internationalization attributes
-  lang        language code (backwards compatible)
-  xml:lang    language code (as per XML 1.0 spec)
-  dir         direction for weak/neutral text
--->
-<!ENTITY % i18n
- "lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #IMPLIED"
-  >
-
-<!-- attributes for common UI events
-  onclick     a pointer button was clicked
-  ondblclick  a pointer button was double clicked
-  onmousedown a pointer button was pressed down
-  onmouseup   a pointer button was released
-  onmousemove a pointer was moved onto the element
-  onmouseout  a pointer was moved away from the element
-  onkeypress  a key was pressed and released
-  onkeydown   a key was pressed down
-  onkeyup     a key was released
--->
-<!ENTITY % events
- "onclick     %Script;       #IMPLIED
-  ondblclick  %Script;       #IMPLIED
-  onmousedown %Script;       #IMPLIED
-  onmouseup   %Script;       #IMPLIED
-  onmouseover %Script;       #IMPLIED
-  onmousemove %Script;       #IMPLIED
-  onmouseout  %Script;       #IMPLIED
-  onkeypress  %Script;       #IMPLIED
-  onkeydown   %Script;       #IMPLIED
-  onkeyup     %Script;       #IMPLIED"
-  >
-
-<!-- attributes for elements that can get the focus
-  accesskey   accessibility key character
-  tabindex    position in tabbing order
-  onfocus     the element got the focus
-  onblur      the element lost the focus
--->
-<!ENTITY % focus
- "accesskey   %Character;    #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED"
-  >
-
-<!ENTITY % attrs "%coreattrs; %i18n; %events;">
-
-<!--=================== Text Elements ====================================-->
-
-<!ENTITY % special.pre
-   "br | span | bdo | map">
-
-
-<!ENTITY % special
-   "%special.pre; | object | img ">
-
-<!ENTITY % fontstyle "tt | i | b | big | small ">
-
-<!ENTITY % phrase "em | strong | dfn | code | q |
-                   samp | kbd | var | cite | abbr | acronym | sub | sup ">
-
-<!ENTITY % inline.forms "input | select | textarea | label | button">
-
-<!-- these can occur at block or inline level -->
-<!ENTITY % misc.inline "ins | del | script">
-
-<!-- these can only occur at block level -->
-<!ENTITY % misc "noscript | %misc.inline;">
-
-<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
-
-<!-- %Inline; covers inline or "text-level" elements -->
-<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
-
-<!--================== Block level elements ==============================-->
-
-<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
-<!ENTITY % lists "ul | ol | dl">
-<!ENTITY % blocktext "pre | hr | blockquote | address">
-
-<!ENTITY % block
-     "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
-
-<!ENTITY % Block "(%block; | form | %misc;)*">
-
-<!-- %Flow; mixes block and inline and is used for list items etc. -->
-<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
-
-<!--================== Content models for exclusions =====================-->
-
-<!-- a elements use %Inline; excluding a -->
-
-<!ENTITY % a.content
-   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
-
-<!-- pre uses %Inline excluding big, small, sup or sup -->
-
-<!ENTITY % pre.content
-   "(#PCDATA | a | %fontstyle; | %phrase; | %special.pre; | %misc.inline;
-      | %inline.forms;)*">
-
-<!-- form uses %Block; excluding form -->
-
-<!ENTITY % form.content "(%block; | %misc;)*">
-
-<!-- button uses %Flow; but excludes a, form and form controls -->
-
-<!ENTITY % button.content
-   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
-    table | %special; | %fontstyle; | %phrase; | %misc;)*">
-
-<!--================ Document Structure ==================================-->
-
-<!-- the namespace URI designates the document profile -->
-
-<!ELEMENT html (head, body)>
-<!ATTLIST html
-  %i18n;
-  id          ID             #IMPLIED
-  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
-  >
-
-<!--================ Document Head =======================================-->
-
-<!ENTITY % head.misc "(script|style|meta|link|object)*">
-
-<!-- content model is %head.misc; combined with a single
-     title and an optional base element in any order -->
-
-<!ELEMENT head (%head.misc;,
-     ((title, %head.misc;, (base, %head.misc;)?) |
-      (base, %head.misc;, (title, %head.misc;))))>
-
-<!ATTLIST head
-  %i18n;
-  id          ID             #IMPLIED
-  profile     %URI;          #IMPLIED
-  >
-
-<!-- The title element is not considered part of the flow of text.
-       It should be displayed, for example as the page header or
-       window title. Exactly one title is required per document.
-    -->
-<!ELEMENT title (#PCDATA)>
-<!ATTLIST title 
-  %i18n;
-  id          ID             #IMPLIED
-  >
-
-<!-- document base URI -->
-
-<!ELEMENT base EMPTY>
-<!ATTLIST base
-  href        %URI;          #REQUIRED
-  id          ID             #IMPLIED
-  >
-
-<!-- generic metainformation -->
-<!ELEMENT meta EMPTY>
-<!ATTLIST meta
-  %i18n;
-  id          ID             #IMPLIED
-  http-equiv  CDATA          #IMPLIED
-  name        CDATA          #IMPLIED
-  content     CDATA          #REQUIRED
-  scheme      CDATA          #IMPLIED
-  >
-
-<!--
-  Relationship values can be used in principle:
-
-   a) for document specific toolbars/menus when used
-      with the link element in document head e.g.
-        start, contents, previous, next, index, end, help
-   b) to link to a separate style sheet (rel="stylesheet")
-   c) to make a link to a script (rel="script")
-   d) by stylesheets to control how collections of
-      html nodes are rendered into printed documents
-   e) to make a link to a printable version of this document
-      e.g. a PostScript or PDF version (rel="alternate" media="print")
--->
-
-<!ELEMENT link EMPTY>
-<!ATTLIST link
-  %attrs;
-  charset     %Charset;      #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  type        %ContentType;  #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  media       %MediaDesc;    #IMPLIED
-  >
-
-<!-- style info, which may include CDATA sections -->
-<!ELEMENT style (#PCDATA)>
-<!ATTLIST style
-  %i18n;
-  id          ID             #IMPLIED
-  type        %ContentType;  #REQUIRED
-  media       %MediaDesc;    #IMPLIED
-  title       %Text;         #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- script statements, which may include CDATA sections -->
-<!ELEMENT script (#PCDATA)>
-<!ATTLIST script
-  id          ID             #IMPLIED
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #REQUIRED
-  src         %URI;          #IMPLIED
-  defer       (defer)        #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- alternate content container for non script-based rendering -->
-
-<!ELEMENT noscript %Block;>
-<!ATTLIST noscript
-  %attrs;
-  >
-
-<!--=================== Document Body ====================================-->
-
-<!ELEMENT body %Block;>
-<!ATTLIST body
-  %attrs;
-  onload          %Script;   #IMPLIED
-  onunload        %Script;   #IMPLIED
-  >
-
-<!ELEMENT div %Flow;>  <!-- generic language/style container -->
-<!ATTLIST div
-  %attrs;
-  >
-
-<!--=================== Paragraphs =======================================-->
-
-<!ELEMENT p %Inline;>
-<!ATTLIST p
-  %attrs;
-  >
-
-<!--=================== Headings =========================================-->
-
-<!--
-  There are six levels of headings from h1 (the most important)
-  to h6 (the least important).
--->
-
-<!ELEMENT h1  %Inline;>
-<!ATTLIST h1
-   %attrs;
-   >
-
-<!ELEMENT h2 %Inline;>
-<!ATTLIST h2
-   %attrs;
-   >
-
-<!ELEMENT h3 %Inline;>
-<!ATTLIST h3
-   %attrs;
-   >
-
-<!ELEMENT h4 %Inline;>
-<!ATTLIST h4
-   %attrs;
-   >
-
-<!ELEMENT h5 %Inline;>
-<!ATTLIST h5
-   %attrs;
-   >
-
-<!ELEMENT h6 %Inline;>
-<!ATTLIST h6
-   %attrs;
-   >
-
-<!--=================== Lists ============================================-->
-
-<!-- Unordered list -->
-
-<!ELEMENT ul (li)+>
-<!ATTLIST ul
-  %attrs;
-  >
-
-<!-- Ordered (numbered) list -->
-
-<!ELEMENT ol (li)+>
-<!ATTLIST ol
-  %attrs;
-  >
-
-<!-- list item -->
-
-<!ELEMENT li %Flow;>
-<!ATTLIST li
-  %attrs;
-  >
-
-<!-- definition lists - dt for term, dd for its definition -->
-
-<!ELEMENT dl (dt|dd)+>
-<!ATTLIST dl
-  %attrs;
-  >
-
-<!ELEMENT dt %Inline;>
-<!ATTLIST dt
-  %attrs;
-  >
-
-<!ELEMENT dd %Flow;>
-<!ATTLIST dd
-  %attrs;
-  >
-
-<!--=================== Address ==========================================-->
-
-<!-- information on author -->
-
-<!ELEMENT address %Inline;>
-<!ATTLIST address
-  %attrs;
-  >
-
-<!--=================== Horizontal Rule ==================================-->
-
-<!ELEMENT hr EMPTY>
-<!ATTLIST hr
-  %attrs;
-  >
-
-<!--=================== Preformatted Text ================================-->
-
-<!-- content is %Inline; excluding "img|object|big|small|sub|sup" -->
-
-<!ELEMENT pre %pre.content;>
-<!ATTLIST pre
-  %attrs;
-  xml:space (preserve) #FIXED 'preserve'
-  >
-
-<!--=================== Block-like Quotes ================================-->
-
-<!ELEMENT blockquote %Block;>
-<!ATTLIST blockquote
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!--=================== Inserted/Deleted Text ============================-->
-
-<!--
-  ins/del are allowed in block and inline content, but its
-  inappropriate to include block content within an ins element
-  occurring in inline content.
--->
-<!ELEMENT ins %Flow;>
-<!ATTLIST ins
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!ELEMENT del %Flow;>
-<!ATTLIST del
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!--================== The Anchor Element ================================-->
-
-<!-- content is %Inline; except that anchors shouldn't be nested -->
-
-<!ELEMENT a %a.content;>
-<!ATTLIST a
-  %attrs;
-  %focus;
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  >
-
-<!--===================== Inline Elements ================================-->
-
-<!ELEMENT span %Inline;> <!-- generic language/style container -->
-<!ATTLIST span
-  %attrs;
-  >
-
-<!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
-<!ATTLIST bdo
-  %coreattrs;
-  %events;
-  lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #REQUIRED
-  >
-
-<!ELEMENT br EMPTY>   <!-- forced line break -->
-<!ATTLIST br
-  %coreattrs;
-  >
-
-<!ELEMENT em %Inline;>   <!-- emphasis -->
-<!ATTLIST em %attrs;>
-
-<!ELEMENT strong %Inline;>   <!-- strong emphasis -->
-<!ATTLIST strong %attrs;>
-
-<!ELEMENT dfn %Inline;>   <!-- definitional -->
-<!ATTLIST dfn %attrs;>
-
-<!ELEMENT code %Inline;>   <!-- program code -->
-<!ATTLIST code %attrs;>
-
-<!ELEMENT samp %Inline;>   <!-- sample -->
-<!ATTLIST samp %attrs;>
-
-<!ELEMENT kbd %Inline;>  <!-- something user would type -->
-<!ATTLIST kbd %attrs;>
-
-<!ELEMENT var %Inline;>   <!-- variable -->
-<!ATTLIST var %attrs;>
-
-<!ELEMENT cite %Inline;>   <!-- citation -->
-<!ATTLIST cite %attrs;>
-
-<!ELEMENT abbr %Inline;>   <!-- abbreviation -->
-<!ATTLIST abbr %attrs;>
-
-<!ELEMENT acronym %Inline;>   <!-- acronym -->
-<!ATTLIST acronym %attrs;>
-
-<!ELEMENT q %Inline;>   <!-- inlined quote -->
-<!ATTLIST q
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!ELEMENT sub %Inline;> <!-- subscript -->
-<!ATTLIST sub %attrs;>
-
-<!ELEMENT sup %Inline;> <!-- superscript -->
-<!ATTLIST sup %attrs;>
-
-<!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
-<!ATTLIST tt %attrs;>
-
-<!ELEMENT i %Inline;>   <!-- italic font -->
-<!ATTLIST i %attrs;>
-
-<!ELEMENT b %Inline;>   <!-- bold font -->
-<!ATTLIST b %attrs;>
-
-<!ELEMENT big %Inline;>   <!-- bigger font -->
-<!ATTLIST big %attrs;>
-
-<!ELEMENT small %Inline;>   <!-- smaller font -->
-<!ATTLIST small %attrs;>
-
-<!--==================== Object ======================================-->
-<!--
-  object is used to embed objects as part of HTML pages.
-  param elements should precede other content. Parameters
-  can also be expressed as attribute/value pairs on the
-  object element itself when brevity is desired.
--->
-
-<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
-<!ATTLIST object
-  %attrs;
-  declare     (declare)      #IMPLIED
-  classid     %URI;          #IMPLIED
-  codebase    %URI;          #IMPLIED
-  data        %URI;          #IMPLIED
-  type        %ContentType;  #IMPLIED
-  codetype    %ContentType;  #IMPLIED
-  archive     %UriList;      #IMPLIED
-  standby     %Text;         #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  >
-
-<!--
-  param is used to supply a named property value.
-  In XML it would seem natural to follow RDF and support an
-  abbreviated syntax where the param elements are replaced
-  by attribute value pairs on the object start tag.
--->
-<!ELEMENT param EMPTY>
-<!ATTLIST param
-  id          ID             #IMPLIED
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  valuetype   (data|ref|object) "data"
-  type        %ContentType;  #IMPLIED
-  >
-
-<!--=================== Images ===========================================-->
-
-<!--
-   To avoid accessibility problems for people who aren't
-   able to see the image, you should provide a text
-   description using the alt and longdesc attributes.
-   In addition, avoid the use of server-side image maps.
-   Note that in this DTD there is no name attribute. That
-   is only available in the transitional and frameset DTD.
--->
-
-<!ELEMENT img EMPTY>
-<!ATTLIST img
-  %attrs;
-  src         %URI;          #REQUIRED
-  alt         %Text;         #REQUIRED
-  longdesc    %URI;          #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  ismap       (ismap)        #IMPLIED
-  >
-
-<!-- usemap points to a map element which may be in this document
-  or an external document, although the latter is not widely supported -->
-
-<!--================== Client-side image maps ============================-->
-
-<!-- These can be placed in the same document or grouped in a
-     separate document although this isn't yet widely supported -->
-
-<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
-<!ATTLIST map
-  %i18n;
-  %events;
-  id          ID             #REQUIRED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  >
-
-<!ELEMENT area EMPTY>
-<!ATTLIST area
-  %attrs;
-  %focus;
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  href        %URI;          #IMPLIED
-  nohref      (nohref)       #IMPLIED
-  alt         %Text;         #REQUIRED
-  >
-
-<!--================ Forms ===============================================-->
-<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
-
-<!ATTLIST form
-  %attrs;
-  action      %URI;          #REQUIRED
-  method      (get|post)     "get"
-  enctype     %ContentType;  "application/x-www-form-urlencoded"
-  onsubmit    %Script;       #IMPLIED
-  onreset     %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  accept-charset %Charsets;  #IMPLIED
-  >
-
-<!--
-  Each label must not contain more than ONE field
-  Label elements shouldn't be nested.
--->
-<!ELEMENT label %Inline;>
-<!ATTLIST label
-  %attrs;
-  for         IDREF          #IMPLIED
-  accesskey   %Character;    #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  >
-
-<!ENTITY % InputType
-  "(text | password | checkbox |
-    radio | submit | reset |
-    file | hidden | image | button)"
-   >
-
-<!-- the name attribute is required for all but submit & reset -->
-
-<!ELEMENT input EMPTY>     <!-- form control -->
-<!ATTLIST input
-  %attrs;
-  %focus;
-  type        %InputType;    "text"
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  checked     (checked)      #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  size        CDATA          #IMPLIED
-  maxlength   %Number;       #IMPLIED
-  src         %URI;          #IMPLIED
-  alt         CDATA          #IMPLIED
-  usemap      %URI;          #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  >
-
-<!ELEMENT select (optgroup|option)+>  <!-- option selector -->
-<!ATTLIST select
-  %attrs;
-  name        CDATA          #IMPLIED
-  size        %Number;       #IMPLIED
-  multiple    (multiple)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!ELEMENT optgroup (option)+>   <!-- option group -->
-<!ATTLIST optgroup
-  %attrs;
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #REQUIRED
-  >
-
-<!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
-<!ATTLIST option
-  %attrs;
-  selected    (selected)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #IMPLIED
-  value       CDATA          #IMPLIED
-  >
-
-<!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
-<!ATTLIST textarea
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  rows        %Number;       #REQUIRED
-  cols        %Number;       #REQUIRED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!--
-  The fieldset element is used to group form fields.
-  Only one legend element should occur in the content
-  and if present should only be preceded by whitespace.
--->
-<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
-<!ATTLIST fieldset
-  %attrs;
-  >
-
-<!ELEMENT legend %Inline;>     <!-- fieldset label -->
-<!ATTLIST legend
-  %attrs;
-  accesskey   %Character;    #IMPLIED
-  >
-
-<!--
- Content is %Flow; excluding a, form and form controls
---> 
-<!ELEMENT button %button.content;>  <!-- push button -->
-<!ATTLIST button
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  type        (button|submit|reset) "submit"
-  disabled    (disabled)     #IMPLIED
-  >
-
-<!--======================= Tables =======================================-->
-
-<!-- Derived from IETF HTML table standard, see [RFC1942] -->
-
-<!--
- The border attribute sets the thickness of the frame around the
- table. The default units are screen pixels.
-
- The frame attribute specifies which parts of the frame around
- the table should be rendered. The values are not the same as
- CALS to avoid a name clash with the valign attribute.
--->
-<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
-
-<!--
- The rules attribute defines which rules to draw between cells:
-
- If rules is absent then assume:
-     "none" if border is absent or border="0" otherwise "all"
--->
-
-<!ENTITY % TRules "(none | groups | rows | cols | all)">
-  
-<!-- horizontal alignment attributes for cell contents
-
-  char        alignment char, e.g. char=':'
-  charoff     offset for alignment char
--->
-<!ENTITY % cellhalign
-  "align      (left|center|right|justify|char) #IMPLIED
-   char       %Character;    #IMPLIED
-   charoff    %Length;       #IMPLIED"
-  >
-
-<!-- vertical alignment attributes for cell contents -->
-<!ENTITY % cellvalign
-  "valign     (top|middle|bottom|baseline) #IMPLIED"
-  >
-
-<!ELEMENT table
-     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
-<!ELEMENT caption  %Inline;>
-<!ELEMENT thead    (tr)+>
-<!ELEMENT tfoot    (tr)+>
-<!ELEMENT tbody    (tr)+>
-<!ELEMENT colgroup (col)*>
-<!ELEMENT col      EMPTY>
-<!ELEMENT tr       (th|td)+>
-<!ELEMENT th       %Flow;>
-<!ELEMENT td       %Flow;>
-
-<!ATTLIST table
-  %attrs;
-  summary     %Text;         #IMPLIED
-  width       %Length;       #IMPLIED
-  border      %Pixels;       #IMPLIED
-  frame       %TFrame;       #IMPLIED
-  rules       %TRules;       #IMPLIED
-  cellspacing %Length;       #IMPLIED
-  cellpadding %Length;       #IMPLIED
-  >
-
-<!ATTLIST caption
-  %attrs;
-  >
-
-<!--
-colgroup groups a set of col elements. It allows you to group
-several semantically related columns together.
--->
-<!ATTLIST colgroup
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
- col elements define the alignment properties for cells in
- one or more columns.
-
- The width attribute specifies the width of the columns, e.g.
-
-     width=64        width in screen pixels
-     width=0.5*      relative width of 0.5
-
- The span attribute causes the attributes of one
- col element to apply to more than one column.
--->
-<!ATTLIST col
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
-    Use thead to duplicate headers when breaking table
-    across page boundaries, or for static headers when
-    tbody sections are rendered in scrolling panel.
-
-    Use tfoot to duplicate footers when breaking table
-    across page boundaries, or for static footers when
-    tbody sections are rendered in scrolling panel.
-
-    Use multiple tbody sections when rules are needed
-    between groups of table rows.
--->
-<!ATTLIST thead
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tfoot
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tbody
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tr
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-
-<!-- Scope is simpler than headers attribute for common tables -->
-<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
-
-<!-- th is for headers, td for data and for cells acting as both -->
-
-<!ATTLIST th
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST td
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  >
-

+ 0 - 1201
book/src/main/resources/dtd/www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd

@@ -1,1201 +0,0 @@
-<!--
-   Extensible HTML version 1.0 Transitional DTD
-
-   This is the same as HTML 4 Transitional except for
-   changes due to the differences between XML and SGML.
-
-   Namespace = http://www.w3.org/1999/xhtml
-
-   For further information, see: http://www.w3.org/TR/xhtml1
-
-   Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
-   All Rights Reserved. 
-
-   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-   PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
-
-   $Revision: 1.2 $
-   $Date: 2002/08/01 18:37:55 $
-
--->
-
-<!--================ Character mnemonic entities =========================-->
-
-<!ENTITY % HTMLlat1 PUBLIC
-   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
-   "xhtml-lat1.ent">
-%HTMLlat1;
-
-<!ENTITY % HTMLsymbol PUBLIC
-   "-//W3C//ENTITIES Symbols for XHTML//EN"
-   "xhtml-symbol.ent">
-%HTMLsymbol;
-
-<!ENTITY % HTMLspecial PUBLIC
-   "-//W3C//ENTITIES Special for XHTML//EN"
-   "xhtml-special.ent">
-%HTMLspecial;
-
-<!--================== Imported Names ====================================-->
-
-<!ENTITY % ContentType "CDATA">
-    <!-- media type, as per [RFC2045] -->
-
-<!ENTITY % ContentTypes "CDATA">
-    <!-- comma-separated list of media types, as per [RFC2045] -->
-
-<!ENTITY % Charset "CDATA">
-    <!-- a character encoding, as per [RFC2045] -->
-
-<!ENTITY % Charsets "CDATA">
-    <!-- a space separated list of character encodings, as per [RFC2045] -->
-
-<!ENTITY % LanguageCode "NMTOKEN">
-    <!-- a language code, as per [RFC3066] -->
-
-<!ENTITY % Character "CDATA">
-    <!-- a single character, as per section 2.2 of [XML] -->
-
-<!ENTITY % Number "CDATA">
-    <!-- one or more digits -->
-
-<!ENTITY % LinkTypes "CDATA">
-    <!-- space-separated list of link types -->
-
-<!ENTITY % MediaDesc "CDATA">
-    <!-- single or comma-separated list of media descriptors -->
-
-<!ENTITY % URI "CDATA">
-    <!-- a Uniform Resource Identifier, see [RFC2396] -->
-
-<!ENTITY % UriList "CDATA">
-    <!-- a space separated list of Uniform Resource Identifiers -->
-
-<!ENTITY % Datetime "CDATA">
-    <!-- date and time information. ISO date format -->
-
-<!ENTITY % Script "CDATA">
-    <!-- script expression -->
-
-<!ENTITY % StyleSheet "CDATA">
-    <!-- style sheet data -->
-
-<!ENTITY % Text "CDATA">
-    <!-- used for titles etc. -->
-
-<!ENTITY % FrameTarget "NMTOKEN">
-    <!-- render in this frame -->
-
-<!ENTITY % Length "CDATA">
-    <!-- nn for pixels or nn% for percentage length -->
-
-<!ENTITY % MultiLength "CDATA">
-    <!-- pixel, percentage, or relative -->
-
-<!ENTITY % Pixels "CDATA">
-    <!-- integer representing length in pixels -->
-
-<!-- these are used for image maps -->
-
-<!ENTITY % Shape "(rect|circle|poly|default)">
-
-<!ENTITY % Coords "CDATA">
-    <!-- comma separated list of lengths -->
-
-<!-- used for object, applet, img, input and iframe -->
-<!ENTITY % ImgAlign "(top|middle|bottom|left|right)">
-
-<!-- a color using sRGB: #RRGGBB as Hex values -->
-<!ENTITY % Color "CDATA">
-
-<!-- There are also 16 widely known color names with their sRGB values:
-
-    Black  = #000000    Green  = #008000
-    Silver = #C0C0C0    Lime   = #00FF00
-    Gray   = #808080    Olive  = #808000
-    White  = #FFFFFF    Yellow = #FFFF00
-    Maroon = #800000    Navy   = #000080
-    Red    = #FF0000    Blue   = #0000FF
-    Purple = #800080    Teal   = #008080
-    Fuchsia= #FF00FF    Aqua   = #00FFFF
--->
-
-<!--=================== Generic Attributes ===============================-->
-
-<!-- core attributes common to most elements
-  id       document-wide unique id
-  class    space separated list of classes
-  style    associated style info
-  title    advisory title/amplification
--->
-<!ENTITY % coreattrs
- "id          ID             #IMPLIED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED"
-  >
-
-<!-- internationalization attributes
-  lang        language code (backwards compatible)
-  xml:lang    language code (as per XML 1.0 spec)
-  dir         direction for weak/neutral text
--->
-<!ENTITY % i18n
- "lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #IMPLIED"
-  >
-
-<!-- attributes for common UI events
-  onclick     a pointer button was clicked
-  ondblclick  a pointer button was double clicked
-  onmousedown a pointer button was pressed down
-  onmouseup   a pointer button was released
-  onmousemove a pointer was moved onto the element
-  onmouseout  a pointer was moved away from the element
-  onkeypress  a key was pressed and released
-  onkeydown   a key was pressed down
-  onkeyup     a key was released
--->
-<!ENTITY % events
- "onclick     %Script;       #IMPLIED
-  ondblclick  %Script;       #IMPLIED
-  onmousedown %Script;       #IMPLIED
-  onmouseup   %Script;       #IMPLIED
-  onmouseover %Script;       #IMPLIED
-  onmousemove %Script;       #IMPLIED
-  onmouseout  %Script;       #IMPLIED
-  onkeypress  %Script;       #IMPLIED
-  onkeydown   %Script;       #IMPLIED
-  onkeyup     %Script;       #IMPLIED"
-  >
-
-<!-- attributes for elements that can get the focus
-  accesskey   accessibility key character
-  tabindex    position in tabbing order
-  onfocus     the element got the focus
-  onblur      the element lost the focus
--->
-<!ENTITY % focus
- "accesskey   %Character;    #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED"
-  >
-
-<!ENTITY % attrs "%coreattrs; %i18n; %events;">
-
-<!-- text alignment for p, div, h1-h6. The default is
-     align="left" for ltr headings, "right" for rtl -->
-
-<!ENTITY % TextAlign "align (left|center|right|justify) #IMPLIED">
-
-<!--=================== Text Elements ====================================-->
-
-<!ENTITY % special.extra
-   "object | applet | img | map | iframe">
-	
-<!ENTITY % special.basic
-	"br | span | bdo">
-
-<!ENTITY % special
-   "%special.basic; | %special.extra;">
-
-<!ENTITY % fontstyle.extra "big | small | font | basefont">
-
-<!ENTITY % fontstyle.basic "tt | i | b | u
-                      | s | strike ">
-
-<!ENTITY % fontstyle "%fontstyle.basic; | %fontstyle.extra;">
-
-<!ENTITY % phrase.extra "sub | sup">
-<!ENTITY % phrase.basic "em | strong | dfn | code | q |
-                   samp | kbd | var | cite | abbr | acronym">
-
-<!ENTITY % phrase "%phrase.basic; | %phrase.extra;">
-
-<!ENTITY % inline.forms "input | select | textarea | label | button">
-
-<!-- these can occur at block or inline level -->
-<!ENTITY % misc.inline "ins | del | script">
-
-<!-- these can only occur at block level -->
-<!ENTITY % misc "noscript | %misc.inline;">
-
-<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
-
-<!-- %Inline; covers inline or "text-level" elements -->
-<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
-
-<!--================== Block level elements ==============================-->
-
-<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
-<!ENTITY % lists "ul | ol | dl | menu | dir">
-<!ENTITY % blocktext "pre | hr | blockquote | address | center | noframes">
-
-<!ENTITY % block
-    "p | %heading; | div | %lists; | %blocktext; | isindex |fieldset | table">
-
-<!-- %Flow; mixes block and inline and is used for list items etc. -->
-<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
-
-<!--================== Content models for exclusions =====================-->
-
-<!-- a elements use %Inline; excluding a -->
-
-<!ENTITY % a.content
-   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
-
-<!-- pre uses %Inline excluding img, object, applet, big, small,
-     font, or basefont -->
-
-<!ENTITY % pre.content
-   "(#PCDATA | a | %special.basic; | %fontstyle.basic; | %phrase.basic; |
-	   %inline.forms; | %misc.inline;)*">
-
-<!-- form uses %Flow; excluding form -->
-
-<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">
-
-<!-- button uses %Flow; but excludes a, form, form controls, iframe -->
-
-<!ENTITY % button.content
-   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
-      table | br | span | bdo | object | applet | img | map |
-      %fontstyle; | %phrase; | %misc;)*">
-
-<!--================ Document Structure ==================================-->
-
-<!-- the namespace URI designates the document profile -->
-
-<!ELEMENT html (head, body)>
-<!ATTLIST html
-  %i18n;
-  id          ID             #IMPLIED
-  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
-  >
-
-<!--================ Document Head =======================================-->
-
-<!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">
-
-<!-- content model is %head.misc; combined with a single
-     title and an optional base element in any order -->
-
-<!ELEMENT head (%head.misc;,
-     ((title, %head.misc;, (base, %head.misc;)?) |
-      (base, %head.misc;, (title, %head.misc;))))>
-
-<!ATTLIST head
-  %i18n;
-  id          ID             #IMPLIED
-  profile     %URI;          #IMPLIED
-  >
-
-<!-- The title element is not considered part of the flow of text.
-       It should be displayed, for example as the page header or
-       window title. Exactly one title is required per document.
-    -->
-<!ELEMENT title (#PCDATA)>
-<!ATTLIST title 
-  %i18n;
-  id          ID             #IMPLIED
-  >
-
-<!-- document base URI -->
-
-<!ELEMENT base EMPTY>
-<!ATTLIST base
-  id          ID             #IMPLIED
-  href        %URI;          #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!-- generic metainformation -->
-<!ELEMENT meta EMPTY>
-<!ATTLIST meta
-  %i18n;
-  id          ID             #IMPLIED
-  http-equiv  CDATA          #IMPLIED
-  name        CDATA          #IMPLIED
-  content     CDATA          #REQUIRED
-  scheme      CDATA          #IMPLIED
-  >
-
-<!--
-  Relationship values can be used in principle:
-
-   a) for document specific toolbars/menus when used
-      with the link element in document head e.g.
-        start, contents, previous, next, index, end, help
-   b) to link to a separate style sheet (rel="stylesheet")
-   c) to make a link to a script (rel="script")
-   d) by stylesheets to control how collections of
-      html nodes are rendered into printed documents
-   e) to make a link to a printable version of this document
-      e.g. a PostScript or PDF version (rel="alternate" media="print")
--->
-
-<!ELEMENT link EMPTY>
-<!ATTLIST link
-  %attrs;
-  charset     %Charset;      #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  type        %ContentType;  #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  media       %MediaDesc;    #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!-- style info, which may include CDATA sections -->
-<!ELEMENT style (#PCDATA)>
-<!ATTLIST style
-  %i18n;
-  id          ID             #IMPLIED
-  type        %ContentType;  #REQUIRED
-  media       %MediaDesc;    #IMPLIED
-  title       %Text;         #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- script statements, which may include CDATA sections -->
-<!ELEMENT script (#PCDATA)>
-<!ATTLIST script
-  id          ID             #IMPLIED
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #REQUIRED
-  language    CDATA          #IMPLIED
-  src         %URI;          #IMPLIED
-  defer       (defer)        #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- alternate content container for non script-based rendering -->
-
-<!ELEMENT noscript %Flow;>
-<!ATTLIST noscript
-  %attrs;
-  >
-
-<!--======================= Frames =======================================-->
-
-<!-- inline subwindow -->
-
-<!ELEMENT iframe %Flow;>
-<!ATTLIST iframe
-  %coreattrs;
-  longdesc    %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  src         %URI;          #IMPLIED
-  frameborder (1|0)          "1"
-  marginwidth %Pixels;       #IMPLIED
-  marginheight %Pixels;      #IMPLIED
-  scrolling   (yes|no|auto)  "auto"
-  align       %ImgAlign;     #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  >
-
-<!-- alternate content container for non frame-based rendering -->
-
-<!ELEMENT noframes %Flow;>
-<!ATTLIST noframes
-  %attrs;
-  >
-
-<!--=================== Document Body ====================================-->
-
-<!ELEMENT body %Flow;>
-<!ATTLIST body
-  %attrs;
-  onload      %Script;       #IMPLIED
-  onunload    %Script;       #IMPLIED
-  background  %URI;          #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  text        %Color;        #IMPLIED
-  link        %Color;        #IMPLIED
-  vlink       %Color;        #IMPLIED
-  alink       %Color;        #IMPLIED
-  >
-
-<!ELEMENT div %Flow;>  <!-- generic language/style container -->
-<!ATTLIST div
-  %attrs;
-  %TextAlign;
-  >
-
-<!--=================== Paragraphs =======================================-->
-
-<!ELEMENT p %Inline;>
-<!ATTLIST p
-  %attrs;
-  %TextAlign;
-  >
-
-<!--=================== Headings =========================================-->
-
-<!--
-  There are six levels of headings from h1 (the most important)
-  to h6 (the least important).
--->
-
-<!ELEMENT h1  %Inline;>
-<!ATTLIST h1
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h2 %Inline;>
-<!ATTLIST h2
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h3 %Inline;>
-<!ATTLIST h3
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h4 %Inline;>
-<!ATTLIST h4
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h5 %Inline;>
-<!ATTLIST h5
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h6 %Inline;>
-<!ATTLIST h6
-  %attrs;
-  %TextAlign;
-  >
-
-<!--=================== Lists ============================================-->
-
-<!-- Unordered list bullet styles -->
-
-<!ENTITY % ULStyle "(disc|square|circle)">
-
-<!-- Unordered list -->
-
-<!ELEMENT ul (li)+>
-<!ATTLIST ul
-  %attrs;
-  type        %ULStyle;     #IMPLIED
-  compact     (compact)     #IMPLIED
-  >
-
-<!-- Ordered list numbering style
-
-    1   arabic numbers      1, 2, 3, ...
-    a   lower alpha         a, b, c, ...
-    A   upper alpha         A, B, C, ...
-    i   lower roman         i, ii, iii, ...
-    I   upper roman         I, II, III, ...
-
-    The style is applied to the sequence number which by default
-    is reset to 1 for the first list item in an ordered list.
--->
-<!ENTITY % OLStyle "CDATA">
-
-<!-- Ordered (numbered) list -->
-
-<!ELEMENT ol (li)+>
-<!ATTLIST ol
-  %attrs;
-  type        %OLStyle;      #IMPLIED
-  compact     (compact)      #IMPLIED
-  start       %Number;       #IMPLIED
-  >
-
-<!-- single column list (DEPRECATED) --> 
-<!ELEMENT menu (li)+>
-<!ATTLIST menu
-  %attrs;
-  compact     (compact)     #IMPLIED
-  >
-
-<!-- multiple column list (DEPRECATED) --> 
-<!ELEMENT dir (li)+>
-<!ATTLIST dir
-  %attrs;
-  compact     (compact)     #IMPLIED
-  >
-
-<!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->
-<!ENTITY % LIStyle "CDATA">
-
-<!-- list item -->
-
-<!ELEMENT li %Flow;>
-<!ATTLIST li
-  %attrs;
-  type        %LIStyle;      #IMPLIED
-  value       %Number;       #IMPLIED
-  >
-
-<!-- definition lists - dt for term, dd for its definition -->
-
-<!ELEMENT dl (dt|dd)+>
-<!ATTLIST dl
-  %attrs;
-  compact     (compact)      #IMPLIED
-  >
-
-<!ELEMENT dt %Inline;>
-<!ATTLIST dt
-  %attrs;
-  >
-
-<!ELEMENT dd %Flow;>
-<!ATTLIST dd
-  %attrs;
-  >
-
-<!--=================== Address ==========================================-->
-
-<!-- information on author -->
-
-<!ELEMENT address (#PCDATA | %inline; | %misc.inline; | p)*>
-<!ATTLIST address
-  %attrs;
-  >
-
-<!--=================== Horizontal Rule ==================================-->
-
-<!ELEMENT hr EMPTY>
-<!ATTLIST hr
-  %attrs;
-  align       (left|center|right) #IMPLIED
-  noshade     (noshade)      #IMPLIED
-  size        %Pixels;       #IMPLIED
-  width       %Length;       #IMPLIED
-  >
-
-<!--=================== Preformatted Text ================================-->
-
-<!-- content is %Inline; excluding 
-        "img|object|applet|big|small|sub|sup|font|basefont" -->
-
-<!ELEMENT pre %pre.content;>
-<!ATTLIST pre
-  %attrs;
-  width       %Number;      #IMPLIED
-  xml:space   (preserve)    #FIXED 'preserve'
-  >
-
-<!--=================== Block-like Quotes ================================-->
-
-<!ELEMENT blockquote %Flow;>
-<!ATTLIST blockquote
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!--=================== Text alignment ===================================-->
-
-<!-- center content -->
-<!ELEMENT center %Flow;>
-<!ATTLIST center
-  %attrs;
-  >
-
-<!--=================== Inserted/Deleted Text ============================-->
-
-<!--
-  ins/del are allowed in block and inline content, but its
-  inappropriate to include block content within an ins element
-  occurring in inline content.
--->
-<!ELEMENT ins %Flow;>
-<!ATTLIST ins
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!ELEMENT del %Flow;>
-<!ATTLIST del
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!--================== The Anchor Element ================================-->
-
-<!-- content is %Inline; except that anchors shouldn't be nested -->
-
-<!ELEMENT a %a.content;>
-<!ATTLIST a
-  %attrs;
-  %focus;
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!--===================== Inline Elements ================================-->
-
-<!ELEMENT span %Inline;> <!-- generic language/style container -->
-<!ATTLIST span
-  %attrs;
-  >
-
-<!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
-<!ATTLIST bdo
-  %coreattrs;
-  %events;
-  lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #REQUIRED
-  >
-
-<!ELEMENT br EMPTY>   <!-- forced line break -->
-<!ATTLIST br
-  %coreattrs;
-  clear       (left|all|right|none) "none"
-  >
-
-<!ELEMENT em %Inline;>   <!-- emphasis -->
-<!ATTLIST em %attrs;>
-
-<!ELEMENT strong %Inline;>   <!-- strong emphasis -->
-<!ATTLIST strong %attrs;>
-
-<!ELEMENT dfn %Inline;>   <!-- definitional -->
-<!ATTLIST dfn %attrs;>
-
-<!ELEMENT code %Inline;>   <!-- program code -->
-<!ATTLIST code %attrs;>
-
-<!ELEMENT samp %Inline;>   <!-- sample -->
-<!ATTLIST samp %attrs;>
-
-<!ELEMENT kbd %Inline;>  <!-- something user would type -->
-<!ATTLIST kbd %attrs;>
-
-<!ELEMENT var %Inline;>   <!-- variable -->
-<!ATTLIST var %attrs;>
-
-<!ELEMENT cite %Inline;>   <!-- citation -->
-<!ATTLIST cite %attrs;>
-
-<!ELEMENT abbr %Inline;>   <!-- abbreviation -->
-<!ATTLIST abbr %attrs;>
-
-<!ELEMENT acronym %Inline;>   <!-- acronym -->
-<!ATTLIST acronym %attrs;>
-
-<!ELEMENT q %Inline;>   <!-- inlined quote -->
-<!ATTLIST q
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!ELEMENT sub %Inline;> <!-- subscript -->
-<!ATTLIST sub %attrs;>
-
-<!ELEMENT sup %Inline;> <!-- superscript -->
-<!ATTLIST sup %attrs;>
-
-<!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
-<!ATTLIST tt %attrs;>
-
-<!ELEMENT i %Inline;>   <!-- italic font -->
-<!ATTLIST i %attrs;>
-
-<!ELEMENT b %Inline;>   <!-- bold font -->
-<!ATTLIST b %attrs;>
-
-<!ELEMENT big %Inline;>   <!-- bigger font -->
-<!ATTLIST big %attrs;>
-
-<!ELEMENT small %Inline;>   <!-- smaller font -->
-<!ATTLIST small %attrs;>
-
-<!ELEMENT u %Inline;>   <!-- underline -->
-<!ATTLIST u %attrs;>
-
-<!ELEMENT s %Inline;>   <!-- strike-through -->
-<!ATTLIST s %attrs;>
-
-<!ELEMENT strike %Inline;>   <!-- strike-through -->
-<!ATTLIST strike %attrs;>
-
-<!ELEMENT basefont EMPTY>  <!-- base font size -->
-<!ATTLIST basefont
-  id          ID             #IMPLIED
-  size        CDATA          #REQUIRED
-  color       %Color;        #IMPLIED
-  face        CDATA          #IMPLIED
-  >
-
-<!ELEMENT font %Inline;> <!-- local change to font -->
-<!ATTLIST font
-  %coreattrs;
-  %i18n;
-  size        CDATA          #IMPLIED
-  color       %Color;        #IMPLIED
-  face        CDATA          #IMPLIED
-  >
-
-<!--==================== Object ======================================-->
-<!--
-  object is used to embed objects as part of HTML pages.
-  param elements should precede other content. Parameters
-  can also be expressed as attribute/value pairs on the
-  object element itself when brevity is desired.
--->
-
-<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
-<!ATTLIST object
-  %attrs;
-  declare     (declare)      #IMPLIED
-  classid     %URI;          #IMPLIED
-  codebase    %URI;          #IMPLIED
-  data        %URI;          #IMPLIED
-  type        %ContentType;  #IMPLIED
-  codetype    %ContentType;  #IMPLIED
-  archive     %UriList;      #IMPLIED
-  standby     %Text;         #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  align       %ImgAlign;     #IMPLIED
-  border      %Pixels;       #IMPLIED
-  hspace      %Pixels;       #IMPLIED
-  vspace      %Pixels;       #IMPLIED
-  >
-
-<!--
-  param is used to supply a named property value.
-  In XML it would seem natural to follow RDF and support an
-  abbreviated syntax where the param elements are replaced
-  by attribute value pairs on the object start tag.
--->
-<!ELEMENT param EMPTY>
-<!ATTLIST param
-  id          ID             #IMPLIED
-  name        CDATA          #REQUIRED
-  value       CDATA          #IMPLIED
-  valuetype   (data|ref|object) "data"
-  type        %ContentType;  #IMPLIED
-  >
-
-<!--=================== Java applet ==================================-->
-<!--
-  One of code or object attributes must be present.
-  Place param elements before other content.
--->
-<!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>
-<!ATTLIST applet
-  %coreattrs;
-  codebase    %URI;          #IMPLIED
-  archive     CDATA          #IMPLIED
-  code        CDATA          #IMPLIED
-  object      CDATA          #IMPLIED
-  alt         %Text;         #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  width       %Length;       #REQUIRED
-  height      %Length;       #REQUIRED
-  align       %ImgAlign;     #IMPLIED
-  hspace      %Pixels;       #IMPLIED
-  vspace      %Pixels;       #IMPLIED
-  >
-
-<!--=================== Images ===========================================-->
-
-<!--
-   To avoid accessibility problems for people who aren't
-   able to see the image, you should provide a text
-   description using the alt and longdesc attributes.
-   In addition, avoid the use of server-side image maps.
--->
-
-<!ELEMENT img EMPTY>
-<!ATTLIST img
-  %attrs;
-  src         %URI;          #REQUIRED
-  alt         %Text;         #REQUIRED
-  name        NMTOKEN        #IMPLIED
-  longdesc    %URI;          #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  ismap       (ismap)        #IMPLIED
-  align       %ImgAlign;     #IMPLIED
-  border      %Length;       #IMPLIED
-  hspace      %Pixels;       #IMPLIED
-  vspace      %Pixels;       #IMPLIED
-  >
-
-<!-- usemap points to a map element which may be in this document
-  or an external document, although the latter is not widely supported -->
-
-<!--================== Client-side image maps ============================-->
-
-<!-- These can be placed in the same document or grouped in a
-     separate document although this isn't yet widely supported -->
-
-<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
-<!ATTLIST map
-  %i18n;
-  %events;
-  id          ID             #REQUIRED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED
-  name        CDATA          #IMPLIED
-  >
-
-<!ELEMENT area EMPTY>
-<!ATTLIST area
-  %attrs;
-  %focus;
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  href        %URI;          #IMPLIED
-  nohref      (nohref)       #IMPLIED
-  alt         %Text;         #REQUIRED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!--================ Forms ===============================================-->
-
-<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
-
-<!ATTLIST form
-  %attrs;
-  action      %URI;          #REQUIRED
-  method      (get|post)     "get"
-  name        NMTOKEN        #IMPLIED
-  enctype     %ContentType;  "application/x-www-form-urlencoded"
-  onsubmit    %Script;       #IMPLIED
-  onreset     %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  accept-charset %Charsets;  #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!--
-  Each label must not contain more than ONE field
-  Label elements shouldn't be nested.
--->
-<!ELEMENT label %Inline;>
-<!ATTLIST label
-  %attrs;
-  for         IDREF          #IMPLIED
-  accesskey   %Character;    #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  >
-
-<!ENTITY % InputType
-  "(text | password | checkbox |
-    radio | submit | reset |
-    file | hidden | image | button)"
-   >
-
-<!-- the name attribute is required for all but submit & reset -->
-
-<!ELEMENT input EMPTY>     <!-- form control -->
-<!ATTLIST input
-  %attrs;
-  %focus;
-  type        %InputType;    "text"
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  checked     (checked)      #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  size        CDATA          #IMPLIED
-  maxlength   %Number;       #IMPLIED
-  src         %URI;          #IMPLIED
-  alt         CDATA          #IMPLIED
-  usemap      %URI;          #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  align       %ImgAlign;     #IMPLIED
-  >
-
-<!ELEMENT select (optgroup|option)+>  <!-- option selector -->
-<!ATTLIST select
-  %attrs;
-  name        CDATA          #IMPLIED
-  size        %Number;       #IMPLIED
-  multiple    (multiple)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!ELEMENT optgroup (option)+>   <!-- option group -->
-<!ATTLIST optgroup
-  %attrs;
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #REQUIRED
-  >
-
-<!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
-<!ATTLIST option
-  %attrs;
-  selected    (selected)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #IMPLIED
-  value       CDATA          #IMPLIED
-  >
-
-<!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
-<!ATTLIST textarea
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  rows        %Number;       #REQUIRED
-  cols        %Number;       #REQUIRED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!--
-  The fieldset element is used to group form fields.
-  Only one legend element should occur in the content
-  and if present should only be preceded by whitespace.
--->
-<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
-<!ATTLIST fieldset
-  %attrs;
-  >
-
-<!ENTITY % LAlign "(top|bottom|left|right)">
-
-<!ELEMENT legend %Inline;>     <!-- fieldset label -->
-<!ATTLIST legend
-  %attrs;
-  accesskey   %Character;    #IMPLIED
-  align       %LAlign;       #IMPLIED
-  >
-
-<!--
- Content is %Flow; excluding a, form, form controls, iframe
---> 
-<!ELEMENT button %button.content;>  <!-- push button -->
-<!ATTLIST button
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  type        (button|submit|reset) "submit"
-  disabled    (disabled)     #IMPLIED
-  >
-
-<!-- single-line text input control (DEPRECATED) -->
-<!ELEMENT isindex EMPTY>
-<!ATTLIST isindex
-  %coreattrs;
-  %i18n;
-  prompt      %Text;         #IMPLIED
-  >
-
-<!--======================= Tables =======================================-->
-
-<!-- Derived from IETF HTML table standard, see [RFC1942] -->
-
-<!--
- The border attribute sets the thickness of the frame around the
- table. The default units are screen pixels.
-
- The frame attribute specifies which parts of the frame around
- the table should be rendered. The values are not the same as
- CALS to avoid a name clash with the valign attribute.
--->
-<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
-
-<!--
- The rules attribute defines which rules to draw between cells:
-
- If rules is absent then assume:
-     "none" if border is absent or border="0" otherwise "all"
--->
-
-<!ENTITY % TRules "(none | groups | rows | cols | all)">
-  
-<!-- horizontal placement of table relative to document -->
-<!ENTITY % TAlign "(left|center|right)">
-
-<!-- horizontal alignment attributes for cell contents
-
-  char        alignment char, e.g. char=':'
-  charoff     offset for alignment char
--->
-<!ENTITY % cellhalign
-  "align      (left|center|right|justify|char) #IMPLIED
-   char       %Character;    #IMPLIED
-   charoff    %Length;       #IMPLIED"
-  >
-
-<!-- vertical alignment attributes for cell contents -->
-<!ENTITY % cellvalign
-  "valign     (top|middle|bottom|baseline) #IMPLIED"
-  >
-
-<!ELEMENT table
-     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
-<!ELEMENT caption  %Inline;>
-<!ELEMENT thead    (tr)+>
-<!ELEMENT tfoot    (tr)+>
-<!ELEMENT tbody    (tr)+>
-<!ELEMENT colgroup (col)*>
-<!ELEMENT col      EMPTY>
-<!ELEMENT tr       (th|td)+>
-<!ELEMENT th       %Flow;>
-<!ELEMENT td       %Flow;>
-
-<!ATTLIST table
-  %attrs;
-  summary     %Text;         #IMPLIED
-  width       %Length;       #IMPLIED
-  border      %Pixels;       #IMPLIED
-  frame       %TFrame;       #IMPLIED
-  rules       %TRules;       #IMPLIED
-  cellspacing %Length;       #IMPLIED
-  cellpadding %Length;       #IMPLIED
-  align       %TAlign;       #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  >
-
-<!ENTITY % CAlign "(top|bottom|left|right)">
-
-<!ATTLIST caption
-  %attrs;
-  align       %CAlign;       #IMPLIED
-  >
-
-<!--
-colgroup groups a set of col elements. It allows you to group
-several semantically related columns together.
--->
-<!ATTLIST colgroup
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
- col elements define the alignment properties for cells in
- one or more columns.
-
- The width attribute specifies the width of the columns, e.g.
-
-     width=64        width in screen pixels
-     width=0.5*      relative width of 0.5
-
- The span attribute causes the attributes of one
- col element to apply to more than one column.
--->
-<!ATTLIST col
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
-    Use thead to duplicate headers when breaking table
-    across page boundaries, or for static headers when
-    tbody sections are rendered in scrolling panel.
-
-    Use tfoot to duplicate footers when breaking table
-    across page boundaries, or for static footers when
-    tbody sections are rendered in scrolling panel.
-
-    Use multiple tbody sections when rules are needed
-    between groups of table rows.
--->
-<!ATTLIST thead
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tfoot
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tbody
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tr
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  bgcolor     %Color;        #IMPLIED
-  >
-
-<!-- Scope is simpler than headers attribute for common tables -->
-<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
-
-<!-- th is for headers, td for data and for cells acting as both -->
-
-<!ATTLIST th
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  nowrap      (nowrap)       #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  width       %Length;       #IMPLIED
-  height      %Length;       #IMPLIED
-  >
-
-<!ATTLIST td
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  nowrap      (nowrap)       #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  width       %Length;       #IMPLIED
-  height      %Length;       #IMPLIED
-  >
-

+ 0 - 294
book/src/main/resources/dtd/www.w3.org/TR/xhtml11/DTD/xhtml11.dtd

@@ -1,294 +0,0 @@
-<!-- ....................................................................... -->
-<!-- XHTML 1.1 DTD  ........................................................ -->
-<!-- file: xhtml11.dtd
--->
-
-<!-- XHTML 1.1 DTD
-
-     This is XHTML, a reformulation of HTML as a modular XML application.
-
-     The Extensible HyperText Markup Language (XHTML)
-     Copyright 1998-2001 World Wide Web Consortium
-        (Massachusetts Institute of Technology, Institut National de
-         Recherche en Informatique et en Automatique, Keio University).
-         All Rights Reserved.
-
-     Permission to use, copy, modify and distribute the XHTML DTD and its 
-     accompanying documentation for any purpose and without fee is hereby 
-     granted in perpetuity, provided that the above copyright notice and 
-     this paragraph appear in all copies.  The copyright holders make no 
-     representation about the suitability of the DTD for any purpose.
-
-     It is provided "as is" without expressed or implied warranty.
-
-        Author:     Murray M. Altheim <altheim@eng.sun.com>
-        Revision:   $Id: xhtml11.dtd,v 1.21 2001/05/29 16:37:01 ahby Exp $
-
--->
-<!-- This is the driver file for version 1.1 of the XHTML DTD.
-
-     Please use this formal public identifier to identify it:
-
-         "-//W3C//DTD XHTML 1.1//EN"
--->
-<!ENTITY % XHTML.version  "-//W3C//DTD XHTML 1.1//EN" >
-
-<!-- Use this URI to identify the default namespace:
-
-         "http://www.w3.org/1999/xhtml"
-
-     See the Qualified Names module for information
-     on the use of namespace prefixes in the DTD.
--->
-<!ENTITY % NS.prefixed "IGNORE" >
-<!ENTITY % XHTML.prefix "" >
-
-<!-- Reserved for use with the XLink namespace:
--->
-<!ENTITY % XLINK.xmlns "" >
-<!ENTITY % XLINK.xmlns.attrib "" >
-
-<!-- For example, if you are using XHTML 1.1 directly, use the FPI
-     in the DOCTYPE declaration, with the xmlns attribute on the
-     document element to identify the default namespace:
-
-       <?xml version="1.0"?>
-       <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "xhtml11.dtd">
-       <html xmlns="http://www.w3.org/1999/xhtml"
-             xml:lang="en">
-       ...
-       </html>
-
-     Revisions:
-     (none)
--->
-
-<!-- reserved for future use with document profiles -->
-<!ENTITY % XHTML.profile  "" >
-
-<!-- Bidirectional Text features
-     This feature-test entity is used to declare elements
-     and attributes used for bidirectional text support.
--->
-<!ENTITY % XHTML.bidi  "INCLUDE" >
-
-<?doc type="doctype" role="title" { XHTML 1.1 } ?>
-
-<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
-
-<!-- Pre-Framework Redeclaration placeholder  .................... -->
-<!-- this serves as a location to insert markup declarations
-     into the DTD prior to the framework declarations.
--->
-<!ENTITY % xhtml-prefw-redecl.module "IGNORE" >
-<![%xhtml-prefw-redecl.module;[
-%xhtml-prefw-redecl.mod;
-<!-- end of xhtml-prefw-redecl.module -->]]>
-
-<!ENTITY % xhtml-events.module "INCLUDE" >
-
-<!-- Inline Style Module  ........................................ -->
-<!ENTITY % xhtml-inlstyle.module "INCLUDE" >
-<![%xhtml-inlstyle.module;[
-<!ENTITY % xhtml-inlstyle.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Inline Style 1.0//EN"
-            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-inlstyle-1.mod" >
-%xhtml-inlstyle.mod;]]>
-
-<!-- declare Document Model module instantiated in framework
--->
-<!ENTITY % xhtml-model.mod
-     PUBLIC "-//W3C//ENTITIES XHTML 1.1 Document Model 1.0//EN"
-            "xhtml11-model-1.mod" >
-
-<!-- Modular Framework Module (required) ......................... -->
-<!ENTITY % xhtml-framework.module "INCLUDE" >
-<![%xhtml-framework.module;[
-<!ENTITY % xhtml-framework.mod
-     PUBLIC "-//W3C//ENTITIES XHTML Modular Framework 1.0//EN"
-            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-framework-1.mod" >
-%xhtml-framework.mod;]]>
-
-<!-- Post-Framework Redeclaration placeholder  ................... -->
-<!-- this serves as a location to insert markup declarations
-     into the DTD following the framework declarations.
--->
-<!ENTITY % xhtml-postfw-redecl.module "IGNORE" >
-<![%xhtml-postfw-redecl.module;[
-%xhtml-postfw-redecl.mod;
-<!-- end of xhtml-postfw-redecl.module -->]]>
-
-<!-- Text Module (Required)  ..................................... -->
-<!ENTITY % xhtml-text.module "INCLUDE" >
-<![%xhtml-text.module;[
-<!ENTITY % xhtml-text.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Text 1.0//EN"
-            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-text-1.mod" >
-%xhtml-text.mod;]]>
-
-<!-- Hypertext Module (required) ................................. -->
-<!ENTITY % xhtml-hypertext.module "INCLUDE" >
-<![%xhtml-hypertext.module;[
-<!ENTITY % xhtml-hypertext.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Hypertext 1.0//EN"
-            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-hypertext-1.mod" >
-%xhtml-hypertext.mod;]]>
-
-<!-- Lists Module (required)  .................................... -->
-<!ENTITY % xhtml-list.module "INCLUDE" >
-<![%xhtml-list.module;[
-<!ENTITY % xhtml-list.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Lists 1.0//EN"
-            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-list-1.mod" >
-%xhtml-list.mod;]]>
-
-<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
-
-<!-- Edit Module  ................................................ -->
-<!ENTITY % xhtml-edit.module "INCLUDE" >
-<![%xhtml-edit.module;[
-<!ENTITY % xhtml-edit.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Editing Elements 1.0//EN"
-            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-edit-1.mod" >
-%xhtml-edit.mod;]]>
-
-<!-- BIDI Override Module  ....................................... -->
-<!ENTITY % xhtml-bdo.module "%XHTML.bidi;" >
-<![%xhtml-bdo.module;[
-<!ENTITY % xhtml-bdo.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML BIDI Override Element 1.0//EN"
-            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-bdo-1.mod" >
-%xhtml-bdo.mod;]]>
-
-<!-- Ruby Module  ................................................ -->
-<!ENTITY % Ruby.common.attlists "INCLUDE" >
-<!ENTITY % Ruby.common.attrib "%Common.attrib;" >
-<!ENTITY % xhtml-ruby.module "INCLUDE" >
-<![%xhtml-ruby.module;[
-<!ENTITY % xhtml-ruby.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Ruby 1.0//EN"
-            "http://www.w3.org/TR/ruby/xhtml-ruby-1.mod" >
-%xhtml-ruby.mod;]]>
-
-<!-- Presentation Module  ........................................ -->
-<!ENTITY % xhtml-pres.module "INCLUDE" >
-<![%xhtml-pres.module;[
-<!ENTITY % xhtml-pres.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Presentation 1.0//EN"
-            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-pres-1.mod" >
-%xhtml-pres.mod;]]>
-
-<!-- Link Element Module  ........................................ -->
-<!ENTITY % xhtml-link.module "INCLUDE" >
-<![%xhtml-link.module;[
-<!ENTITY % xhtml-link.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Link Element 1.0//EN"
-            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-link-1.mod" >
-%xhtml-link.mod;]]>
-
-<!-- Document Metainformation Module  ............................ -->
-<!ENTITY % xhtml-meta.module "INCLUDE" >
-<![%xhtml-meta.module;[
-<!ENTITY % xhtml-meta.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Metainformation 1.0//EN"
-            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-meta-1.mod" >
-%xhtml-meta.mod;]]>
-
-<!-- Base Element Module  ........................................ -->
-<!ENTITY % xhtml-base.module "INCLUDE" >
-<![%xhtml-base.module;[
-<!ENTITY % xhtml-base.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Base Element 1.0//EN"
-            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-base-1.mod" >
-%xhtml-base.mod;]]>
-
-<!-- Scripting Module  ........................................... -->
-<!ENTITY % xhtml-script.module "INCLUDE" >
-<![%xhtml-script.module;[
-<!ENTITY % xhtml-script.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Scripting 1.0//EN"
-            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-script-1.mod" >
-%xhtml-script.mod;]]>
-
-<!-- Style Sheets Module  ......................................... -->
-<!ENTITY % xhtml-style.module "INCLUDE" >
-<![%xhtml-style.module;[
-<!ENTITY % xhtml-style.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Style Sheets 1.0//EN"
-            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-style-1.mod" >
-%xhtml-style.mod;]]>
-
-<!-- Image Module  ............................................... -->
-<!ENTITY % xhtml-image.module "INCLUDE" >
-<![%xhtml-image.module;[
-<!ENTITY % xhtml-image.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Images 1.0//EN"
-            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-image-1.mod" >
-%xhtml-image.mod;]]>
-
-<!-- Client-side Image Map Module  ............................... -->
-<!ENTITY % xhtml-csismap.module "INCLUDE" >
-<![%xhtml-csismap.module;[
-<!ENTITY % xhtml-csismap.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Client-side Image Maps 1.0//EN"
-            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-csismap-1.mod" >
-%xhtml-csismap.mod;]]>
-
-<!-- Server-side Image Map Module  ............................... -->
-<!ENTITY % xhtml-ssismap.module "INCLUDE" >
-<![%xhtml-ssismap.module;[
-<!ENTITY % xhtml-ssismap.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Server-side Image Maps 1.0//EN"
-            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-ssismap-1.mod" >
-%xhtml-ssismap.mod;]]>
-
-<!-- Param Element Module  ....................................... -->
-<!ENTITY % xhtml-param.module "INCLUDE" >
-<![%xhtml-param.module;[
-<!ENTITY % xhtml-param.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Param Element 1.0//EN"
-            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-param-1.mod" >
-%xhtml-param.mod;]]>
-
-<!-- Embedded Object Module  ..................................... -->
-<!ENTITY % xhtml-object.module "INCLUDE" >
-<![%xhtml-object.module;[
-<!ENTITY % xhtml-object.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Embedded Object 1.0//EN"
-            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-object-1.mod" >
-%xhtml-object.mod;]]>
-
-<!-- Tables Module ............................................... -->
-<!ENTITY % xhtml-table.module "INCLUDE" >
-<![%xhtml-table.module;[
-<!ENTITY % xhtml-table.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Tables 1.0//EN"
-            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-table-1.mod" >
-%xhtml-table.mod;]]>
-
-<!-- Forms Module  ............................................... -->
-<!ENTITY % xhtml-form.module "INCLUDE" >
-<![%xhtml-form.module;[
-<!ENTITY % xhtml-form.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Forms 1.0//EN"
-            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-form-1.mod" >
-%xhtml-form.mod;]]>
-
-<!-- Legacy Markup ............................................... -->
-<!ENTITY % xhtml-legacy.module "IGNORE" >
-<![%xhtml-legacy.module;[
-<!ENTITY % xhtml-legacy.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Legacy Markup 1.0//EN"
-            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-legacy-1.mod" >
-%xhtml-legacy.mod;]]>
-
-<!-- Document Structure Module (required)  ....................... -->
-<!ENTITY % xhtml-struct.module "INCLUDE" >
-<![%xhtml-struct.module;[
-<!ENTITY % xhtml-struct.mod
-     PUBLIC "-//W3C//ELEMENTS XHTML Document Structure 1.0//EN"
-            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-struct-1.mod" >
-%xhtml-struct.mod;]]>
-
-<!-- end of XHTML 1.1 DTD  ................................................. -->
-<!-- ....................................................................... -->

+ 0 - 0
book/.gitignore → modules/book/.gitignore


+ 0 - 7
book/build.gradle → modules/book/build.gradle

@@ -15,13 +15,6 @@ android {
         consumerProguardFiles "consumer-rules.pro"
     }
 
-    buildTypes {
-        release {
-            minifyEnabled false
-            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
-        }
-
-    }
     compileOptions {
         sourceCompatibility JavaVersion.VERSION_11
         targetCompatibility JavaVersion.VERSION_11

+ 0 - 0
book/consumer-rules.pro → modules/book/consumer-rules.pro


+ 0 - 0
book/src/main/AndroidManifest.xml → modules/book/src/main/AndroidManifest.xml


+ 0 - 0
book/src/main/java/me/ag2s/base/PfdHelper.java → modules/book/src/main/java/me/ag2s/base/PfdHelper.java


+ 1 - 2
book/src/main/java/me/ag2s/base/ThrowableUtils.java → modules/book/src/main/java/me/ag2s/base/ThrowableUtils.java

@@ -9,8 +9,7 @@ public class ThrowableUtils {
 
     public static @NonNull
     IOException rethrowAsIOException(Throwable throwable) throws IOException {
-        IOException newException = new IOException(throwable.getMessage());
-        newException.initCause(throwable);
+        IOException newException = new IOException(throwable.getMessage(), throwable);
         throw newException;
     }
 }

+ 13 - 0
modules/book/src/main/java/me/ag2s/epublib/Constants.java

@@ -0,0 +1,13 @@
+package me.ag2s.epublib;
+
+
+public interface Constants {
+
+    String CHARACTER_ENCODING = "UTF-8";
+    String DOCTYPE_XHTML = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">";
+    String NAMESPACE_XHTML = "http://www.w3.org/1999/xhtml";
+    String EPUB_GENERATOR_NAME = "Ag2S EpubLib";
+    String EPUB_DUOKAN_NAME = "DK-SONGTI";
+    char FRAGMENT_SEPARATOR_CHAR = '#';
+    String DEFAULT_TOC_ID = "toc";
+}

+ 157 - 0
modules/book/src/main/java/me/ag2s/epublib/browsersupport/NavigationEvent.java

@@ -0,0 +1,157 @@
+package me.ag2s.epublib.browsersupport;
+
+import java.util.EventObject;
+
+import me.ag2s.epublib.domain.EpubBook;
+import me.ag2s.epublib.domain.Resource;
+import me.ag2s.epublib.util.StringUtil;
+
+/**
+ * Used to tell NavigationEventListener just what kind of navigation action
+ * the user just did.
+ *
+ * @author paul
+ */
+@SuppressWarnings("unused")
+public class NavigationEvent extends EventObject {
+
+    private static final long serialVersionUID = -6346750144308952762L;
+
+    private Resource oldResource;
+    private int oldSpinePos;
+    private Navigator navigator;
+    private EpubBook oldBook;
+    private int oldSectionPos;
+    private String oldFragmentId;
+
+    public NavigationEvent(Object source) {
+        super(source);
+    }
+
+    public NavigationEvent(Object source, Navigator navigator) {
+        super(source);
+        this.navigator = navigator;
+        this.oldBook = navigator.getBook();
+        this.oldFragmentId = navigator.getCurrentFragmentId();
+        this.oldSectionPos = navigator.getCurrentSectionPos();
+        this.oldResource = navigator.getCurrentResource();
+        this.oldSpinePos = navigator.getCurrentSpinePos();
+    }
+
+    /**
+     * The previous position within the section.
+     *
+     * @return The previous position within the section.
+     */
+    public int getOldSectionPos() {
+        return oldSectionPos;
+    }
+
+    public Navigator getNavigator() {
+        return navigator;
+    }
+
+    public String getOldFragmentId() {
+        return oldFragmentId;
+    }
+
+    // package
+    void setOldFragmentId(String oldFragmentId) {
+        this.oldFragmentId = oldFragmentId;
+    }
+
+    public EpubBook getOldBook() {
+        return oldBook;
+    }
+
+    // package
+    void setOldPagePos(int oldPagePos) {
+        this.oldSectionPos = oldPagePos;
+    }
+
+    public int getCurrentSectionPos() {
+        return navigator.getCurrentSectionPos();
+    }
+
+    public int getOldSpinePos() {
+        return oldSpinePos;
+    }
+
+    public int getCurrentSpinePos() {
+        return navigator.getCurrentSpinePos();
+    }
+
+    public String getCurrentFragmentId() {
+        return navigator.getCurrentFragmentId();
+    }
+
+    public boolean isBookChanged() {
+        if (oldBook == null) {
+            return true;
+        }
+        return oldBook != navigator.getBook();
+    }
+
+    public boolean isSpinePosChanged() {
+        return getOldSpinePos() != getCurrentSpinePos();
+    }
+
+    public boolean isFragmentChanged() {
+        return StringUtil.equals(getOldFragmentId(), getCurrentFragmentId());
+    }
+
+    public Resource getOldResource() {
+        return oldResource;
+    }
+
+    public Resource getCurrentResource() {
+        return navigator.getCurrentResource();
+    }
+
+    public void setOldResource(Resource oldResource) {
+        this.oldResource = oldResource;
+    }
+
+
+    public void setOldSpinePos(int oldSpinePos) {
+        this.oldSpinePos = oldSpinePos;
+    }
+
+
+    public void setNavigator(Navigator navigator) {
+        this.navigator = navigator;
+    }
+
+
+    public void setOldBook(EpubBook oldBook) {
+        this.oldBook = oldBook;
+    }
+
+    public EpubBook getCurrentBook() {
+        return getNavigator().getBook();
+    }
+
+    public boolean isResourceChanged() {
+        return oldResource != getCurrentResource();
+    }
+
+    @SuppressWarnings("NullableProblems")
+    public String toString() {
+        return StringUtil.toString(
+                "oldSectionPos", oldSectionPos,
+                "oldResource", oldResource,
+                "oldBook", oldBook,
+                "oldFragmentId", oldFragmentId,
+                "oldSpinePos", oldSpinePos,
+                "currentPagePos", getCurrentSectionPos(),
+                "currentResource", getCurrentResource(),
+                "currentBook", getCurrentBook(),
+                "currentFragmentId", getCurrentFragmentId(),
+                "currentSpinePos", getCurrentSpinePos()
+        );
+    }
+
+    public boolean isSectionPosChanged() {
+        return oldSectionPos != getCurrentSectionPos();
+    }
+}

+ 6 - 7
book/src/main/java/me/ag2s/epublib/browsersupport/NavigationEventListener.java → modules/book/src/main/java/me/ag2s/epublib/browsersupport/NavigationEventListener.java

@@ -5,14 +5,13 @@ package me.ag2s.epublib.browsersupport;
  * another location in the book.
  *
  * @author paul
- *
  */
 public interface NavigationEventListener {
 
-  /**
-   * Called whenever the user navigates to another position in the book.
-   *
-   * @param navigationEvent f
-   */
-  void navigationPerformed(NavigationEvent navigationEvent);
+    /**
+     * Called whenever the user navigates to another position in the book.
+     *
+     * @param navigationEvent f
+     */
+    void navigationPerformed(NavigationEvent navigationEvent);
 }

+ 207 - 0
modules/book/src/main/java/me/ag2s/epublib/browsersupport/NavigationHistory.java

@@ -0,0 +1,207 @@
+package me.ag2s.epublib.browsersupport;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import me.ag2s.epublib.domain.EpubBook;
+import me.ag2s.epublib.domain.Resource;
+
+/**
+ * A history of the user's locations with the epub.
+ *
+ * @author paul.siegmann
+ */
+public class NavigationHistory implements NavigationEventListener {
+
+    public static final int DEFAULT_MAX_HISTORY_SIZE = 1000;
+    private static final long DEFAULT_HISTORY_WAIT_TIME = 1000;
+
+    private static class Location {
+
+        private String href;
+
+        public Location(String href) {
+            super();
+            this.href = href;
+        }
+
+        @SuppressWarnings("unused")
+        public void setHref(String href) {
+            this.href = href;
+        }
+
+        public String getHref() {
+            return href;
+        }
+    }
+
+    private long lastUpdateTime = 0;
+    private List<Location> locations = new ArrayList<>();
+    private final Navigator navigator;
+    private int currentPos = -1;
+    private int currentSize = 0;
+    private int maxHistorySize = DEFAULT_MAX_HISTORY_SIZE;
+    private long historyWaitTime = DEFAULT_HISTORY_WAIT_TIME;
+
+    public NavigationHistory(Navigator navigator) {
+        this.navigator = navigator;
+        navigator.addNavigationEventListener(this);
+        initBook(navigator.getBook());
+    }
+
+    public int getCurrentPos() {
+        return currentPos;
+    }
+
+
+    public int getCurrentSize() {
+        return currentSize;
+    }
+
+    public void initBook(EpubBook book) {
+        if (book == null) {
+            return;
+        }
+        locations = new ArrayList<>();
+        currentPos = -1;
+        currentSize = 0;
+        if (navigator.getCurrentResource() != null) {
+            addLocation(navigator.getCurrentResource().getHref());
+        }
+    }
+
+    /**
+     * If the time between a navigation event is less than the historyWaitTime
+     * then the new location is not added to the history.
+     * <p>
+     * When a user is rapidly viewing many pages using the slider we do not
+     * want all of them to be added to the history.
+     *
+     * @return the time we wait before adding the page to the history
+     */
+    public long getHistoryWaitTime() {
+        return historyWaitTime;
+    }
+
+    public void setHistoryWaitTime(long historyWaitTime) {
+        this.historyWaitTime = historyWaitTime;
+    }
+
+    public void addLocation(Resource resource) {
+        if (resource == null) {
+            return;
+        }
+        addLocation(resource.getHref());
+    }
+
+    /**
+     * Adds the location after the current position.
+     * If the currentposition is not the end of the list then the elements
+     * between the current element and the end of the list will be discarded.
+     * <p>
+     * Does nothing if the new location matches the current location.
+     * <br/>
+     * If this nr of locations becomes larger then the historySize then the
+     * first item(s) will be removed.
+     * v
+     *
+     * @param location d
+     */
+    public void addLocation(Location location) {
+        // do nothing if the new location matches the current location
+        if (!(locations.isEmpty()) &&
+                location.getHref().equals(locations.get(currentPos).getHref())) {
+            return;
+        }
+        currentPos++;
+        if (currentPos != currentSize) {
+            locations.set(currentPos, location);
+        } else {
+            locations.add(location);
+            checkHistorySize();
+        }
+        currentSize = currentPos + 1;
+    }
+
+    /**
+     * Removes all elements that are too much for the maxHistorySize
+     * out of the history.
+     */
+    private void checkHistorySize() {
+        while (locations.size() > maxHistorySize) {
+            locations.remove(0);
+            currentSize--;
+            currentPos--;
+        }
+    }
+
+    public void addLocation(String href) {
+        addLocation(new Location(href));
+    }
+
+    private String getLocationHref(int pos) {
+        if (pos < 0 || pos >= locations.size()) {
+            return null;
+        }
+        return locations.get(currentPos).getHref();
+    }
+
+    /**
+     * Moves the current positions delta positions.
+     * <p>
+     * move(-1) to go one position back in history.<br/>
+     * move(1) to go one position forward.<br/>发
+     *
+     * @param delta f
+     * @return Whether we actually moved. If the requested value is illegal
+     * it will return false, true otherwise.
+     */
+    public boolean move(int delta) {
+        if (((currentPos + delta) < 0)
+                || ((currentPos + delta) >= currentSize)) {
+            return false;
+        }
+        currentPos += delta;
+        navigator.gotoResource(getLocationHref(currentPos), this);
+        return true;
+    }
+
+
+    /**
+     * If this is not the source of the navigationEvent then the addLocation
+     * will be called with the href of the currentResource in the navigationEvent.
+     */
+    @Override
+    public void navigationPerformed(NavigationEvent navigationEvent) {
+        if (this == navigationEvent.getSource()) {
+            return;
+        }
+        if (navigationEvent.getCurrentResource() == null) {
+            return;
+        }
+
+        if ((System.currentTimeMillis() - this.lastUpdateTime) > historyWaitTime) {
+            // if the user scrolled rapidly through the pages then the last page
+            // will not be added to the history. We fix that here:
+            addLocation(navigationEvent.getOldResource());
+
+            addLocation(navigationEvent.getCurrentResource().getHref());
+        }
+        lastUpdateTime = System.currentTimeMillis();
+    }
+
+    public String getCurrentHref() {
+        if (currentPos < 0 || currentPos >= locations.size()) {
+            return null;
+        }
+        return locations.get(currentPos).getHref();
+    }
+
+    public void setMaxHistorySize(int maxHistorySize) {
+        this.maxHistorySize = maxHistorySize;
+    }
+
+    public int getMaxHistorySize() {
+        return maxHistorySize;
+    }
+}

+ 219 - 0
modules/book/src/main/java/me/ag2s/epublib/browsersupport/Navigator.java

@@ -0,0 +1,219 @@
+package me.ag2s.epublib.browsersupport;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import me.ag2s.epublib.domain.EpubBook;
+import me.ag2s.epublib.domain.Resource;
+
+/**
+ * A helper class for epub browser applications.
+ * <p>
+ * It helps moving from one resource to the other, from one resource
+ * to the other and keeping other elements of the application up-to-date
+ * by calling the NavigationEventListeners.
+ *
+ * @author paul
+ */
+public class Navigator implements Serializable {
+
+    private static final long serialVersionUID = 1076126986424925474L;
+    private EpubBook book;
+    private int currentSpinePos;
+    private Resource currentResource;
+    private int currentPagePos;
+    private String currentFragmentId;
+
+    private final List<NavigationEventListener> eventListeners = new ArrayList<>();
+
+    public Navigator() {
+        this(null);
+    }
+
+    public Navigator(EpubBook book) {
+        this.book = book;
+        this.currentSpinePos = 0;
+        if (book != null) {
+            this.currentResource = book.getCoverPage();
+        }
+        this.currentPagePos = 0;
+    }
+
+    private synchronized void handleEventListeners(
+            NavigationEvent navigationEvent) {
+        for (int i = 0; i < eventListeners.size(); i++) {
+            NavigationEventListener navigationEventListener = eventListeners.get(i);
+            navigationEventListener.navigationPerformed(navigationEvent);
+        }
+    }
+
+    public boolean addNavigationEventListener(
+            NavigationEventListener navigationEventListener) {
+        return this.eventListeners.add(navigationEventListener);
+    }
+
+    public boolean removeNavigationEventListener(
+            NavigationEventListener navigationEventListener) {
+        return this.eventListeners.remove(navigationEventListener);
+    }
+
+    public int gotoFirstSpineSection(Object source) {
+        return gotoSpineSection(0, source);
+    }
+
+    public int gotoPreviousSpineSection(Object source) {
+        return gotoPreviousSpineSection(0, source);
+    }
+
+    public int gotoPreviousSpineSection(int pagePos, Object source) {
+        if (currentSpinePos < 0) {
+            return gotoSpineSection(0, pagePos, source);
+        } else {
+            return gotoSpineSection(currentSpinePos - 1, pagePos, source);
+        }
+    }
+
+    public boolean hasNextSpineSection() {
+        return (currentSpinePos < (book.getSpine().size() - 1));
+    }
+
+    public boolean hasPreviousSpineSection() {
+        return (currentSpinePos > 0);
+    }
+
+    public int gotoNextSpineSection(Object source) {
+        if (currentSpinePos < 0) {
+            return gotoSpineSection(0, source);
+        } else {
+            return gotoSpineSection(currentSpinePos + 1, source);
+        }
+    }
+
+    public int gotoResource(String resourceHref, Object source) {
+        Resource resource = book.getResources().getByHref(resourceHref);
+        return gotoResource(resource, source);
+    }
+
+
+    public int gotoResource(Resource resource, Object source) {
+        return gotoResource(resource, 0, null, source);
+    }
+
+    public int gotoResource(Resource resource, String fragmentId, Object source) {
+        return gotoResource(resource, 0, fragmentId, source);
+    }
+
+    public int gotoResource(Resource resource, int pagePos, Object source) {
+        return gotoResource(resource, pagePos, null, source);
+    }
+
+    public int gotoResource(Resource resource, int pagePos, String fragmentId,
+                            Object source) {
+        if (resource == null) {
+            return -1;
+        }
+        NavigationEvent navigationEvent = new NavigationEvent(source, this);
+        this.currentResource = resource;
+        this.currentSpinePos = book.getSpine().getResourceIndex(currentResource);
+        this.currentPagePos = pagePos;
+        this.currentFragmentId = fragmentId;
+        handleEventListeners(navigationEvent);
+
+        return currentSpinePos;
+    }
+
+    public int gotoResourceId(String resourceId, Object source) {
+        return gotoSpineSection(book.getSpine().findFirstResourceById(resourceId),
+                source);
+    }
+
+    public int gotoSpineSection(int newSpinePos, Object source) {
+        return gotoSpineSection(newSpinePos, 0, source);
+    }
+
+    /**
+     * Go to a specific section.
+     * Illegal spine positions are silently ignored.
+     *
+     * @param newSpinePos f
+     * @param source      f
+     * @return The current position within the spine
+     */
+    public int gotoSpineSection(int newSpinePos, int newPagePos, Object source) {
+        if (newSpinePos == currentSpinePos) {
+            return currentSpinePos;
+        }
+        if (newSpinePos < 0 || newSpinePos >= book.getSpine().size()) {
+            return currentSpinePos;
+        }
+        NavigationEvent navigationEvent = new NavigationEvent(source, this);
+        currentSpinePos = newSpinePos;
+        currentPagePos = newPagePos;
+        currentResource = book.getSpine().getResource(currentSpinePos);
+        handleEventListeners(navigationEvent);
+        return currentSpinePos;
+    }
+
+    public int gotoLastSpineSection(Object source) {
+        return gotoSpineSection(book.getSpine().size() - 1, source);
+    }
+
+    public void gotoBook(EpubBook book, Object source) {
+        NavigationEvent navigationEvent = new NavigationEvent(source, this);
+        this.book = book;
+        this.currentFragmentId = null;
+        this.currentPagePos = 0;
+        this.currentResource = null;
+        this.currentSpinePos = book.getSpine().getResourceIndex(currentResource);
+        handleEventListeners(navigationEvent);
+    }
+
+    /**
+     * The current position within the spine.
+     *
+     * @return something &lt; 0 if the current position is not within the spine.
+     */
+    public int getCurrentSpinePos() {
+        return currentSpinePos;
+    }
+
+    public Resource getCurrentResource() {
+        return currentResource;
+    }
+
+    /**
+     * Sets the current index and resource without calling the eventlisteners.
+     * <p>
+     * If you want the eventListeners called use gotoSection(index);
+     *
+     * @param currentIndex f
+     */
+    public void setCurrentSpinePos(int currentIndex) {
+        this.currentSpinePos = currentIndex;
+        this.currentResource = book.getSpine().getResource(currentIndex);
+    }
+
+    public EpubBook getBook() {
+        return book;
+    }
+
+    /**
+     * Sets the current index and resource without calling the eventlisteners.
+     * <p>
+     * If you want the eventListeners called use gotoSection(index);
+     */
+    public int setCurrentResource(Resource currentResource) {
+        this.currentSpinePos = book.getSpine().getResourceIndex(currentResource);
+        this.currentResource = currentResource;
+        return currentSpinePos;
+    }
+
+    public String getCurrentFragmentId() {
+        return currentFragmentId;
+    }
+
+    public int getCurrentSectionPos() {
+        return currentPagePos;
+    }
+}

+ 1 - 1
book/src/main/java/me/ag2s/epublib/browsersupport/package-info.java → modules/book/src/main/java/me/ag2s/epublib/browsersupport/package-info.java

@@ -1,6 +1,6 @@
 /**
  * Provides classes that help make an epub reader application.
- *
+ * <p>
  * These classes have no dependencies on graphic toolkits, they're purely
  * to help with the browsing/navigation logic.
  */

+ 0 - 0
book/src/main/java/me/ag2s/epublib/domain/Author.java → modules/book/src/main/java/me/ag2s/epublib/domain/Author.java


+ 0 - 0
book/src/main/java/me/ag2s/epublib/domain/Date.java → modules/book/src/main/java/me/ag2s/epublib/domain/Date.java


+ 0 - 0
book/src/main/java/me/ag2s/epublib/domain/EpubBook.java → modules/book/src/main/java/me/ag2s/epublib/domain/EpubBook.java


+ 37 - 0
modules/book/src/main/java/me/ag2s/epublib/domain/EpubResourceProvider.java

@@ -0,0 +1,37 @@
+package me.ag2s.epublib.domain;
+
+import androidx.annotation.NonNull;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import me.ag2s.epublib.util.zip.ZipEntryWrapper;
+import me.ag2s.epublib.util.zip.ZipFileWrapper;
+
+/**
+ * @author jake
+ */
+public class EpubResourceProvider implements LazyResourceProvider {
+
+
+    private final ZipFileWrapper zipFileWrapper;
+
+
+    public EpubResourceProvider(ZipFileWrapper zipFileWrapper) {
+        this.zipFileWrapper = zipFileWrapper;
+    }
+
+
+    @Override
+    public InputStream getResourceStream(@NonNull String href) throws IOException {
+
+        //ZipFile zipFile = new ZipFile(epubFilename);
+        ZipEntryWrapper zipEntry = zipFileWrapper.getEntry(href);
+        if (zipEntry == null) {
+            //zipFile.close();
+            throw new IllegalStateException(
+                    "Cannot find entry " + href + " in epub file " + zipFileWrapper);
+        }
+        return new ResourceInputStream(zipFileWrapper.getInputStream(zipEntry));
+    }
+}

+ 3 - 1
book/src/main/java/me/ag2s/epublib/domain/FileResourceProvider.java → modules/book/src/main/java/me/ag2s/epublib/domain/FileResourceProvider.java

@@ -7,7 +7,6 @@ import java.io.InputStream;
 
 /**
  * 用于创建epub,添加大文件(如大量图片)时容易OOM,使用LazyResource,避免OOM.
- *
  */
 
 public class FileResourceProvider implements LazyResourceProvider {
@@ -16,6 +15,7 @@ public class FileResourceProvider implements LazyResourceProvider {
 
     /**
      * 创建一个文件夹里面文件夹的LazyResourceProvider,用于LazyResource。
+     *
      * @param parentDir 文件的目录
      */
     public FileResourceProvider(String parentDir) {
@@ -24,6 +24,7 @@ public class FileResourceProvider implements LazyResourceProvider {
 
     /**
      * 创建一个文件夹里面文件夹的LazyResourceProvider,用于LazyResource。
+     *
      * @param parentFile 文件夹
      */
     @SuppressWarnings("unused")
@@ -33,6 +34,7 @@ public class FileResourceProvider implements LazyResourceProvider {
 
     /**
      * 根据子文件名href,再父目录下读取文件获取FileInputStream
+     *
      * @param href 子文件名href
      * @return 对应href的FileInputStream
      * @throws IOException 抛出IOException

+ 128 - 0
modules/book/src/main/java/me/ag2s/epublib/domain/Guide.java

@@ -0,0 +1,128 @@
+package me.ag2s.epublib.domain;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * The guide is a selection of special pages of the book.
+ * Examples of these are the cover, list of illustrations, etc.
+ * <p>
+ * It is an optional part of an epub, and support for the various types
+ * of references varies by reader.
+ * <p>
+ * The only part of this that is heavily used is the cover page.
+ *
+ * @author paul
+ */
+public class Guide implements Serializable {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = -6256645339915751189L;
+
+    public static final String DEFAULT_COVER_TITLE = GuideReference.COVER;
+
+    private List<GuideReference> references = new ArrayList<>();
+    private static final int COVERPAGE_NOT_FOUND = -1;
+    private static final int COVERPAGE_UNITIALIZED = -2;
+
+    private int coverPageIndex = -1;
+
+    public List<GuideReference> getReferences() {
+        return references;
+    }
+
+    public void setReferences(List<GuideReference> references) {
+        this.references = references;
+        uncheckCoverPage();
+    }
+
+    private void uncheckCoverPage() {
+        coverPageIndex = COVERPAGE_UNITIALIZED;
+    }
+
+    public GuideReference getCoverReference() {
+        checkCoverPage();
+        if (coverPageIndex >= 0) {
+            return references.get(coverPageIndex);
+        }
+        return null;
+    }
+
+    @SuppressWarnings("UnusedReturnValue")
+    public int setCoverReference(GuideReference guideReference) {
+        if (coverPageIndex >= 0) {
+            references.set(coverPageIndex, guideReference);
+        } else {
+            references.add(0, guideReference);
+            coverPageIndex = 0;
+        }
+        return coverPageIndex;
+    }
+
+    private void checkCoverPage() {
+        if (coverPageIndex == COVERPAGE_UNITIALIZED) {
+            initCoverPage();
+        }
+    }
+
+
+    private void initCoverPage() {
+        int result = COVERPAGE_NOT_FOUND;
+        for (int i = 0; i < references.size(); i++) {
+            GuideReference guideReference = references.get(i);
+            if (guideReference.getType().equals(GuideReference.COVER)) {
+                result = i;
+                break;
+            }
+        }
+        coverPageIndex = result;
+    }
+
+    /**
+     * The coverpage of the book.
+     *
+     * @return The coverpage of the book.
+     */
+    public Resource getCoverPage() {
+        GuideReference guideReference = getCoverReference();
+        if (guideReference == null) {
+            return null;
+        }
+        return guideReference.getResource();
+    }
+
+    public void setCoverPage(Resource coverPage) {
+        GuideReference coverpageGuideReference = new GuideReference(coverPage,
+                GuideReference.COVER, DEFAULT_COVER_TITLE);
+        setCoverReference(coverpageGuideReference);
+    }
+
+    @SuppressWarnings("UnusedReturnValue")
+    public ResourceReference addReference(GuideReference reference) {
+        this.references.add(reference);
+        uncheckCoverPage();
+        return reference;
+    }
+
+    /**
+     * A list of all GuideReferences that have the given
+     * referenceTypeName (ignoring case).
+     *
+     * @param referenceTypeName referenceTypeName
+     * @return A list of all GuideReferences that have the given
+     * referenceTypeName (ignoring case).
+     */
+    public List<GuideReference> getGuideReferencesByType(
+            String referenceTypeName) {
+        List<GuideReference> result = new ArrayList<>();
+        for (GuideReference guideReference : references) {
+            if (referenceTypeName.equalsIgnoreCase(guideReference.getType())) {
+                result.add(guideReference);
+            }
+        }
+        return result;
+    }
+}

+ 100 - 0
modules/book/src/main/java/me/ag2s/epublib/domain/GuideReference.java

@@ -0,0 +1,100 @@
+package me.ag2s.epublib.domain;
+
+import java.io.Serializable;
+
+import me.ag2s.epublib.util.StringUtil;
+
+
+/**
+ * These are references to elements of the book's guide.
+ *
+ * @author paul
+ * @see Guide
+ */
+public class GuideReference extends TitledResourceReference
+        implements Serializable {
+
+    private static final long serialVersionUID = -316179702440631834L;
+
+    /**
+     * the book cover(s), jacket information, etc.
+     */
+    public static final String COVER = "cover";
+
+    /**
+     * human-readable page with title, author, publisher, and other metadata
+     */
+    public static String TITLE_PAGE = "title-page";
+
+    /**
+     * Human-readable table of contents.
+     * Not to be confused the epub file table of contents
+     */
+    public static String TOC = "toc";
+
+    /**
+     * back-of-book style index
+     */
+    public static String INDEX = "index";
+    public static String GLOSSARY = "glossary";
+    public static String ACKNOWLEDGEMENTS = "acknowledgements";
+    public static String BIBLIOGRAPHY = "bibliography";
+    public static String COLOPHON = "colophon";
+    public static String COPYRIGHT_PAGE = "copyright-page";
+    public static String DEDICATION = "dedication";
+
+    /**
+     * an epigraph is a phrase, quotation, or poem that is set at the
+     * beginning of a document or component.
+     * <p>
+     * source: http://en.wikipedia.org/wiki/Epigraph_%28literature%29
+     */
+    public static String EPIGRAPH = "epigraph";
+
+    public static String FOREWORD = "foreword";
+
+    /**
+     * list of illustrations
+     */
+    public static String LOI = "loi";
+
+    /**
+     * list of tables
+     */
+    public static String LOT = "lot";
+    public static String NOTES = "notes";
+    public static String PREFACE = "preface";
+
+    /**
+     * A page of content (e.g. "Chapter 1")
+     */
+    public static String TEXT = "text";
+
+    private String type;
+
+    public GuideReference(Resource resource) {
+        this(resource, null);
+    }
+
+    public GuideReference(Resource resource, String title) {
+        super(resource, title);
+    }
+
+    public GuideReference(Resource resource, String type, String title) {
+        this(resource, type, title, null);
+    }
+
+    public GuideReference(Resource resource, String type, String title,
+                          String fragmentId) {
+        super(resource, title, fragmentId);
+        this.type = StringUtil.isNotBlank(type) ? type.toLowerCase() : null;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+}

+ 133 - 0
modules/book/src/main/java/me/ag2s/epublib/domain/Identifier.java

@@ -0,0 +1,133 @@
+package me.ag2s.epublib.domain;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.UUID;
+
+import me.ag2s.epublib.util.StringUtil;
+
+/**
+ * A Book's identifier.
+ * <p>
+ * Defaults to a random UUID and scheme "UUID"
+ *
+ * @author paul
+ */
+public class Identifier implements Serializable {
+
+    private static final long serialVersionUID = 955949951416391810L;
+
+    @SuppressWarnings("unused")
+    public interface Scheme {
+
+        String UUID = "UUID";
+        String ISBN = "ISBN";
+        String URL = "URL";
+        String URI = "URI";
+    }
+
+    private boolean bookId = false;
+    private String scheme;
+    private String value;
+
+    /**
+     * Creates an Identifier with as value a random UUID and scheme "UUID"
+     */
+    public Identifier() {
+        this(Scheme.UUID, UUID.randomUUID().toString());
+    }
+
+
+    public Identifier(String scheme, String value) {
+        this.scheme = scheme;
+        this.value = value;
+    }
+
+    /**
+     * The first identifier for which the bookId is true is made the
+     * bookId identifier.
+     * <p>
+     * If no identifier has bookId == true then the first bookId identifier
+     * is written as the primary.
+     *
+     * @param identifiers i
+     * @return The first identifier for which the bookId is true is made
+     * the bookId identifier.
+     */
+    public static Identifier getBookIdIdentifier(List<Identifier> identifiers) {
+        if (identifiers == null || identifiers.isEmpty()) {
+            return null;
+        }
+
+        Identifier result = null;
+        for (Identifier identifier : identifiers) {
+            if (identifier.isBookId()) {
+                result = identifier;
+                break;
+            }
+        }
+
+        if (result == null) {
+            result = identifiers.get(0);
+        }
+
+        return result;
+    }
+
+    public String getScheme() {
+        return scheme;
+    }
+
+    public void setScheme(String scheme) {
+        this.scheme = scheme;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+
+    public void setBookId(boolean bookId) {
+        this.bookId = bookId;
+    }
+
+
+    /**
+     * This bookId property allows the book creator to add multiple ids and
+     * tell the epubwriter which one to write out as the bookId.
+     * <p>
+     * The Dublin Core metadata spec allows multiple identifiers for a Book.
+     * The epub spec requires exactly one identifier to be marked as the book id.
+     *
+     * @return whether this is the unique book id.
+     */
+    public boolean isBookId() {
+        return bookId;
+    }
+
+    public int hashCode() {
+        return StringUtil.defaultIfNull(scheme).hashCode() ^ StringUtil
+                .defaultIfNull(value).hashCode();
+    }
+
+    public boolean equals(Object otherIdentifier) {
+        if (!(otherIdentifier instanceof Identifier)) {
+            return false;
+        }
+        return StringUtil.equals(scheme, ((Identifier) otherIdentifier).scheme)
+                && StringUtil.equals(value, ((Identifier) otherIdentifier).value);
+    }
+
+    @SuppressWarnings("NullableProblems")
+    @Override
+    public String toString() {
+        if (StringUtil.isBlank(scheme)) {
+            return "" + value;
+        }
+        return "" + scheme + ":" + value;
+    }
+}

+ 145 - 0
modules/book/src/main/java/me/ag2s/epublib/domain/LazyResource.java

@@ -0,0 +1,145 @@
+package me.ag2s.epublib.domain;
+
+import android.util.Log;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import me.ag2s.epublib.util.IOUtil;
+
+/**
+ * A Resource that loads its data only on-demand from a EPUB book file.
+ * This way larger books can fit into memory and can be opened faster.
+ */
+public class LazyResource extends Resource {
+
+    private static final long serialVersionUID = 5089400472352002866L;
+    private final String TAG = getClass().getName();
+
+    private final LazyResourceProvider resourceProvider;
+    private final long cachedSize;
+
+    /**
+     * Creates a lazy resource, when the size is unknown.
+     *
+     * @param resourceProvider The resource provider loads data on demand.
+     * @param href             The resource's href within the epub.
+     */
+    public LazyResource(LazyResourceProvider resourceProvider, String href) {
+        this(resourceProvider, -1, href);
+    }
+
+    public LazyResource(LazyResourceProvider resourceProvider, String href, String originalHref) {
+        this(resourceProvider, -1, href, originalHref);
+    }
+
+    /**
+     * Creates a Lazy resource, by not actually loading the data for this entry.
+     * <p>
+     * The data will be loaded on the first call to getData()
+     *
+     * @param resourceProvider The resource provider loads data on demand.
+     * @param size             The size of this resource.
+     * @param href             The resource's href within the epub.
+     */
+    public LazyResource(
+            LazyResourceProvider resourceProvider, long size, String href) {
+        super(null, null, href, MediaTypes.determineMediaType(href));
+        this.resourceProvider = resourceProvider;
+        this.cachedSize = size;
+    }
+
+    public LazyResource(
+            LazyResourceProvider resourceProvider, long size, String href, String originalHref) {
+        super(null, null, href, originalHref, MediaTypes.determineMediaType(href));
+        this.resourceProvider = resourceProvider;
+        this.cachedSize = size;
+    }
+
+    /**
+     * Gets the contents of the Resource as an InputStream.
+     *
+     * @return The contents of the Resource.
+     * @throws IOException IOException
+     */
+    public InputStream getInputStream() throws IOException {
+        if (isInitialized()) {
+            return new ByteArrayInputStream(getData());
+        } else {
+            return resourceProvider.getResourceStream(this.originalHref);
+        }
+    }
+
+    /**
+     * Initializes the resource by loading its data into memory.
+     *
+     * @throws IOException IOException
+     */
+    public void initialize() throws IOException {
+        getData();
+    }
+
+    /**
+     * The contents of the resource as a byte[]
+     * <p>
+     * If this resource was lazy-loaded and the data was not yet loaded,
+     * it will be loaded into memory at this point.
+     * This included opening the zip file, so expect a first load to be slow.
+     *
+     * @return The contents of the resource
+     */
+    public byte[] getData() throws IOException {
+
+        if (data == null) {
+
+            Log.d(TAG, "Initializing lazy resource: " + this.getHref());
+
+            InputStream in = resourceProvider.getResourceStream(this.originalHref);
+            byte[] readData = IOUtil.toByteArray(in, (int) this.cachedSize);
+            if (readData == null) {
+                throw new IOException(
+                        "Could not load the contents of resource: " + this.getHref());
+            } else {
+                this.data = readData;
+            }
+
+            in.close();
+        }
+
+        return data;
+    }
+
+    /**
+     * Tells this resource to release its cached data.
+     * <p>
+     * If this resource was not lazy-loaded, this is a no-op.
+     */
+    public void close() {
+        if (this.resourceProvider != null) {
+            this.data = null;
+        }
+    }
+
+    /**
+     * Returns if the data for this resource has been loaded into memory.
+     *
+     * @return true if data was loaded.
+     */
+    public boolean isInitialized() {
+        return data != null;
+    }
+
+    /**
+     * Returns the size of this resource in bytes.
+     *
+     * @return the size.
+     */
+    public long getSize() {
+        if (data != null) {
+            return data.length;
+        }
+
+        return cachedSize;
+    }
+}

+ 1 - 1
book/src/main/java/me/ag2s/epublib/domain/LazyResourceProvider.java → modules/book/src/main/java/me/ag2s/epublib/domain/LazyResourceProvider.java

@@ -8,5 +8,5 @@ import java.io.InputStream;
  */
 public interface LazyResourceProvider {
 
-  InputStream getResourceStream(String href) throws IOException;
+    InputStream getResourceStream(String href) throws IOException;
 }

+ 22 - 0
modules/book/src/main/java/me/ag2s/epublib/domain/ManifestItemProperties.java

@@ -0,0 +1,22 @@
+package me.ag2s.epublib.domain;
+
+@SuppressWarnings("unused")
+public enum ManifestItemProperties implements ManifestProperties {
+    COVER_IMAGE("cover-image"),
+    MATHML("mathml"),
+    NAV("nav"),
+    REMOTE_RESOURCES("remote-resources"),
+    SCRIPTED("scripted"),
+    SVG("svg"),
+    SWITCH("switch");
+
+    private final String name;
+
+    ManifestItemProperties(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+}

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio