在每个身体我都面临一个小问题...... 如果假设我已经收到xml的文件格式,那么块下面会有一些块标签将会出现一些块标签将不再重复,而在某些块中标签将重复 例如: *
<block3>
<tag>
<name>113</name>
<value>FINANCIAL</value>
</tag>
</block3>
<block4>
<tag>
<name>32A</name>
<value>051028EUR9000,71</value>
</tag>
<tag>
<name>32A</name>
<value>051028EUR7000,71</value>
</tag>
<tag>
<name>33B</name>
<value>EUR9000,71</value>
</tag>
<tag>
<name>33B</name>
<value>EUR7000,71</value>
</tag>
<tag>
<name>71A</name>
<value>OUR</value>
</tag>
</block4>
<xsl:for-each select ="block3/tag[name = '113']">
<xsl:value-of select="value"/>
</xsl:for-each>,
<xsl:for-each select ="block4/tag[name = '32A']">
<xsl:value-of select="(translate(substring(value,10),',','.'))"/>,<xsl:text/>
</xsl:for-each>
<xsl:for-each select ="block4/tag[name = '33B']">
<xsl:value-of select="(translate(substring(value,1),',','.'))"/>,<xsl:text/>
</xsl:for-each>
*
我已经准备好了像这样的xsl样式表
输出:
如果没有标签可重复性意味着
FINANCIAL,9000.71,EUR9000.71
但是这里的xml标签在块内重复,所以我希望得到像
这样的结果FINANCIAL,9000.71,EUR9000.71
FINANCIAL,7000.71,EUR7000.71
答案 0 :(得分:0)
如果我理解正确,您正在寻找从所有<block>
代码输出相同数据的方法吗?
您是否能够更改XML结构?如果它不是block3和block4,它会有所帮助,但只有多个标签。然后你可以做这样的事情:
<xsl:template match="tag">
<xsl:value-of select="name"/>
<xsl:value-of select="value"/>
</xsl:template>
此模板将匹配所有<tag>
代码。然后,您只需在块/标签上应用模板。
<xsl:apply-templates select="block/tag"/>
这一行将对每个作为块标记的子标记的标记执行。
但是如果你不能改变XML的结构,只需保留模板并执行:
`<xsl:apply-templates select="block3/tag"/>
<xsl:apply-templates select="block4/tag"/>`
每个块的等。
在我看来(来自我所教授的)使用apply-templates(虽然作为初学者比每个人更难理解)比在XSL中使用循环要好得多,因为它是基于模板的语言。
这有帮助吗?你的问题不是很清楚。