【发布时间】:2016-11-23 10:16:31
【问题描述】:
我正在使用带有 Antenna House Formatter v6.3 的 XSL-FO 来设计飞行手册。
很多信息的类型是“如果条件 X 做这做那,否则做其他事情”。在当前情况下,我有以下 XML:
<crewDrill>
<case>
<caseCond>Hot inside:</caseCond>
<if>
<caseCond>Yes</caseCond>
<crewDrillStep>
<para>Adjust thermostat</para>
</crewDrillStep>
<crewDrillStep>
<para>Open the window</para>
</crewDrillStep>
</if>
</case>
<crewDrillStep>
<para>Enjoy life</para>
</crewDrillStep>
</crewDrill>
这个 XML 的期望输出是:
编辑:所以我担心使用 XSLT 将 XML 转换为 XSL-FO(包括 Antenna House Formatter 中的功能)所需的输出是否可行,如果是这样,解决问题的正确方法是什么?鉴于我对 XSL-FO 的了解,我能做到这一点的唯一方法是使用表。也许有更好的方法。
编辑 2:正如@Tomalak 指出的那样,这实际上是两个问题——XSL-FO 结构的外观以及 XSLT 转换的外观。我主要关心的是表示所需输出的 XSL-FO 结构的外观。给定一个目标结构,我大概能够弄清楚这些转换。很抱歉最初的问题不清楚,感谢@Tomalak 澄清我的担忧。
使用的 XML 模式源自 S1000D 4.1 Crew 模式
【问题讨论】:
-
好的,所以你有两个问题,你应该一个接一个地解决它们。 问题 1:是否存在 FOP XML 文档会导致 PDF 看起来像这样。答:我不知道。也许是通过表格的一些技巧,也许是通过 SVG。您的第一步应该是弄清楚这一点并手动编写相应的 XML,而不使用任何 XSLT。
-
问题 2:给定所需的 FOP XML 和一些输入 XML,XSLT 会如何生成这个?当你解决了第一个问题时,你应该解决这个问题。这也比第一个问题容易得多。因此,一旦您知道要创建的目标 XML 是什么,您自己就可以轻松地完成工作了。
-
我会说更好的方法是生成 SVG,就像@Tomalak 提到的那样。
-
SVG 可能只有在图表用于一页时才是一个好的解决方案。如果图表内允许中断,那么表格(带有列表)是一个不错的解决方案。
标签: xml xslt xsl-fo antenna-house