2013-09-22 26 views
0

我想基于每个模型描述显示<modelnumber>。我的上下文节点是根级别。重复后续兄弟节点中的第一个出现节点的Xpath

<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> 

回答

1

下面是一个使用一个密钥来引用model_description元件继modelnumber元件的例子:

<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 

我所选择的文本输出,但当然相同的分组方法可以与其他输出方法一起使用,如htmlxml

相关问题