我有一个可以替换一些 xml 值的 xsl 模板。现在我希望这些值由我的代码动态生成。
Transformer trans = TransformerFactory.newInstance().newTransformer(new StreamSource(new File("foo.xsl"));
trans.transform(new StreamSource(new File("foo.xml"), new StreamResult(new File("output.xml")));
我怎样才能获得例如仅在 id=1 的情况下替换名称?而且通过javacode动态提供该id,而不是硬编码?
<?xml version="1.0"?>
<my:accounts xmlns:my="http://myns">
<my:account>
<my:name>alex</my:name>
<my:id>1</my:id>
</my:account>
<my:account>
<my:name>Fiona</my:name>
<my:id>2</my:id>
</my:account>
</my:accounts>
这将替换所有名称:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="http://myns">
<xsl:param name="propertyName" select="'alex'"/>
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name()='account']/*[local-name()='name']/text()[.='{$propertyName}']">
<xsl:text>johndoe</xsl:text>
</xsl:template>
</xsl:stylesheet>