在Altova StyleVision中通过XPath动态定位布局框

时间:2012-09-19 12:03:36

标签: xml altova

与此问题类似:Fixed positioning with Altova Stylevision

但我想用XPath表达式动态定位。这应该是可能的,但我不能让它工作。

我有这个XML示例:

<?xml version="1.0" encoding="UTF-8"?>
<strings>
    <p lp="200">first string</p>
    <p lp="300">second string</p>
</strings>

我在设计中添加了用户定义模板/strings/p中的内容,现在我希望它通过“lp”属性定位。

对于该任务,我将XPath表达式/strings/p/@ld作为值添加到公共子组中的left属性,用于指向添加模板的布局框。但结果是布局框位于左边缘,表明StyleVision将其视为0(零)

我还尝试了这个表达式/strings/p/concat(@lp,'px'),因此它的计算结果为'px'附加的数字,因为Design是以像素为单位设置的,但是我得到了相同的结果 - XPath表达式被计算为0。 小屏幕截图:http://i.imgur.com/yPzzz.png

任何人都可以使用XPath协助如何在StyleVision中定位模板吗?

1 个答案:

答案 0 :(得分:0)

似乎不是需要定位的布局框,而是布局框内的内容,无论是什么(取决于设计)。
在这种情况下,动态(和绝对)定位可以通过将公共定位样式属性设置为XPath表达式来完成,如后面的示例所示(通过单元/strings/p/concat(@lp,'px')的串联,这是程序所期望的)。将“位置”样式属性设置为“绝对”非常重要(这可能看起来像过度需求,因为我最初已经设置我的设计处于“绝对定位模式”)

在能够看到预期结果之后,我很快就失望了这种风格定位仅对HTML输出有效。其他输出格式不尊重它,我很乐意被证明是错误的。

实际上,HTML通常不是所需的输出,而是一些更灵活的格式。在这种情况下,我建议使用这个优秀的工具:XHTML2RTF,它将XHTML转换为RTF,关于XHTML文件中的定位元素。进一步的RTF可以转换为任何通用格式

作为结论,对于我最初的问题,使用StyleVision是错误的方法。当结果有限时,它会使事情复杂化。对于XML源的绝对定位输出,我建议使用脚本语言或简单的XSLT(如果可能),然后使用XHTML2RTF工具