標題##Input XML:
<?xml version="1.0" encoding="utf-8"?>
<Report_Data>
<Report_Entry>
<cost_center>
<ID>CC</ID>
</cost_center>
<cost_center_site>
<ID>CCS1</ID>
</cost_center_site>
<cost_center_site>
<ID>CCS2</ID>
</cost_center_site>
<cost_center_site>
<ID>CCS3</ID>
</cost_center_site>
<gl_company>
<ID>G1</ID>
</gl_company>
<gl_company>
<ID>G2</ID>
</gl_company>
</Report_Entry>
</Report_Data>
應用 XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:output method = "text"/>
<xsl:variable name="linefeed" select="'
'"/>
<xsl:variable name="delim" select="','"/>
<xsl:template match="/*">
<xsl:apply-templates select="Report_Entry" />
</xsl:template>
<xsl:template match="Report_Entry">
<xsl:text>cost_center,cost_center_site,gl_company</xsl:text>
<xsl:value-of select="$linefeed"/>
<xsl:for-each-group select="cost_center" group-by="ID">
<xsl:for-each-group select="../cost_center_site" group-by="ID">
<xsl:for-each-group select="../gl_company" group-by="ID">
<xsl:value-of select="../cost_center/ID"/>
<xsl:value-of select="$delim"/>
<xsl:value-of select="../cost_center_site/ID"/>
<xsl:value-of select="$delim"/>
<xsl:value-of select="ID"/>
<xsl:value-of select="$linefeed"/>
</xsl:for-each-group>
</xsl:for-each-group>
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>
獲得以下結果:
| 成本中心 | cost_center_site | 公司 |
|---|---|---|
| 抄送 | CCS1 CCS2 CCS3 | G1 |
| 抄送 | CCS1 CCS2 CCS3 | G2 |
| 抄送 | CCS1 CCS2 CCS3 | G1 |
| 抄送 | CCS1 CCS2 CCS3 | G2 |
| 抄送 | CCS1 CCS2 CCS3 | G1 |
| 抄送 | CCS1 CCS2 CCS3 | G2 |
預期成績:
| 成本中心 | cost_center_site | 公司 |
|---|---|---|
| 抄送 | CCS1 | G1 |
| 抄送 | CCS1 | G2 |
| 抄送 | CCS2 | G1 |
| 抄送 | CCS2 | G2 |
| 抄送 | CCS3 | G1 |
| 抄送 | CCS3 | G2 |
我嘗試在內部回圈中使用 current-grouping-key() 和 for-each 在每一行上顯示唯一的成本中心站點值,但無法讓成本中心在每一行上重復。如果有人可以協助向 xslt 提供輸入以獲得預期結果,我們將不勝感激。
謝謝!
uj5u.com熱心網友回復:
我覺得應該更像
<xsl:template match="Report_Entry">
<xsl:text>cost_center,cost_center_site,gl_company</xsl:text>
<xsl:value-of select="$linefeed"/>
<xsl:for-each-group select="." group-by="cost_center/ID">
<xsl:variable name="cc-id" select="current-grouping-key()"/>
<xsl:for-each-group select="current-group()" group-by="cost_center_site/ID">
<xsl:variable name="ccs-id" select="current-grouping-key()"/>
<xsl:for-each-group select="current-group()" group-by="gl_company/ID">
<xsl:value-of select="$cc-id, $ccs-id, current-grouping-key()" separator="{$delim}"/>
<xsl:value-of select="$linefeed"/>
</xsl:for-each-group>
</xsl:for-each-group>
</xsl:for-each-group>
</xsl:template>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/337083.html
上一篇:XSL獲取元素值并忽略嵌套元素
