Skip to content

Commit 6605d93

Browse files
committed
partial fix for DTD
1 parent 3399f85 commit 6605d93

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

src/raw.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,9 @@ function next(o::Raw)
260260
elseif c3 === 'D'
261261
type = RawDTD
262262
j = findnext(==(UInt8('>')), data, i)
263+
while sum(==(UInt8('>')), data[i:j]) != sum(==(UInt8('<')), data[i:j])
264+
j = findnext(==(UInt8('>')), data, j + 1)
265+
end
263266
end
264267
elseif c2 === '?'
265268
if get_name(data, i + 2)[1] == "xml"

test/runtests.jl

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,3 +169,32 @@ end
169169
o["id"] = 1
170170
@test o["id"] == "1"
171171
end
172+
173+
#-----------------------------------------------------------------------------# Issues
174+
@testset "Issues" begin
175+
#12
176+
s = """
177+
<?xml version="1.0" encoding="UTF-8"?>
178+
179+
<!DOCTYPE note [
180+
<!ENTITY nbsp "&#xA0;">
181+
<!ENTITY writer "Writer: Donald Duck.">
182+
<!ENTITY copyright "Copyright: W3Schools.">
183+
]>
184+
185+
<note>
186+
<to>Tove</to>
187+
<from>Jani</from>
188+
<heading>Reminder</heading>
189+
<body>Don't forget me this weekend!</body>
190+
<footer>&writer;&nbsp;&copyright;</footer>
191+
</note>
192+
"""
193+
194+
doc = parse(s, Node)
195+
@test value(doc[2]) == """note [
196+
<!ENTITY nbsp "&#xA0;">
197+
<!ENTITY writer "Writer: Donald Duck.">
198+
<!ENTITY copyright "Copyright: W3Schools.">
199+
]"""
200+
end

0 commit comments

Comments
 (0)