我想根据每个模型描述显示<modelnumber>
。我的上下文节点是根级别。
<covergrp>
<producttype>A</producttype>
<model_description>abc</model_description>
<modelnumber>7621</modelnumber>
<modelnumber>7622</modelnumber>
<producttype>B</producttype>
<model_description>XYZ</model_description>
<modelnumber>7624</modelnumber>
<modelnumber>7625</modelnumber>
<producttype>C</producttype>
<model_description>RBC</model_description>
<modelnumber>7629</modelnumber>
<modelnumber>7620</modelnumber>
</covergrp>
答案 0 :(得分:1)
以下示例使用键引用modelnumber
元素后面的model_description
元素:
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:key name="desc" match="modelnumber" use="generate-id(preceding-sibling::model_description[1])"/>
<xsl:template match="covergrp">
<xsl:apply-templates select="model_description"/>
</xsl:template>
<xsl:template match="model_description">
<xsl:value-of select="."/>
<xsl:text>: </xsl:text>
<xsl:apply-templates select="key('desc', generate-id())"/>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="modelnumber">
<xsl:if test="position() > 1">, </xsl:if>
<xsl:value-of select="."/>
</xsl:template>
</xsl:stylesheet>
对于您的样本输入,输出为
abc: 7621, 7622
XYZ: 7624, 7625
RBC: 7629, 7620
我选择了文本输出,但当然可以使用其他输出方法(例如html
或xml
)应用相同的分组方法。