以下是我的输入XML。
在使用上述xslt代码将整个输入复制为输出时,但我的要求是需要映射TransactionDateTime而不是硬编码值。
<ServiceIncident xmlns="http://b2b.ibm.com/schema/IS_B2B_CDM/R2_2">
<RequesterID/>
<ProviderID>INC0011731</ProviderID>
<ProviderPriority>4</ProviderPriority>
<WorkflowStatus>NEW</WorkflowStatus>
<Transaction>
<Acknowledge>1</Acknowledge>
<StatusCode>0</StatusCode>
<Comment>String</Comment>
<TransactionName>Problem_Submittal</TransactionName>
<TransactionType>2</TransactionType>
<TransactionDateTime>2012-10-19T16:05:56Z</TransactionDateTime>
<TransactionNumber>2012-10-19T16:05:56Z:1ae9b6a79901fc40fa75c64e1cdcc3b4</TransactionNumber>
<TransactionRouting>MX::ITELLASNINCBRDG</TransactionRouting>
<DataSource>ServiceNow</DataSource>
<DataTarget>NASPGR72</DataTarget>
</Transaction>
</ServiceIncident>
我的要求是需要将整个输入复制到输出,除了输入中的一个字段需要在输出中进行更改。
以下是我在xslt中使用的代码来复制输入:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:r2="http://b2b.ibm.com/schema/IS_B2B_CDM/R2_2">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
在使用上述xslt代码将整个输入复制为输出时,但我的要求是需要映射TransactionDateTime而不是硬编码值。
<TransactionDateTime>2012-10-19T16:05:56Z</TransactionDateTime>
我需要在事务中使用这个函数,而不是硬编码。 以下是我的XSLT代码,但它没有输出。
<xsl:template match="r2:TransactionDateTime">
<xsl:value-of select="current-dateTime()"/>
</xsl:template>
current-dateTime()
函数在XSLT 1.0中不可用 - 在该版本的XSLT中没有标准方法来获取当前时间,因此答案取决于您使用的XSLT处理器(您将需要一个特定于处理器的扩展函数)。 - Ian Roberts