【发布时间】:2014-08-22 20:54:45
【问题描述】:
我尝试使用 XSLT 将 XML 结构转换为 FO 脚本。我对编号的标题有疑问。 我有一个这样的 XML 结构:
<?xml version="1.0"?>
<document>
<type1>
<heading>Topic level1</heading>
<paragraph>Text</paragraph>
</type1>
<type2>
<heading>Topic level1</heading>
<paragraph>Text</paragraph>
</type2>
<type1>
<heading>Topic level1</heading>
<type1>
<heading>Topic level2</heading>
<paragraph>Text</paragraph>
</type1>
<heading>Topic level3</heading>
<paragraph>Text</paragraph>
</type1>
</type1>
</type1>
...
</document>
原始的 XML 结构嵌套更深,元素更多。 现在我有一个这样的模板:
<xsl:template match="type1/heading | type2/heading | type3/heading | type4/heading |
type5/heading | type6/heading | type7/heading">
<fo:block font-weight="bold" font-size="13pt" space-after="5mm" id="{generate-
Id()}">
<xsl:number count="type1| type2| type3| type4| type5| type6 | type7"
format="1.1" level="multiple"/> 
<xsl:apply-templates/>
</fo:block>
</xsl:template>
输出基本没问题。但所有标题都有相同的样式参数。我想为不同的标题级别设置不同的样式。 比如这样:
1。主题级别1
文字
2。主题级别1
文字
3。主题级别1
文字
3.1 主题级别2
文字
3.1.1 主题级别3
文字
我该怎么做?
【问题讨论】:
-
您能否 (a) 将您的输入示例修正为格式良好的 XML,并 (b) 将您的预期结果作为代码发布?
-
有很多方法可以做你想做的事,但你需要展示更多的模板,特别是它们后面的内容或“type”元素中的其他内容。您可以在每个“类型”元素的匹配项中应用样式,并让标题继承该样式。
标签: xslt numbers xsl-fo heading