我们有一个程序使用 xml 来保存程序的配置。有人决定重命名我们数据库中的几个值,这些重命名现在也应该在我们客户的配置中向后兼容。
配置示例
<configuration>
<fruitToEat>yellow_curved_thing</fruitToEat> <!-- should now become banana -->
</configuration>
一个简单的匹配将是(未经测试,只是一个例子):
<xsl:template>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match"/configuration/fruitToEat/text()">
<xsl:text>banana</xsl:text>
</xsl:template>
</xsl:template>
但这只是一个例子,我想这样做 150 次。
是否可以制作一个读取简单文本文件或 ini 文件的 xsl,告诉我 150 个匹配项应该如何相似?
<xsl:template>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<!-- recreate this template 150 times from an ini file or something -->
<xsl:template match"/configuration/fruitToEat/text()[.='yellow_curved_thing']">
<xsl:text>banana</xsl:text>
</xsl:template>
</xsl:template>
我的映射文件的一个例子可能很简单:
yellow_curved_thing = banana
round_thing = tomato
round_dotted = strawberry
我只想要一个小的 xslt 告诉我:
<xsl:template>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<!-- recreate this template 150 times from an ini file or something -->
<xsl:template match"/configuration/fruitToEat/text()[.=$fileRow0]">
<xsl:text>$fileRow1</xsl:text>
</xsl:template>
</xsl:template>