Kaydet (Commit) b263c922 authored tarafından Miklos Vajna's avatar Miklos Vajna

sw XHTML export: close <col> for tables

By switching to HtmlWriter instead of manually constructing HTML
elements / attributes.

Also fix a validity problem for ReqIF (transitional XHTML still allows
that, so not depending on mbXHTML here).

Change-Id: I4f3fef781fdbb4c72824701ad6d380cece8e6f81
Reviewed-on: https://gerrit.libreoffice.org/53120Reviewed-by: 's avatarMiklos Vajna <vmiklos@collabora.co.uk>
Tested-by: 's avatarJenkins <ci@libreoffice.org>
üst 8a1a9899
......@@ -56,9 +56,12 @@ private:
setFilterOptions("XHTML");
else if (getTestName().indexOf("ReqIf") != -1)
{
setImportFilterOptions("xhtmlns=reqif-xhtml");
// Bypass filter detect.
setImportFilterName("HTML (StarWriter)");
if (OString(filename).endsWith(".xhtml"))
{
setImportFilterOptions("xhtmlns=reqif-xhtml");
// Bypass filter detect.
setImportFilterName("HTML (StarWriter)");
}
// Export options (implies XHTML).
setFilterOptions("xhtmlns=reqif-xhtml");
}
......@@ -475,6 +478,18 @@ DECLARE_HTMLEXPORT_TEST(testReqIfTable, "reqif-table.xhtml")
assertXPathNoAttribute(pDoc, "/html/body/div/table/tr/th", "bgcolor");
}
DECLARE_HTMLEXPORT_TEST(testReqIfTable2, "reqif-table2.odt")
{
SvStream* pStream = maTempFile.GetStream(StreamMode::READ);
CPPUNIT_ASSERT(pStream);
pStream->Seek(STREAM_SEEK_TO_END);
sal_uInt64 nLength = pStream->Tell();
pStream->Seek(0);
OString aStream(read_uInt8s_ToOString(*pStream, nLength));
// This failed, <reqif-xhtml:td width="..."> was written.
CPPUNIT_ASSERT(aStream.indexOf("<reqif-xhtml:td>") != -1);
}
DECLARE_HTMLEXPORT_TEST(testReqIfList, "reqif-list.xhtml")
{
SvStream* pStream = maTempFile.GetStream(StreamMode::READ);
......
......@@ -340,6 +340,10 @@ void SwHTMLWrtTable::OutTableCell( SwHTMLWriter& rWrt,
nWidth = GetAbsWidth( nCol, nColSpan );
}
if (rWrt.mbReqIF)
// ReqIF implies strict XHTML: no width for <td>.
bOutWidth = false;
long nHeight = pCell->GetHeight() > 0
? GetAbsHeight( pCell->GetHeight(), nRow, nRowSpan )
: 0;
......@@ -734,8 +738,8 @@ void SwHTMLWrtTable::Write( SwHTMLWriter& rWrt, sal_Int16 eAlign,
const SwWriteTableCol *pColumn = m_aCols[nCol];
OStringBuffer sOutStr;
sOutStr.append('<').append(rWrt.GetNamespace() + OOO_STRING_SVTOOLS_HTML_col);
HtmlWriter html(rWrt.Strm(), rWrt.maNamespace);
html.start(OOO_STRING_SVTOOLS_HTML_col);
sal_uInt32 nWidth;
bool bRel;
......@@ -750,14 +754,11 @@ void SwHTMLWrtTable::Write( SwHTMLWriter& rWrt, sal_Int16 eAlign,
nWidth = bRel ? GetRelWidth(nCol,1) : GetAbsWidth(nCol,1);
}
sOutStr.append(' ').append(OOO_STRING_SVTOOLS_HTML_O_width).
append("=\"");
if( bRel )
sOutStr.append(static_cast<sal_Int32>(nWidth)).append('*');
html.attribute(OOO_STRING_SVTOOLS_HTML_O_width, OString::number(nWidth) + "*");
else
sOutStr.append(static_cast<sal_Int32>(SwHTMLWriter::ToPixel(nWidth,false)));
sOutStr.append("\">");
rWrt.Strm().WriteCharPtr( sOutStr.makeStringAndClear().getStr() );
html.attribute(OOO_STRING_SVTOOLS_HTML_O_width, OString::number(SwHTMLWriter::ToPixel(nWidth,false)));
html.end();
if( bColGroups && pColumn->bRightBorder && nCol<nCols-1 )
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment