【问题标题】:xslt transformation to fo: Generating numberd headings with different formattingxslt 转换:生成具有不同格式的编号标题
【发布时间】: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"/>&#160;
      <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


【解决方案1】:

您可以通过计算&lt;xsl:number&gt; 结果中的点数或type1 | 的祖先数来确定当前标题的级别。 type2等

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-29
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多