Indesign和XML - 如何自动流入具有不同样式的多个页面?

时间:2010-03-11 18:40:16

标签: xml adobe-indesign

我现在有点问题。我正在尝试使用indesign(cs3)和xml。

基本上我有一个模板,它有1个主dps,两个页面都有相同的数据(字段1-5)但是一个是左对齐,一个是右 - 因此段落样式略有不同。我想要做的是导入xml并使indesign将来自各个节点的数据流转到许多页面。

例如xml格式:

root
  day
    field1
    field2
    field3
    field4
    field5
  day
    field1
    field2
    field3
    field4
    field5
  day
    ...

我几乎可以通过标记母版页上的框架,然后创建页面并导入xml来完成这项工作,但是它只会将前2个节点流入页面中,以获得所有节点的总计数。

我也可以通过从未标记的母版创建页面然后使用field1-5标记标记帧然后导入xml来使其工作。这会填充第一页,但是我找不到让其余数据流入新页面的方法......

我错过了什么吗?我是一个完全笨蛋吗?如果有人能提供任何帮助,我们将不胜感激......

7 个答案:

答案 0 :(得分:5)

我意识到这是一个较老的问题,但我相信我在这里有一些见解。

InDesign将根据XML文件的大小创建框架和页面。

以下是...... 我正在引用CS6来获得这个答案,但是我已经在CS3开始这么多年了。

  1. 确保您的Indd模板至少有2页。这些可以是镜像左右布局的母版页。页面必须具有相同的主文本框架。创建新文档时,这是一个选项。

  2. 像往常一样导入XML。请务必按照XML工作流程选择所需的任何选项。

  3. 将XML放入主文本框架中。由于我通常会传输整个文档,因此我选择根元素并拖动到框架,但这将适用于您选择的任何节点。

  4. 如果XML的内容大于框架可以支持的内容,则在框架右下角的方框中会出现红色加号(+)。单击加号,您将看到一个包含纸质图标和XML内容表示的箭头。

  5. 转到第2页的文本框。如果您只是在框架内单击,InDesign将流动尽可能多的内容以适应该框架,您需要通过添加页面和放置内容再次重复该过程到最后。

  6. 但是,如果在放置内容时按住SHIFT键,纸张图标将变为旋涡箭头。放置后,InDesign会将内容自动流向左右页面,直到XML选择结束。如果您有母版页,它将在整个过程中使用这些页面。

  7. 如果您的标签映射到样式,则样式将显示在页面上。

    关于将标记映射到样式的一个注意事项...执行标记/样式映射之前以放置内容。否则,InDesign将需要重绘页面。这是一项占用大量内存的操作,可能会因InDesign文件大小而导致InDesign崩溃。如果有的话,比放置之前映射样式需要更长的时间。

    我希望这有助于某人。我没有看到Adobe或任何其他论坛记录的此操作。 InDesign中有许多未记录的操作和功能,特别是关于XML。

答案 1 :(得分:1)

您需要确保在故事编辑器中,代码会准确反映根目录下XML中的代码。

在您的示例中,这可能涉及在dayfield1等标记周围添加“field2”标记。

然后,当您使用克隆重复文本元素时,将包含所有日期。

答案 2 :(得分:0)

引用“Adobe InDesign和XML设计指南”:

  

...如果没有脚本或第三方插件,我们无法(我们知道)让InDesign自动从结构化布局创建多个页面,如第4课第4课中的步骤4所示。可以创建所有六张卡片,而不是像我们在其他方法中那样自动生成。

虽然它基于CS3,但CS4或CS5中可能有一个选项。我想这意味着唯一的选择是使用IDML。这似乎相当复杂,但它可能会完成工作。

来自"Adobe InDesign CS3 and XML:A Technical Reference"

  

克隆重复的文字元素。选择此选项可在当前文件中复制多个元素的格式。

     

InDesign允许您克隆重复文本元素的布局。您可以创建单个格式设置实例(在此示例中为配方),然后重复使用该布局为所有其他内容创建页面。

......这表明可以做到。

但是又来自"Create placeholders for repeating content"

  

然而,一个关键点是Adobe®InDesign®CS2永远不会创建新框架或添加页面以适应新的XML元素。

那么,最终的判决是什么?仔细阅读和重读所有内容,我得到的印象是这就是他们所说的:

  • 由于某个元素的出现,您的设计无法自动复制(新页面)。
  • 但是,如果您正确地订购了标签,那么 - 使用样式 - 您可以使XML文档的内容浮动到文本框架中,这会产生XML的几个部分文件以类似的方式,一遍又一遍地展开。
  • 但是,为了确保所有文本 浮动到该文本框架中并且反复使用标记,您需要检查“克隆”导入时重复文本元素“选项。否则(至少那是我得到的印象;我自己没有尝试过)它只会应用标签第一次出现的布局,然后忽略所有连续出现。

因此,如果真正想要实例化多个页面,我认为除了将您的设计导出到IDML并拥有某种处理器modify the contents of the IDML files之外别无选择。

答案 3 :(得分:0)

上述答案并非完全正确。你必须阅读整本书才能获得正确的信息。可以创建XML数据并将其传输到多个页面。上面的引用来自错误的部分。它正在讨论使用本书第4章中描述的“框架方法”。事实上,使用“流程方法”很容易做到你想要的。

如果flow方法不能按您希望的方式工作,您可以使用XSLT构建所需的方法。

答案 4 :(得分:0)

还有一个建议,不要在母版页上标记任何内容。如果您标记母版页,则此处只能使用一个数据元素。它将出现在每个页面上。

相反,只标记正文页面上的框架和占位符。数据可以从克隆元素流出,也可以一次流出。

“A设计师指南”中的Adobe InDesign和XML一书中解释了您需要的一切。

如果要构建XML表,最好的方法是使用XSLT文件来构建所需的结构。

答案 5 :(得分:0)

引用:“然而,一个关键点是Adobe®InDesign®CS2永远不会创建新的框架或添加页面来容纳新的XML元素。”是错的。如果正确设置布局,InDesign CS2 + CAN和DOES会创建新的框架和页面。 CS不会克隆元素或布局,但CS2可以并且确实如此。

InDesign不会创建未链接或独立的帧。帧将链接在一起或内联。

由于除非将它们打开,否则看不到帧边缘,如果帧是内联的,它会有什么不同?您可以使用段落“保留”选项创建它们并将它们传递到新页面。

吉姆

答案 6 :(得分:0)

在Indesign中转到

Preferences>Type>Smart Text Reflow 

并选择勾选 放置复制文本时会自动流向新页面