我有以下要求
<data>
<dataset1>
<number>1</number>
<name>red</name>
<number>2</number>
<name>Yellow</name>
<number>3</number>
<name>black</name>
<number>4</number>
<name>Violet</name>
</dataset1>
<dataset2>
<index>1</index>
<index>2</index>
<index>3</index>
<index>4</index>
</dataset2>
</data> 我需要循环遍历dataset2,获取索引值,将其与dataset1中的number标记的值进行比较。如果匹配,则显示相应名称标记的值。我需要得到rtf格式的输出。请给出BI标记或相关的xslt代码来做同样的事情。提前谢谢。
发布于 2011-01-02 00:50:36
此样式表:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="kNameByNumber"
match="name"
use="preceding-sibling::number[1]"/>
<xsl:template match="text()"/>
<xsl:template match="index[key('kNameByNumber',.)]">
<xsl:value-of select="concat(.,' : ',key('kNameByNumber',.),'
')"/>
</xsl:template>
</xsl:stylesheet>输出:
1 : red
2 : Yellow
3 : black
4 : Violet发布于 2011-01-01 19:46:39
我不熟悉RTF格式,所以我不能帮助输出该格式,但是下面是一个XSLT1.0样式表,它处理dataset2/index元素并输出任何匹配的“数据集1/名称”:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="text"/>
<xsl:key name="k1" match="dataset1/name" use="preceding-sibling::number[1]"/>
<xsl:template match="/">
<xsl:apply-templates select="data/dataset2/index"/>
</xsl:template>
<xsl:template match="dataset2/index">
<xsl:value-of select="concat('Index: ', .,
'; match: ', key('k1', .), ' ')"/>
</xsl:template>
</xsl:stylesheet>因此,对于您的示例,输出为
Index: 1; match: red
Index: 2; match: Yellow
Index: 3; match: black
Index: 4; match: Violethttps://stackoverflow.com/questions/4573081
复制相似问题