这应该很简单,但我无法解决这个问题。我有XML文件包含一些空节点,我想通过XSL用固定字符串替换。如果节点包含数据就可以,但如果它是空的,我想用字符串“18010101”替换它
例如:
在:
<?xml version="1.0"?>
<TopNode>
<SubNode1>
<SubNode2>
<SubNode3>
<SubNode4>
<date_of_birth></date_of_birth>
</SubNode4>
</SubNode3>
</SubNode2>
</SubNode1>
</TopNode>
后:
<?xml version="1.0"?>
<TopNode>
<SubNode1>
<SubNode2>
<SubNode3>
<SubNode4>
<date_of_birth>18010101</date_of_birth>
</SubNode4>
</SubNode3>
</SubNode2>
</SubNode1>
</TopNode>
我有一个类似的问题,我用xsl替换另一个固定值的固定值。
<xsl:template match="transaction_type[text()='15']">
<xsl:text>5</xsl:text>
</xsl:template>
它工作正常,但是当我尝试对日期问题进行类似的修复时,它似乎不起作用。
<xsl:template match="date_of_birth">
<xsl:if test="date_of_birth = ''">
<xsl:text>18010101</xsl:text>
</xsl:if>
</xsl:template>
由于
答案 0 :(得分:3)
将您的xsl:if
更改为:
<xsl:if test=". = ''">
或者将您的xsl:template match
更改为:
<xsl:template match="date_of_birth[. = '']">
答案 1 :(得分:0)
我会这样做,
<强> XML:强>
<?xml version="1.0"?>
<TopNode>
<SubNode1>
<SubNode2>
<SubNode3>
<SubNode4>
<date_of_birth></date_of_birth>
</SubNode4>
</SubNode3>
</SubNode2>
</SubNode1>
</TopNode>
<强> XSL:强>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<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_of_birth">
<xsl:if test=". = ''">
<date_of_birth>18010101</date_of_birth>
</xsl:if>
<xsl:if test=". != ''">
<date_of_birth>
<xsl:value-of select="text()" />
</date_of_birth>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
<强>输出:强>
<?xml version="1.0" encoding="UTF-8"?>
<TopNode>
<SubNode1>
<SubNode2>
<SubNode3>
<SubNode4>
<date_of_birth>18010101</date_of_birth>
</SubNode4>
</SubNode3>
</SubNode2>
</SubNode1>
</TopNode>