我有这个问题:
<?xml version="1.0" encoding="utf-16"?>
<root>
<container>
<Facility count="1" normalied="Mauritius Branch Campus">Mauritius Branch Campus</Facility>
<Facility count="1" relevance="0.2">Mauritius Branch Campus</Facility>
<Country count="1" relevance="0.8">Mauritius</Country>
<Country count="1" normalized="Mauritius">Mauritius</Country>
</container>
</root>
我想实现的是:
<?xml version="1.0" encoding="utf-16"?>
<root>
<container>
<Facility count="1" relevance="0.2" normalied="Mauritius Branch Campus">Mauritius Branch Campus</Facility>
<Country count="1" relevance="0.8" normalized="Mauritius">Mauritius</Country>
</container>
</root>
在该示例中,e仅报告了诸如<Facility>
和元素之类的元素<Country>
,它们与属性的类型相同。
有没有一种方法可以通过XSLT实现呢?
提前致谢。
[R
使用XSLT 2.0处理器等撒克逊9可以使用for-each-group
,通过下面的代码组的第一node-name(.)
(假设只希望所有组Country
和所有Facility
在一起,而不是使用不同名称的元素),然后通过字符串内容:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="container">
<xsl:copy>
<xsl:for-each-group select="*" group-by="node-name(.)">
<xsl:for-each-group select="current-group()" group-by=".">
<xsl:copy>
<xsl:copy-of select="current-group()/@*"/>
</xsl:copy>
</xsl:for-each-group>
</xsl:for-each-group>
</xsl:copy>
</xsl:template>
</xsl:transform>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句