2012-09-19 52 views
0

与此相似的问题: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作为指向添加的模板的布局框的常见子组中左属性的值。但结果是布局框位于左边缘,表明StyleVision认为它为0(零)

我也试过这个表达式/strings/p/concat(@lp,'px'),因此它的计算结果为'px'所附数字,因为Design是在像素中设置的单位,但我得到同样的结果 - XPath表达式求值0
小截图:http://i.imgur.com/yPzzz.png

任何人都可以协助如何通过StyleVision使用XPath定位模板?

回答

0

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

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

在现实中,经常不需要HTML输出,但一些更灵活的格式。在这种情况下,我建议这个出色的工具:XHTML2RTF,它将XHTML转换为RTF,用于定位XHTML文件中的元素。进一步的RTF可以转换为任何常见的格式

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