【发布时间】:2016-04-20 09:16:28
【问题描述】:
我认为这是一个非常简单的问题。但是虽然我构建了非常花哨的xslt转换,但这个简单的转换是我无法解决的。
问题是: 我想根据 xml 数据向 xsl-fo 节点添加属性。这些属性通常带有连字符。如何在 xsl:attributes 不喜欢连字符的情况下使用 xslt 转换添加这些。
在 xml 节点中,我有两个属性(名称和值) 示例:name="font_size", value="7pt"
<Report>
<text content="I am a text">
<blockFormat name="font_size" value="7pt" />
</text>
</Report>
(我知道这不是想要的,因为您想使用样式等。这只是一个简化问题的示例)
现在我想制作一个 xsl-fo 块,我想通过使用 xsl-function xsl:attribute 将该属性放在块元素中
<fo:block>
<attribute name="{replace(@name,'_','-')}" select="@value" />
....
</fo:block>
改造后要实现的目标
<fo:block font-size="7pt">
....
</fo:block
它不起作用,我认为这是因为在 xslt 中我不能在属性名称中放置连字符,但在 fo-attribute 中需要它。
有没有办法为此使用 xsl:attribute 函数?
如果不是,您建议采用哪种解决方法。
感谢您的帮助!!!!
【问题讨论】:
-
"我认为这是因为在 xslt 中我不能在属性名称中添加连字符" 当然可以。这究竟是如何失败的?您收到错误消息吗?您确定您使用的是 XSLT 2.0 处理器吗?
标签: xslt attributes special-characters xsl-fo hyphen