首页 > 解决方案 > 如何使用变换更改值

问题描述

我完全无能为力,试图将所有记录的卡号值更改为 0(零)

默认转换文件如下所示:

<?xml version ="1.0" encoding="utf8" ?>
<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" />
<!-- Parameters assigned at runtime. -->
<xsl:param name="paramCurrentTimestamp">20001231173010</xsl:param>
<xsl:param name="paramCurrentDT" >12/31/2000 5:30:10 PM</xsl:param>
<xsl:param name="paramCurrentCulture">en-US</xsl:param>

<!-- The transformation below provides trivial default copy of everything. -->
<xsl:template match="*|@*">
  <xsl:copy>
    <xsl:apply-templates select="*|@*|text()"/>
  </xsl:copy>
</xsl:template>

<xsl:template match="@*">
  <xsl:copy />
</xsl:template>
<!-- End of customizable area. -->

 </xsl:stylesheet>

示例数据输入如下所示:

Sample input
-<CrossFire culture-info=" en-US" platform-version=" 2.60.18" product-version=" 2.60.18">
-<SoftwareHouse.NextGen.Common.SecurityObjects.Personnel ImportMode=" Default">
 <GUID>e7d37b37-9418-4e20-a6b7-f54b76c389cd</GUID>
-<SoftwareHouse.NextGen.Common.SecurityObjects.Credential ImportMode=" Default">
 <GUID>e3adb09c-fb8e-4277-90d8-1839dd1bd83b</GUID>
 <CardNumber>210316</CardNumber>
 </SoftwareHouse.NextGen.Common.SecurityObjects.Credential>
 </SoftwareHouse.NextGen.Common.SecurityObjects.Personnel>
 </CrossFire>

我想看到的所有记录是 0

标签: xslt

解决方案


为了更改 to 的值,CardNumber同时0保持其他所有内容不变,您可以简单地执行以下操作:

XSLT 1.0

<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"/>

<!-- identity transform -->
<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="CardNumber">
    <xsl:copy>0</xsl:copy>
</xsl:template>

</xsl:stylesheet>

推荐阅读