IDML中Story XML的逻辑顺序

时间:2011-12-01 19:15:05

标签: xml xml-serialization xml-parsing xmldocument idml

我是IDML的新手,我正在努力理解这一点。

我发现IDML是包含多个XML文件的zip文件。 我打开了designmap.xml并在StoryLine元素中看到了Document属性。 但是,StoryLine属性中的此顺序不一定与实际内容上显示的文本的逻辑顺序一致。

例如,IDML SDK中的BusinessCardTemplate具有以下逻辑顺序:

John Doe
Software Developer
InDesign
Adobe Systems Incorporated
801 North 34th Street
Seattle, WA 98103
Phone: 206.675.7000
jdoe@adobe.com
www.adobe.com

但是根据StoryList属性,以下是它引用的顺序如下:

Software Developer
InDesign
John Doe
jdoe@adobe.com
www.adobe.com
Phone: 206.675.7000
801 North 34th Street
Seattle, WA 98103
Adobe Systems Incorporated

有没有办法从IDML的内容中弄清楚这些故事的逻辑顺序(最好从左上角到左下角)?

提前致谢

2 个答案:

答案 0 :(得分:3)

故事只是文本内容,从文档中的使用中抽象出来。如果您想以正确的顺序获取故事,您需要:

1)在解压缩的IDML文件的根目录中找到designmap.xml(首先解压缩整个事情 - 我想你已经知道了)

2)通过查找点差元素来获取Spreads的顺序:

<idPkg:Spread src="Spreads/Spread_uc6.xml" />

3)在每个点差文档中,获取TextFrames的顺序:

<TextFrame Self="uec" ParentStory="uda" PreviousTextFrame="n" NextTextFrame="n" ContentType="TextType" ... (many more parameters) ... />

4)检查每个文本框架的ParentStory参考:

<TextFrame Self="uec" ParentStory="uda" ... />

5)找到相关的故事:在这种情况下,它将是Stories/Story_uda.xml.

在一个简单的文档中,每个TextFrame与一个故事匹配,这将为您提供故事在文档中的显示顺序。

然而,在某些情况下 - 例如链接到单个故事的多个帧或者线程框架,其中一个故事被分成多个TextFrames - 这种映射不会那么简单。还要注意MasterSpreads引入的复杂性。

您会发现Adobe IDML文档非常有用:http://www.adobe.com/devnet/indesign/documentation.html#idml

答案 1 :(得分:1)

直接与故事合作非常困难。如果使用标记功能,则更容易。打开InDesign文件并导入具有正确数据结构的XML文件。然后,您可以标记文档的各个部分以映射到XML节点。

完成后,将文档导出到IDML,然后查看文件BackingStory.xml的XML目录,在那里找到如下节点:

<XMLElement Self="di3i29" MarkupTag="XMLTag/Instructions" XMLContent="u16a" />

这将Instructions XML节点的映射定义到Story_u16a.xml文件中。但是,您不再需要担心故事,因为您现在已经可以访问将被注入故事的节点值。

本教程解释了InDesign XML tagging