Xslt 将当前日期添加到XML标记中
我是xslt的新手,我有一个不知道如何解决的问题。 我必须从xml代码中删除空标记。我做到了,效果很好。 但现在我只需要在Xslt 将当前日期添加到XML标记中,xslt,Xslt,我是xslt的新手,我有一个不知道如何解决的问题。 我必须从xml代码中删除空标记。我做到了,效果很好。 但现在我只需要在ccb:correlationId中标记当前日期(时间戳)。 我的xslt代码: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF-8" in
ccb:correlationId
中标记当前日期(时间戳)。
我的xslt代码:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="*[descendant::text() or descendant-or-self::*/@*[string()]]">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@*[string()]">
<xsl:copy/>
</xsl:template>
</xsl:stylesheet>
这就是我的xml示例:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ccbs="http://atos.net/ccbs_ba/">
<soapenv:Header/>
<soapenv:Body>
<ccbs:CCBSSaveAccountRequest>
<ccbs:metric>
<ccbs:system>
<ccbs:test3></ccbs:test3>
</ccbs:system>
<ccbs:serviceProviderId></ccbs:serviceProviderId>
<ccbs:correlationId>przyklad</ccbs:correlationId>
</ccbs:metric>
<!--Optional:-->
<ccbs:effectiveTime>null</ccbs:effectiveTime>
<!--Optional:-->
<ccbs:status>status</ccbs:status>
</ccbs:CCBSSaveAccountRequest>
</soapenv:Body>
</soapenv:Envelope>
普济克拉德
无效的
地位
有人能帮我吗?谢谢。在样式表(XSLT 2.0,)中添加以下内容:
您的原始代码显示您正在使用XSLT1.0。如果无法切换到XSLT 2.0或3.0,请使用:
注意1:您需要在xsl:stylesheet
根元素上注册以下名称空间:
名称空间,以匹配源文档中的相同名称空间(即ccb
)xmlns:ccb=”http://atos.net/ccbs_ba/“
- 在XSLT1.0中,
http://exslt.org/dates-and-times
- 在XSLT2.0中,默认函数名称空间是自动设置的,无需更改,除非您想使用EXSLT扩展函数
如果由于某种原因无法使用EXSLT,请将当前日期/时间作为参数从调用应用程序传递给样式表。嘿,我收到错误消息“确保xsl是否有效(…)。我可以升级到2.0版本。但在尝试使用2.0版本的代码时,我仍然收到一个以前说过的错误。。我收到一个错误,ccb名称空间未声明。怎么做?@maciek2791:这是我第一个注释中的第一条注释。您需要将其添加到
xsl:stylesheet
元素中,就像您对exslt名称空间和其他na所做的那样Messpaces。我仍然想知道你在使用什么处理器……嘿,Abel,我编辑了我的第一个代码。请看。@maciek2791另外,我有一个打字错误,ID
ID
,默认优先级低于谓词匹配。两者都修复了上面的问题。我无法重新编辑你的空白,结果显示XML,请参阅:(包括你的代码)您使用的是哪个XSLT处理器?很抱歉我犯了错误。我更改了元素的名称:ccbs:correlationId。同样的错误发生了…如何检查我使用的处理器?“如何检查我使用的处理器?”
<xsl:template match="ccb:correlationId" priority="5">
<xsl:copy>
<!-- in case you have attributes (not in your source) -->
<xsl:apply-templates select="@*" />
<!-- in case you need to keep current value as well -->
<xsl:value-of select="." />
<!-- current date/time -->
<xsl:value-of select="current-dateTime()" />
</xsl:copy>
</xsl:template>
<xsl:value-of select="date:date-time()" />