通过 XSL 转换将 XML 转换为 XML,我想在其中连接多个属性,例如:
示例案例:
<Sample>
<Date Year="2012" Month="9" Day="21"/>
<Time Hour="6" Minute="6" Second="6"/>
</Sample>
所需输出:
<Sample>
<Date>9/21/2012</Date>
<Time>6:6:6</Time>
</Sample>
这可以通过使用额外模板扩展标准 XSLT 标识转换来匹配您的日期和时间元素,并根据需要重新格式化它们来实现
例如,要匹配具有Year、Month和Day属性的Date元素,您可以这样做。
如果您可以保证所有Date元素都具有所需的三个属性,则可以将模板匹配简化为
<xsl:template match="Date">
您将为Time元素添加一个类似的模板。
这是完整的 XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Date[@Year][@Month][@Day]">
<Date><xsl:value-of select="concat(@Month, '/', @Day, '/', @Year)" /></Date>
</xsl:template>
<xsl:template match="Time[@Hour][@Minute][@Second]">
<Time><xsl:value-of select="concat(@Hour, ':', @Minute, ':', @Second)" /></Time>
</xsl:template>
</xsl:stylesheet>
当应用于您的示例 XML 时,将输出以下内容:
<Sample>
<Date>9/21/2012</Date>
<Time>6:6:6</Time>
</Sample>