具有w:type =“ table”和w:default =“ 1”属性的w:style是否自动应用于没有w:tblStyle的w:tbl?

时间:2019-12-17 02:21:38

标签: openxml

我发现一张桌子有填充样式,但它的[TestClass] public class UnitTest1 { [TestMethod] public void DivideTest1() { // Func<Task> action = async()=> { AsyncMathsStatic.Divide(4, 0); }; //action.Should().Throw<DivideByZeroException>(); Assert.ThrowsExceptionAsync<DivideByZeroException>(async () => AsyncMathsStatic.Divide(4, 0)); } } public class AsyncMathsStatic { public static async void Divide(int v1, int v2) { try { if (v1/v2 > 1) { // do something time consuming } } catch (DivideByZeroException ex) { throw; } } } 没有w:tbl。在这种情况下,具有w:tblStylew:style属性的w:type="table"是否有效?

背景是我正在使用XSLT转换Open XML标记。

1 个答案:

答案 0 :(得分:1)

您问题的简短答案是“是”;如果未明确分配任何样式,则将应用默认样式。

WordprocessingML中有四种不同类型的样式,即paragraphcharactertablenumbering样式。对于每种类型(例如table),通过具有属性w:tbl,一种样式被标记为相关Open XML元素(例如w:default="1"元素)的默认样式。典型的默认样式如下所示:

  <w:style w:type="paragraph" w:default="1" w:styleId="Normal">
    <w:name w:val="Normal"/>
    <w:qFormat/>
  </w:style>

  <w:style w:type="character" w:default="1" w:styleId="DefaultParagraphFont">
    <w:name w:val="Default Paragraph Font"/>
    <w:uiPriority w:val="1"/>
    <w:semiHidden/>
    <w:unhideWhenUsed/>
  </w:style>

  <w:style w:type="table" w:default="1" w:styleId="TableNormal">
    <w:name w:val="Normal Table"/>
    <w:uiPriority w:val="99"/>
    <w:semiHidden/>
    <w:unhideWhenUsed/>
    <w:tblPr>
      <w:tblInd w:w="0" w:type="dxa"/>
      <w:tblCellMar>
        <w:top w:w="0" w:type="dxa"/>
        <w:left w:w="108" w:type="dxa"/>
        <w:bottom w:w="0" w:type="dxa"/>
        <w:right w:w="108" w:type="dxa"/>
      </w:tblCellMar>
    </w:tblPr>
  </w:style>

  <w:style w:type="numbering" w:default="1" w:styleId="NoList">
    <w:name w:val="No List"/>
    <w:uiPriority w:val="99"/>
    <w:semiHidden/>
    <w:unhideWhenUsed/>
  </w:style>

例如,如果您有w:p(段落),w:r(运行)或w:tbl(表)元素,而没有为其分配明确的样式(例如,使用{ {1}},w:pStylew:rStyle),这些类型的元素的默认样式将适用。