XMLSS样式继承

时间:2010-05-27 14:45:27

标签: xml excel

我正在通过XMLSS创建XML工作簿,我发现自己陷入了一个特定的位置。

根据http://msdn.microsoft.com/en-us/library/aa140066(office.10).aspx#odc_xmlss_ss:style处的文档,<ss:Style />标记具有可用属性ss:Parent,它允许给定样式继承先前定义的样式的属性。但是,我正在努力工作。

当我打开工作簿时,我没有收到任何错误,并且正确应用了子样式的属性,但父样式中的所有属性都没有结转。

由于XMLSS在MSDN文档之外没有很好地记录,我来到StackOverflow群体寻求帮助。在ss:Parent元素中使用<ss:Style />字符是否有任何警告?

1 个答案:

答案 0 :(得分:4)

嗨user352078(吸引人的名字)

实际上,SpreadsheetML中的样式继承(通过“ss:Parent =”)确实有效(至少它对我有用)但是你可能遇到过 - 据我所知,没有任何记录 - 问题: 如果重新定义样式元素(在下面的示例中),则不会继承已定义的样式。因此,sty_ProjektzeileStatus必须定义Borders-Style的每个方面,尽管我对Bottom具有相同的样式(即LineStyle:“Dash”等)。

因此,如果Borders以继承方式重新定义,Borders的所有现有styledefinitions都会被抛弃并且必须被定义(实际上并不是太糟糕,因为这样你就不必明确了从继承样式的父样式中删除现有样式。)

<Style ss:ID="sty_ProjektzeileTexte" ss:Name="Texte">
   <Font ss:Bold="1" />
   <NumberFormat ss:Format="Standard" />
   <Borders>
      <Border ss:Position="Bottom" ss:LineStyle="Dash" ss:Weight="1" />
   </Borders>
</Style>

<Style ss:ID="sty_ProjektzeileStatus" ss:Parent="sty_ProjektzeileTexte">
   <!-- Overwrites original definition -->
   <NumberFormat ss:Format="0" />
   <!-- Although only Right line is added to the original definition from the parent style, 
        all 'sides' of the border element need to be defined, 
        even style for Bottom that is unchanged -->
   <Borders>
      <Border ss:Position="Bottom" ss:LineStyle="Dash" ss:Weight="1" />
      <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="2" />
   </Borders>
   <!-- Only fontstyle Bold is actually inherited -->
</Style>

我希望能回答你的问题。我只记得遇到一个问题,在父级和子级样式中设置名称(ss:Name =)会产生一些意想不到的后果,但我不记得是否会导致损坏的继承)。

HTH

安德烈亚斯