我需要将所有出现的Java映射键替换为它们的值。 我使用的是xslt 1.0,不知道如何进行。
例如: 在Java中,我有一个地图,
Map<String, String> myMap = new HashMap<String,String>();
myMap.add("valueToReplace1","valueReplaced1");
myMap.add("valueToReplace2","valueReplaced2");
myMap.add("valueToReplace3","valueReplaced3");
输入XML的示例
<Root>
<attribute1>I want to replace valueToReplace1</attribute1>
<attribute2>
<subAttribute1>I want to replace valueToReplace2
</subAttribute1>
</attribute2>
<attribute3>valueToReplace3</attribute3>
</Root>
以及我的期望:
<Root>
<attribute1>I want to replace valueReplaced1</attribute1>
<attribute2>
<subAttribute1>I want to replace valueReplaced2
</subAttribute1>
</attribute2>
<attribute3>valueReplaced3</attribute3>
</Root>
对于nom,我的xls文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:param name="old" />
<xsl:param name="new" />
<xsl:output method="xml" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="text()" name="text" priority="5">
<xsl:param name="pString" select="." />
<xsl:choose>
<xsl:when test="$old and contains($pString,$old)">
<xsl:value-of
select="concat(substring-before($pString,$old),$new)" />
<xsl:call-template name="text">
<xsl:with-param name="pString"
select="substring-after($pString,$old)" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$pString" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
新旧变量将是地图的键/值。
有人对如何做到这一点有想法吗?
谢谢。