第二级慕尼黑分组 [英] muenchian grouping in the second level

查看:33
本文介绍了第二级慕尼黑分组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的 xml 输入

<问题><issue status="open" type="Bug"><fix_versions><fix_version>6.14.0</fix_version><fix_version>6.13.0</fix_version><fix_version>6.12.0</fix_version></fix_versions><title>issue1</title><描述>描述</description></问题><issue status="open" type="Feature"><fix_versions><fix_version>6.13.0</fix_version></fix_versions><title>issue2</title><描述>描述</description></问题><issue status="open" type="Improvement"><fix_versions><fix_version>6.14.0</fix_version></fix_versions><title>issue3</title><描述>描述</description></问题>...</问题>

这是我的 xslt

<xsl:output omit-xml-declaration="yes" indent="yes"/><xsl:strip-space elements="*"/><xsl:key name="versions" match="fix_version" use="."/><xsl:key name="type" match="@type" use="../*/fix_version"/><xsl:template match="fix_version[generate-id()=generate-id(key('versions',.)[1])]"><div class="version"><a><xsl:value-of select="."/></a><xsl:value-of select="../../@type"/><div class="问题"><xsl:for-each select="key('type',.)"><div class="{..}"><a href="{../title}"><xsl:value-of select="../title"/></a>

</xsl:for-each>

</xsl:模板><xsl:template match="text()"/></xsl:stylesheet>

我想要这样的输出:

<a>6.14.0</a><div class="问题"><div class="Bugs"><a href="issue1">issue1</a><a href="issue7">issue7</a><a href="issue2">issue12</a><a href="issue17">issue17</a>

<div class="改进"><a href="issue3">issue3</a><a href="issue9">issue9</a>

<div class="version"><a>6.13.0</a><div class="问题"><div class="Bug"><a href="issue1">issue1</a><a href="issue11">issue11</a>

<div class="功能"><a href="issue2">issue2</a>

<div class="version"><a>6.12.0</a><div class="问题"><div class="Bug"><a href="issue1">issue1</a>

但我有这样的输出:

<a>6.14.0</a><div class="问题"><div class="Bugs"><a href="issue1">issue1</a>

<div class="Bugs"><a href="issue7">issue7</a>

<div class="Bugs"><a href="issue2">issue12</a>

<div class="Bugs"><a href="issue17">issue17</a>

<div class="改进"><a href="issue3">issue3</a>

<div class="改进"><a href="issue9">issue9</a>

<div class="version"><a>6.13.0</a><div class="问题"><div class="Bug"><a href="issue1">issue1</a>

<div class="Bug"><a href="issue11">issue11</a>

<div class="功能"><a href="issue2">issue2</a>

<div class="version"><a>6.12.0</a><div class="问题"><div class="Bug"><a href="issue1">issue1</a>

如您所见,问题并未分组在名为错误"、改进"或功能"的容器中 - 但这正是我想要的.我试过这样的东西

但是无论我尝试过什么 - 都没有效果.我真的没有计划如何将它们分组.

解决方案

这种转变:

<xsl:output omit-xml-declaration="yes" indent="yes"/><xsl:strip-space elements="*"/><xsl:key name="versions" match="fix_version" use="."/><xsl:key name="type" match="@type" use="../*/fix_version"/><xsl:template match="fix_version[generate-id()=generate-id(key('versions',.)[1])]"><div class="version"><a><xsl:value-of select="."/></a><div class="问题"><xsl:for-each select="key('type',.)"><div class="{.}"><a href="{../title}"><xsl:value-of select="../title"/></a>

</xsl:for-each>

</xsl:模板><xsl:template match="text()"/></xsl:stylesheet>

应用于提供的 XML 文档时:

<问题><issue status="open" type="Bug"><fix_versions><fix_version>6.14.0</fix_version><fix_version>6.13.0</fix_version><fix_version>6.12.0</fix_version></fix_versions><title>issue1</title><描述>描述</description></问题><issue status="open" type="Feature"><fix_versions><fix_version>6.13.0</fix_version></fix_versions><title>issue2</title><描述>描述</description></问题><issue status="open" type="Improvement"><fix_versions><fix_version>6.14.0</fix_version></fix_versions><title>issue3</title><描述>描述</description></问题>...</问题>

产生想要的、正确的结果:

<a>6.14.0</a><div class="问题"><div class="Bug"><a href="issue1">issue1</a>

<div class="改进"><a href="issue3">issue3</a>

<div class="version"><a>6.13.0</a><div class="问题"><div class="Bug"><a href="issue1">issue1</a>

<div class="功能"><a href="issue2">issue2</a>

<div class="version"><a>6.12.0</a><div class="问题"><div class="Bug"><a href="issue1">issue1</a>

This is my xml input

<issues>
  <issue status="open" type="Bug">
    <fix_versions>
      <fix_version>6.14.0</fix_version>
      <fix_version>6.13.0</fix_version>
      <fix_version>6.12.0</fix_version>
    </fix_versions>
    <title>issue1</title>
    <description>Description</description>
  </issue>
  <issue status="open" type="Feature">
    <fix_versions>
      <fix_version>6.13.0</fix_version>
    </fix_versions>
    <title>issue2</title>
    <description>Description</description>
  </issue>
  <issue status="open" type="Improvement">
    <fix_versions>
      <fix_version>6.14.0</fix_version>
    </fix_versions>
    <title>issue3</title>
    <description>Description</description>
  </issue>
  ...
</issues>

And this is my xslt

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output omit-xml-declaration="yes" indent="yes"/>
  <xsl:strip-space elements="*"/>

  <xsl:key name="versions" match="fix_version" use="."/>
  <xsl:key name="type" match="@type" use="../*/fix_version"/>

  <xsl:template match="fix_version[generate-id()=generate-id(key('versions',.)[1])]">
     <div class="version">
     <a><xsl:value-of select="."/></a>
     <xsl:value-of select="../../@type"/>
       <div class="issues">
         <xsl:for-each select="key('type',.)">
           <div class="{..}">
             <a href="{../title}"><xsl:value-of select="../title"/></a>
           </div>
         </xsl:for-each>
       </div>
     </div>
   </xsl:template>
 <xsl:template match="text()"/>
</xsl:stylesheet>

And i want an output like this:

<div class="version">
  <a>6.14.0</a>
  <div class="issues">
    <div class="Bugs">
      <a href="issue1">issue1</a>
      <a href="issue7">issue7</a>
      <a href="issue2">issue12</a>
      <a href="issue17">issue17</a>
    </div>
    <div class="Improvements">
      <a href="issue3">issue3</a>
      <a href="issue9">issue9</a>
    </div>
  </div>
</div>
<div class="version">
  <a>6.13.0</a>
  <div class="issues">
    <div class="Bug">
      <a href="issue1">issue1</a>
      <a href="issue11">issue11</a>
    </div>
    <div class="Feature">
      <a href="issue2">issue2</a>
    </div>
  </div>
 </div>
 <div class="version">
   <a>6.12.0</a>
   <div class="issues">
     <div class="Bug">
       <a href="issue1">issue1</a>
     </div>
   </div>
</div>

But i have an output like this:

<div class="version">
  <a>6.14.0</a>
  <div class="issues">
    <div class="Bugs">
      <a href="issue1">issue1</a>
    </div>
    <div class="Bugs">
      <a href="issue7">issue7</a>
    </div>
    <div class="Bugs">
      <a href="issue2">issue12</a>
    </div>
    <div class="Bugs">
      <a href="issue17">issue17</a>
    </div>
    <div class="Improvements">
      <a href="issue3">issue3</a>
    </div>
    <div class="Improvements">
      <a href="issue9">issue9</a>
    </div>
  </div>
</div>
<div class="version">
  <a>6.13.0</a>
  <div class="issues">
    <div class="Bug">
      <a href="issue1">issue1</a>
    </div>
    <div class="Bug">
      <a href="issue11">issue11</a>
    </div>
    <div class="Feature">
      <a href="issue2">issue2</a>
    </div>
  </div>
 </div>
 <div class="version">
   <a>6.12.0</a>
   <div class="issues">
     <div class="Bug">
       <a href="issue1">issue1</a>
     </div>
   </div>
</div>

As you see the Issues ar not grouped in an container named "bugs", "improvements" or "features" - But this is what i want. I tried stuff like this

But whatever i tried - nothing worked. I really have no plan how to group them.

解决方案

This transformation:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output omit-xml-declaration="yes" indent="yes"/>
  <xsl:strip-space elements="*"/>

  <xsl:key name="versions" match="fix_version" use="."/>
  <xsl:key name="type" match="@type" use="../*/fix_version"/>

  <xsl:template match="fix_version[generate-id()=generate-id(key('versions',.)[1])]">
     <div class="version">
     <a><xsl:value-of select="."/></a>
       <div class="issues">
         <xsl:for-each select="key('type',.)">
           <div class="{.}">
             <a href="{../title}"><xsl:value-of select="../title"/></a>
           </div>
         </xsl:for-each>
       </div>
     </div>
   </xsl:template>
 <xsl:template match="text()"/>
</xsl:stylesheet>

when applied on the provided XML document:

<issues>
  <issue status="open" type="Bug">
    <fix_versions>
      <fix_version>6.14.0</fix_version>
      <fix_version>6.13.0</fix_version>
      <fix_version>6.12.0</fix_version>
    </fix_versions>
    <title>issue1</title>
    <description>Description</description>
  </issue>
  <issue status="open" type="Feature">
    <fix_versions>
      <fix_version>6.13.0</fix_version>
    </fix_versions>
    <title>issue2</title>
    <description>Description</description>
  </issue>
  <issue status="open" type="Improvement">
    <fix_versions>
      <fix_version>6.14.0</fix_version>
    </fix_versions>
    <title>issue3</title>
    <description>Description</description>
  </issue>
  ...
</issues>

produces the wanted, correct result:

<div class="version">
   <a>6.14.0</a>
   <div class="issues">
      <div class="Bug">
         <a href="issue1">issue1</a>
      </div>
      <div class="Improvement">
         <a href="issue3">issue3</a>
      </div>
   </div>
</div>
<div class="version">
   <a>6.13.0</a>
   <div class="issues">
      <div class="Bug">
         <a href="issue1">issue1</a>
      </div>
      <div class="Feature">
         <a href="issue2">issue2</a>
      </div>
   </div>
</div>
<div class="version">
   <a>6.12.0</a>
   <div class="issues">
      <div class="Bug">
         <a href="issue1">issue1</a>
      </div>
   </div>
</div>

这篇关于第二级慕尼黑分组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
其他开发最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆