0

我想<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>
4

1 回答 1

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>&#10;</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

我选择了文本输出,但当然可以将相同的分组方法应用于其他输出方法,如htmlor xml

于 2013-09-22T10:20:39.937 回答