diff options
| author | Myriad-Dreamin <35292584+Myriad-Dreamin@users.noreply.github.com> | 2024-03-01 19:42:01 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-01 11:42:01 +0000 |
| commit | dadd657e0a19675655dd9c4946420786e51325d9 (patch) | |
| tree | e0859edae0b63b5045ec55308be7d8c952b4927f | |
| parent | 1e2c239971a940463179a93e0383f39204e4f95d (diff) | |
Allow DTD in XML parsing (#3534)
| -rw-r--r-- | crates/typst/src/loading/xml.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/crates/typst/src/loading/xml.rs b/crates/typst/src/loading/xml.rs index 338b2f30..fde7d55a 100644 --- a/crates/typst/src/loading/xml.rs +++ b/crates/typst/src/loading/xml.rs @@ -1,4 +1,5 @@ use ecow::EcoString; +use roxmltree::ParsingOptions; use crate::diag::{format_xml_like_error, At, FileError, SourceResult}; use crate::engine::Engine; @@ -80,8 +81,12 @@ impl xml { let text = std::str::from_utf8(data.as_slice()) .map_err(FileError::from) .at(span)?; - let document = - roxmltree::Document::parse(text).map_err(format_xml_error).at(span)?; + let document = roxmltree::Document::parse_with_options( + text, + ParsingOptions { allow_dtd: true, ..Default::default() }, + ) + .map_err(format_xml_error) + .at(span)?; Ok(convert_xml(document.root())) } } |
