@@ -33,9 +33,10 @@ module Text.Pandoc.Writers.Docbook (
33import Text.Pandoc.Definition
33import Text.Pandoc.Definition
34import Text.Pandoc.Shared
34import Text.Pandoc.Shared
35import Text.Pandoc.Writers.HTML ( stringToSmartHtml, stringToHtml )
35import Text.Pandoc.Writers.HTML ( stringToSmartHtml, stringToHtml )
36+import Text.Pandoc.HtmlEntities ( encodeEntities )
36import Text.Html ( stringToHtmlString )
37import Text.Html ( stringToHtmlString )
37import Text.Regex ( mkRegex, matchRegex )
38import Text.Regex ( mkRegex, matchRegex )
38−import Data.Char ( toLower )
39+import Data.Char ( toLower, ord )
39import Data.List ( isPrefixOf, partition )
40import Data.List ( isPrefixOf, partition )
40import Text.PrettyPrint.HughesPJ hiding ( Str )
41import Text.PrettyPrint.HughesPJ hiding ( Str )
@@ -179,9 +180,10 @@ wrap options lst = fsep $ map (hcat . (map (inlineToDocbook options))) (splitByS
180-- | Escape a string for XML (with "smart" option if specified).
181-- | Escape a string for XML (with "smart" option if specified).
181stringToXML :: WriterOptions -> String -> String
182stringToXML :: WriterOptions -> String -> String
183+stringToXML options = encodeEntities .
182−stringToXML options = if writerSmart options
184+ (if writerSmart options
183− then stringToSmartHtml
185+ then stringToSmartHtml
184− else stringToHtml
186+ else stringToHtml)
186-- | Escape string to XML appropriate for attributes
188-- | Escape string to XML appropriate for attributes
187attributeStringToXML :: String -> String
189attributeStringToXML :: String -> String
@@ -189,7 +191,7 @@ attributeStringToXML = gsub "\"" """ . codeStringToXML
190-- | Escape a literal string for XML.
192-- | Escape a literal string for XML.
191codeStringToXML :: String -> String
193codeStringToXML :: String -> String
192−codeStringToXML = gsub "<" "<" . gsub "&" "&"
194+codeStringToXML = encodeEntities . gsub "<" "<" . gsub "&" "&"
194-- | Convert a list of inline elements to Docbook.
196-- | Convert a list of inline elements to Docbook.
195inlinesToDocbook :: WriterOptions -> [Inline] -> Doc
197inlinesToDocbook :: WriterOptions -> [Inline] -> Doc