【发布时间】:2015-10-31 14:22:06
【问题描述】:
当已经有一个 ID 转换时,我无法停止 XSLT 转换。我已经有了想法,一旦转换避免重复,如何组合缺失的部分。
任何帮助将不胜感激,谢谢!
我的 XML 文件
?xml version="1.0" encoding="UTF-8"?>
<row>
<data>
<id>1</id>
<fname>Vcut</fname>
<lname>Piatos</lname>
<age>0</age>
<code>1002</code>
<hobby>dota</hobby>
</data>
<data>
<id>1</id>
<fname>Mayo</fname>
<lname>Naise</lname>
<age>22</age>
<code>1003</code>
<hobby>program</hobby>
</data>
<data>
<id>2</id>
<fname>Ben</fname>
<lname>Ten</lname>
<age>22</age>
<code>1003</code>
<hobby>Eat</hobby>
</data>
</row>
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="xml" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:for-each select="row/data">
<EmployeeID>
<xsl:for-each-group select="id" group-by="id">
<xsl:value-of select="current-grouping-key()"/>
</xsl:for-each-group>
</EmployeeID>
<EmployeeName>
<xsl:value-of select='concat(fname," ",lname)' />
</EmployeeName>
<EmployeeAge>
<xsl:value-of select='age'/>
</EmployeeAge>
<EmployeeCode><xsl:value-of select="code"/></EmployeeCode>
<EmployeeActivity><xsl:value-of select="hobby"/></EmployeeActivity>
------------------------------------------------------------------------
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
输出
<?xml version="1.0" encoding="UTF-8"?>
<EmployeeID>1</EmployeeID>
<EmployeeName>Vcut Piatos</EmployeeName>
<EmployeeAge>0</EmployeeAge>
<EmployeeCode>1002</EmployeeCode>
<EmployeeActivity>dota</EmployeeActivity>
------------------------------------------------------------------------
<EmployeeID/>
<EmployeeName>Mayo Naise</EmployeeName>
<EmployeeAge>22</EmployeeAge>
<EmployeeCode>1003</EmployeeCode>
<EmployeeActivity>program</EmployeeActivity>
------------------------------------------------------------------------
<EmployeeID>2</EmployeeID>
<EmployeeName>Ben Ten</EmployeeName>
<EmployeeAge>22</EmployeeAge>
<EmployeeCode>1003</EmployeeCode>
<EmployeeActivity>Eat</EmployeeActivity>
------------------------------------------------------------------------
期望的输出
<?xml version="1.0" encoding="UTF-8"?>
<EmployeeID>1</EmployeeID>
<EmployeeName>Vcut Piatos</EmployeeName>
<EmployeeAge>0</EmployeeAge>
<EmployeeCode>1002</EmployeeCode>
<EmployeeActivity>dota</EmployeeActivity>
<EmployeeActivity>program</EmployeeActivity>
------------------------------------------------------------------------
<EmployeeID>2</EmployeeID>
<EmployeeName>Ben Ten</EmployeeName>
<EmployeeAge>22</EmployeeAge>
<EmployeeCode>1003</EmployeeCode>
<EmployeeActivity>Eat</EmployeeActivity>
------------------------------------------------------------------------
【问题讨论】:
-
您声称的输出不是使用您的代码时收到的输出:xsltransform.net/bnnZVN 没有
EmployeeID值。