1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
Index: src/mgr/stringmgr.cpp
===================================================================
--- src/mgr/stringmgr.cpp (revision 3718)
+++ src/mgr/stringmgr.cpp (revision 3721)
@@ -20,6 +20,7 @@
*
*/
+#include <ctype.h>
#include <stringmgr.h>
#include <swlog.h>
#include <localemgr.h>
Index: src/modules/filters/osisxhtml.cpp
===================================================================
--- src/modules/filters/osisxhtml.cpp (revision 3718)
+++ src/modules/filters/osisxhtml.cpp (revision 3721)
@@ -849,7 +849,11 @@
else if (tag.isEndTag()) {
outText("</div>", buf, u);
}
- else if (!(type == "colophon")) outText(tag, buf, u);
+ else if (!(type == "colophon")) {
+ if (tag.getAttribute("sID")) tag.setEmpty(false);
+ if (tag.getAttribute("eID")) tag.setEndTag(true);
+ outText(tag, buf, u);
+ }
}
else if (!strcmp(tag.getName(), "span")) {
Index: src/utilfuns/utilxml.cpp
===================================================================
--- src/utilfuns/utilxml.cpp (revision 3718)
+++ src/utilfuns/utilxml.cpp (revision 3721)
@@ -291,13 +291,16 @@
tag.append('/');
tag.append(getName());
- for (StringPairMap::iterator it = attributes.begin(); it != attributes.end(); it++) {
- //tag.appendFormatted(" %s=\"%s\"", it->first.c_str(), it->second.c_str());
- tag.append(' ');
- tag.append(it->first.c_str());
- tag.append((strchr(it->second.c_str(), '\"')) ? "=\'" : "=\"");
- tag.append(it->second.c_str());
- tag.append((strchr(it->second.c_str(), '\"'))? '\'' : '\"');
+
+ if (!isEndTag()) {
+ for (StringPairMap::iterator it = attributes.begin(); it != attributes.end(); it++) {
+ //tag.appendFormatted(" %s=\"%s\"", it->first.c_str(), it->second.c_str());
+ tag.append(' ');
+ tag.append(it->first.c_str());
+ tag.append((strchr(it->second.c_str(), '\"')) ? "=\'" : "=\"");
+ tag.append(it->second.c_str());
+ tag.append((strchr(it->second.c_str(), '\"'))? '\'' : '\"');
+ }
}
if (isEmpty())
Index: include/utilxml.h
===================================================================
--- include/utilxml.h (revision 3718)
+++ include/utilxml.h (revision 3721)
@@ -75,6 +75,13 @@
* otherwise, we return if we're a simple XML end </tag>.
*/
bool isEndTag(const char *eID = 0) const;
+ inline void setEndTag(bool value) {
+ if (!parsed)
+ parse();
+ endTag = value;
+ if (value)
+ empty = false;
+ }
const StringList getAttributeNames() const;
int getAttributePartCount(const char *attribName, char partSplit = '|') const;
|