我有这样的XML数据:
<items>
<data>2</data>
<listElement>
<amounts>
<period_id>1</period_id>
<amount>5</amount>
</amounts>
<amounts>
<period_id>2</period_id>
<amount>6</amount>
</amounts>
<amounts>
<period_id>3</period_id>
<amount>7</amount>
</amounts>
<amounts>
<period_id>8</period_id>
<amount>89</amount>
</amounts>
</listElement>
</items>
<items>
<data></data>
<listElement>
<amounts>
<period_id>4</period_id>
<amount>55</amount>
</amounts>
<amounts>
<period_id>5</period_id>
<amount>9</amount>
</amounts>
<amounts>
<period_id>6</period_id>
<amount>20</amount>
</amounts>
<amounts>
<period_id>7</period_id>
<amount>80</amount>
</amounts>
</listElement>
</items>
在我的xsl代码中,我在一个节点数量内,我想获得标签“data”的值,该数据是该标签的父级数量?
我正在使用xalan和xslt1.0以及apache fop
注意:我尝试过:
<xsl:value-of select="preceding-sibling::*data[normalize-space(.)]">
</xsl:value-of>
但仍然错了。
答案 0 :(得分:1)
来自amounts
元素的上下文:
../preceding-sibling::data[1]
以下样式表将前面的data
元素复制到每个amounts
元素中,而文档的其余部分保持不变:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="amounts">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
<xsl:copy-of select="../preceding-sibling::data[1]" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
应用于源文档时,它会生成以下输出:
<root>
<items>
<data>2</data>
<listElement>
<amounts>
<period_id>1</period_id>
<amount>5</amount>
<data>2</data>
</amounts>
<amounts>
<period_id>2</period_id>
<amount>6</amount>
<data>2</data>
</amounts>
<amounts>
<period_id>3</period_id>
<amount>7</amount>
<data>2</data>
</amounts>
<amounts>
<period_id>8</period_id>
<amount>89</amount>
<data>2</data>
</amounts>
</listElement>
</items>
<items>
<data />
<listElement>
<amounts>
<period_id>4</period_id>
<amount>55</amount>
<data />
</amounts>
<amounts>
<period_id>5</period_id>
<amount>9</amount>
<data />
</amounts>
<amounts>
<period_id>6</period_id>
<amount>20</amount>
<data />
</amounts>
<amounts>
<period_id>7</period_id>
<amount>80</amount>
<data />
</amounts>
</listElement>
</items>
</root>
答案 1 :(得分:1)
在我的xsl代码中我在一个节点内 金额,我想得到的价值 标签“data”谁是其父级 标签金额
请注意,data
元素是您样本中items
(amount
祖父母)的孩子。
使用此:
../../data
还有:
preceding::data[1]
但必须保证每data
个items
一个。{/ p>
如果你真的想使用preceding-sibling
轴,那么:
../preceding-sibling::data