Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions OpenXmlPowerTools.Tests/DocumentAssemblerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ public class DaTests
[InlineData("DA264-InvalidRunLevelRepeat.docx", "DA-Data.xml", true)]
[InlineData("DA265-RunLevelRepeatWithWhiteSpaceBefore.docx", "DA-Data.xml", false)]
[InlineData("DA266-RunLevelRepeat-NoData.docx", "DA-Data.xml", true)]
[InlineData("DA268-Block-Conditional-In-Table-Cell.docx", "DA268-data.xml", false)]
public void DA101(string name, string data, bool err)
{
var sourceDir = new DirectoryInfo("../../../../TestFiles/");
Expand Down
17 changes: 16 additions & 1 deletion OpenXmlPowerTools/DocumentAssembler/DocumentAssembler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -873,9 +873,24 @@ private class RunReplacementInfo
}
return null;
}
var transformedNodes = element.Nodes().Select(n => ContentReplacementTransform(n, data, templateError, owningPart));
if (element.Name == W.tc)
{
// Check if the table cell contains any block-level elements
// Valid block-level elements in a table cell: p (paragraph), tbl (table), sdt (structured document tag), customXml
var nodesList = transformedNodes.ToList();
var hasBlockLevelContent = nodesList.Any(n => n is XElement xe &&
(xe.Name == W.p || xe.Name == W.tbl || xe.Name == W.sdt || xe.Name == W.customXml));
if (!hasBlockLevelContent)
{
// Table cells must contain at least one block-level element -- add an empty paragraph
nodesList.Add(new XElement(W.p));
}
transformedNodes = nodesList;
}
return new XElement(element.Name,
element.Attributes(),
element.Nodes().Select(n => ContentReplacementTransform(n, data, templateError, owningPart)));
transformedNodes);
}
return node;
}
Expand Down
Binary file not shown.
4 changes: 4 additions & 0 deletions TestFiles/DA268-data.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<Dummy>
<a>False</a>
</Dummy>
Loading