summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2018-02-27 13:51:13 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2018-02-28 11:41:50 +0100
commit9df0ce081eac287154ea496e9eb299b4bc4fa776 (patch)
tree662ab6bae70678e9a5d9a760e37b6c0bf21966a5 /sw
parent81260c448911069ce8cb051d3a973ec52b9b43a3 (diff)
sw HTML export: allow custom XHTML namespace alias
This helps in case the HTML filter expected to produce an XHTML fragment that has an explicit namespace alias for <http://www.w3.org/1999/xhtml>. This only has an effect when HtmlWriter is used to write elements, though. Change-Id: I161caf4bb6bc6d0c21a7a67433b08bb060b447f1 Reviewed-on: https://gerrit.libreoffice.org/50448 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Diffstat (limited to 'sw')
-rw-r--r--sw/source/filter/html/htmlatr.cxx10
-rw-r--r--sw/source/filter/html/htmlflywriter.cxx2
-rw-r--r--sw/source/filter/html/wrthtml.cxx12
-rw-r--r--sw/source/filter/html/wrthtml.hxx2
4 files changed, 18 insertions, 8 deletions
diff --git a/sw/source/filter/html/htmlatr.cxx b/sw/source/filter/html/htmlatr.cxx
index 2f2e1805b8dc..ed2d017e6914 100644
--- a/sw/source/filter/html/htmlatr.cxx
+++ b/sw/source/filter/html/htmlatr.cxx
@@ -753,7 +753,7 @@ void OutHTML_SwFormat( Writer& rWrt, const SwFormat& rFormat,
// if necessary, start a new list item
if( rInfo.bInNumBulList && bNumbered )
{
- HtmlWriter html(rWrt.Strm());
+ HtmlWriter html(rWrt.Strm(), rHWrt.maNamespace);
html.start(OOO_STRING_SVTOOLS_HTML_li);
if( USHRT_MAX != nNumStart )
html.attribute(OOO_STRING_SVTOOLS_HTML_O_value, OString::number(nNumStart));
@@ -2017,7 +2017,7 @@ Writer& OutHTML_SwTextNode( Writer& rWrt, const SwContentNode& rNode )
rHTMLWrt.m_bLFPossible = true;
- HtmlWriter aHtml(rWrt.Strm());
+ HtmlWriter aHtml(rWrt.Strm(), rHTMLWrt.maNamespace);
aHtml.start(OOO_STRING_SVTOOLS_HTML_horzrule);
const SfxItemSet* pItemSet = pNd->GetpSwAttrSet();
@@ -2461,7 +2461,7 @@ Writer& OutHTML_SwTextNode( Writer& rWrt, const SwContentNode& rNode )
if( 0x0a == c )
{
HTMLOutFuncs::FlushToAscii( rWrt.Strm(), aContext );
- HtmlWriter aHtml(rWrt.Strm());
+ HtmlWriter aHtml(rWrt.Strm(), rHTMLWrt.maNamespace);
aHtml.single(OOO_STRING_SVTOOLS_HTML_linebreak);
}
else if (c == CH_TXT_ATR_FORMELEMENT)
@@ -2511,7 +2511,7 @@ Writer& OutHTML_SwTextNode( Writer& rWrt, const SwContentNode& rNode )
}
else
{
- HtmlWriter aHtml(rHTMLWrt.Strm());
+ HtmlWriter aHtml(rHTMLWrt.Strm(), rHTMLWrt.maNamespace);
aHtml.single(OOO_STRING_SVTOOLS_HTML_linebreak);
const SvxULSpaceItem& rULSpace = pNd->GetSwAttrSet().Get(RES_UL_SPACE);
if (rULSpace.GetLower() > 0 &&
@@ -2539,7 +2539,7 @@ Writer& OutHTML_SwTextNode( Writer& rWrt, const SwContentNode& rNode )
pString = OOO_STRING_SVTOOLS_HTML_AL_right;
}
- HtmlWriter aHtml(rHTMLWrt.Strm());
+ HtmlWriter aHtml(rHTMLWrt.Strm(), rHTMLWrt.maNamespace);
aHtml.start(OOO_STRING_SVTOOLS_HTML_linebreak);
aHtml.attribute(OOO_STRING_SVTOOLS_HTML_O_clear, pString);
aHtml.end();
diff --git a/sw/source/filter/html/htmlflywriter.cxx b/sw/source/filter/html/htmlflywriter.cxx
index 0924ad6d6555..4c0decd45437 100644
--- a/sw/source/filter/html/htmlflywriter.cxx
+++ b/sw/source/filter/html/htmlflywriter.cxx
@@ -1230,7 +1230,7 @@ Writer& OutHTML_Image( Writer& rWrt, const SwFrameFormat &rFrameFormat,
if( rHTMLWrt.m_bLFPossible )
rHTMLWrt.OutNewLine( true );
- HtmlWriter aHtml(rWrt.Strm());
+ HtmlWriter aHtml(rWrt.Strm(), rHTMLWrt.maNamespace);
// <a name=...></a>...<img ...>
if( pMarkType && !rFrameFormat.GetName().isEmpty() )
diff --git a/sw/source/filter/html/wrthtml.cxx b/sw/source/filter/html/wrthtml.cxx
index 717365e535de..3831cee4fbc2 100644
--- a/sw/source/filter/html/wrthtml.cxx
+++ b/sw/source/filter/html/wrthtml.cxx
@@ -183,8 +183,16 @@ void SwHTMLWriter::SetupFilterOptions(SfxMedium& rMedium)
{
mbEmbedImages = true;
}
- else if (sFilterOptions == "XHTML")
- mbXHTML = true;
+
+ uno::Sequence<OUString> aOptionSeq = comphelper::string::convertCommaSeparated(sFilterOptions);
+ const OUString aXhtmlNsKey("xhtmlns=");
+ for (const auto& rOption : aOptionSeq)
+ {
+ if (rOption == "XHTML")
+ mbXHTML = true;
+ else if (rOption.startsWith(aXhtmlNsKey))
+ maNamespace = rOption.copy(aXhtmlNsKey.getLength()).toUtf8();
+ }
}
ErrCode SwHTMLWriter::WriteStream()
diff --git a/sw/source/filter/html/wrthtml.hxx b/sw/source/filter/html/wrthtml.hxx
index 8a14d96db7d7..488f7eed5a5b 100644
--- a/sw/source/filter/html/wrthtml.hxx
+++ b/sw/source/filter/html/wrthtml.hxx
@@ -386,6 +386,8 @@ public:
bool mbEmbedImages : 1;
/// If XHTML markup should be written instead of HTML.
bool mbXHTML = false;
+ /// XML namespace, in case of XHTML.
+ OString maNamespace;
#define sCSS2_P_CLASS_leaders "leaders"
bool m_bCfgPrintLayout : 1; // PrintLayout option for TOC dot leaders