首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在输出中使用字符串的前三位循环和分组元素

在输出中使用字符串的前三位循环和分组元素
EN

Stack Overflow用户
提问于 2016-11-09 22:05:50
回答 1查看 63关注 0票数 0

在下面的xml中,"number“的前三位可用于对结果输出中的”number“元素进行分组。但是我不知道怎么做?请看下面的输入XML和我想要的输出

输入查看输入和所需的输出

代码语言:javascript
复制
<data>
<InputElemenmts>
    <Element11>
        <key>73004</key>
        <number>001001</number>
    </Element11>
    <Element11>
        <key>7300465</key>
        <number>002001</number>
    </Element11>
    <Element11>
        <key>730046</key>
        <number>003001</number>
    </Element11>
    <Element11>
        <key>730046</key>
        <number>003002</number>
    </Element11>
    <Element11>
        <key>730046</key>
        <number>003003</number>
    </Element11>
    <Element11>
        <key>730049</key>
        <number>004001</number>
    </Element11>
    <Element11>
        <key>730046</key>
        <number>005001</number>
    </Element11>
    <Element11>
        <key>730040</key>
        <number>006001</number>
    </Element11>
    <Element11>
        <key>730040</key>
        <number>006002</number>
    </Element11>
    <Element11>
        <key>730041</key>
        <number>007001</number>
    </Element11>
    <Element11>
        <key>730042</key>
        <number>008001</number>
    </Element11>
</InputElemenmts>
<OutputElemenmts>
    <result>
        <key>7300462</key>
        <number>001001</number>
    </result>
    <result>
        <key>7300465</key>
        <number>002001</number>
    </result>
    <result>
        <key>73004</key>
        <Element>
            <number>003001</number>
            <number>003002</number>
            <number>003003</number>
        </Element>
    </result>
    <result>
        <key>730049</key>
        <number>004001</number>
    </result>
    <result>
        <key>730046</key>
        <number>005001</number>
    </result>
    <result>
        <key>730040</key>
        <Element>
            <number>006001</number>
            <number>006002</number>
        </Element>
    </result>
    <result>
        <key>730041</key>
        <number>007001</number>
    </result>
    <result>
        <key>730042</key>
        <number>008001</number>
    </result>
</OutputElemenmts>

EN

回答 1

Stack Overflow用户

发布于 2016-11-10 21:53:55

这是我所理解的,但可能不是你想要的??

代码语言:javascript
复制
<!-- find the last of Element11 with any key -->
    <xsl:template match="Element11[not(following::Element11[key = current()/key])]">
       <result>
        <key><xsl:value-of select="key"/></key>
        <xsl:choose>
         <!-- are there more than one with this key? -->
         <xsl:when test="preceding-sibling::Element11[key = current()/key]">
           <!-- if yes it seems you want an Element wrapper -->
           <Element>
             <xsl:for-each select="preceding-sibling::Element11[key = current()/key]/number">
                <number><xsl:value-of select="."/></number>
             </xsl:for-each>
             <!-- the current one -->
             <number><xsl:value-of select="number"/></number>
           </Element>
         </xsl:when>
         <xsl:otherwise>
             <!-- only the current one -->
             <number><xsl:value-of select="number"/></number>
         </xsl:otherwise>
        </xsl:choose>
       </result>
     </xsl:template>

     <xsl:template match="Element11"/>
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40508894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档