0

通过 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>
4

1 回答 1

2

这可以通过使用额外模板扩展标准 XSLT 标识转换来匹配您的日期时间元素,并根据需要重新格式化它们来实现

例如,要匹配具有YearMonthDay属性的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>
于 2012-09-21T06:31:29.977 回答