第二级慕尼黑分组
[英] muenchian grouping in the second level
本文介绍了第二级慕尼黑分组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我的 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屋!
查看全文