XML 中的 ODT 表样式不起作用
Posted
技术标签:
【中文标题】XML 中的 ODT 表样式不起作用【英文标题】:ODT table styles in XML not working 【发布时间】:2016-12-06 17:55:05 【问题描述】:我正在开发一个可生成相当大的 ODT 文件的应用程序。该应用程序将 XML 写入 content.xml、styles.xml 等。我正在尝试在表格上获得一些简单的表格样式,并且在生成文件后,我可以验证这一切都是在 XML 方面通过的我希望它可以,但是当我在文字处理器中打开文件时,实际上并没有显示任何样式。我已经把它分解为只是试图让一个简单的表格显示一些样式,即使这样也根本不起作用。
在“自动样式”标签中,我有这个样式 sn-p。
<style:style style:name="mytable" style:family="table">
<style:properties
fo:background-color="#666666"
style:
fo:margin-left="4.5pt"
fo:margin-top="0pt"
fo:margin-bottom="0pt"
table:align="left"
/>
</style:style>
<style:style style:name="mytable.A" style:family="table-column">
<style:properties fo:background-color="#000000" style:column-/>
</style:style>
<style:style style:name="mytable.B" style:family="table-column">
<style:properties style:column-/>
</style:style>
<style:style style:name="mytable.C" style:family="table-column">
<style:properties style:column-/>
</style:style>
<style:style style:name="mytable.D" style:family="table-column">
<style:properties style:column-/>
</style:style>
编辑:这是我的实时文档的屏幕截图。这是该文档中的 content.xml 部分,上面发布的样式是相同的。
<table:table table:name="mytable" table:style-name="mytable">
<table:table-columns>
<table:table-column table:style-name="mytable.A"/>
<table:table-column table:style-name="mytable.B"/>
<table:table-column table:style-name="mytable.C"/>
<table:table-column table:style-name="mytable.D"/>
</table:table-columns>
<table:table-header-rows>
<table:table-row>
<table:table-cell table:style-name="mytable.A1" office:value-type="string">
<text:p text:style-name="P39">citation</text:p>
</table:table-cell>
<table:table-cell table:style-name="mytable.B1" office:value-type="string">
<text:p text:style-name="P39">title</text:p>
</table:table-cell>
<table:table-cell table:style-name="mytable.C1" office:value-type="string">
<text:p text:style-name="P39">description</text:p>
</table:table-cell>
<table:table-cell table:style-name="mytable.D1" office:value-type="string">
<text:p p text:style-name="P38"/>
</table:table-cell>
</table:table-row>
</table:table-header-rows>
<table:table-row>
<table:table-cell table:style-name="mytable.A2" office:value-type="string">
<text:p p text:style-name="P39">Administrative Safe-guards</text:p>
</table:table-cell>
<table:table-cell table:style-name="mytable.B2" office:value-type="string">
<text:p p text:style-name="P39"/>
</table:table-cell>
<table:table-cell table:style-name="mytable.C2" office:value-type="string">
<text:p p text:style-name="P39"/>
</table:table-cell>
<table:table-cell table:style-name="mytable.D2" office:value-type="string">
<text:p p text:style-name="P38"/>
</table:table-cell>
</table:table-row>
</table:table>
【问题讨论】:
您能否发布一张 Writer 中表格的屏幕截图? 我在编辑中添加了截图以及 content.xml 中的实际 xml 【参考方案1】:子节点应该是style:table-properties
,而不是style:properties
。 http://books.evc-cit.info/odbook/ch04.html#text-table-style-section 对此进行了解释。
<office:automatic-styles>
<style:style style:name="mytable" style:family="table">
<style:table-properties
fo:background-color="#666666"
style:
fo:margin-left="4.5pt"
fo:margin-top="0pt"
fo:margin-bottom="0pt"
table:align="left"
/>
</style:style>
【讨论】:
我一开始确实尝试过,但并没有解决它,我要离开 apache 的文档,在第 256 行找到 openoffice.org/xml/xml_specification.pdf 进行更改后,它对我有用,如图所示。您使用的是什么操作系统和 Office 版本?您链接的 PDF 文档是 2002 年的,所以语法可能已经过时了。 我在 Windows 上使用 Apache OpenOffice 4.1.3 对其进行了测试。 为了确定,我再次尝试更改它,但我仍然得到相同的结果。我也使用相同的版本,截图已发布在我对该问题的编辑中。 编辑的代码给了我一个错误。它多次提到text:p p
,OpenOffice 拒绝了。在将它们更改为 text:p
之后,我不得不再次将标签更改为 table-properties
,然后它就起作用了。以上是关于XML 中的 ODT 表样式不起作用的主要内容,如果未能解决你的问题,请参考以下文章
为啥 /**/ 注释在样式表中起作用,而 // 注释却不起作用?
CSS/JS 在 HTML 中不起作用,错误:MIME 类型 ('text/html') 不是受支持的样式表 MIME 类型