如何通过搜索一些节点并替换值来转换 xml 文件
How to transform an xml file by searching for some nodes and replacing the values
这是输入 xml -
<payload id="001">
<termsheet>
<format>PDF</format>
<city>New York</city>
</termsheet>
</payload>
我们的大部分 xml 转换都使用 Xalan,而且我们使用的是 XSLT 1.0
我想编写一个 XSLT 模板,将输入转换为以下输出 -
<payload id="001">
<termsheet>
<format>pdf</format>
<city>Mr. ABC</city>
</termsheet>
</payload>
我在 SO 上尝试了很多答案,但无法解决这个问题。
抱歉不清楚,toLower 过于简单化了。我想使用城市名称并调用 java 方法,该方法将 return 来自该城市的业务联系人。我已经更新了原来的问题
我认为最简单的方法是使用 Xalan 的 java 扩展,你可以编写一个简单的 java class 来实现你需要的业务逻辑,然后调用它从你的 xslt。样式表非常简单
<xsl:stylesheet version="1.0"
xmlns:java="http://xml.apache.org/xalan/java"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
exclude-result-prefixes="java">
<xsl:template match='node() | @*'>
<xsl:copy>
<xsl:apply-templates select ='node()|@*'></xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="termsheet/city">
<xsl:copy>
<xsl:value-of select='java:org.example.Card.getName(.)'/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
您还需要编写 java class 调用的
package org.example
public class Card {
public static String getName(String id) {
// put here your code to get what you need
return "Mr. ABC"
}
}
还有其他方法可以做到这一点,您应该真正关注有关 xalan extensions
的文档
这是输入 xml -
<payload id="001">
<termsheet>
<format>PDF</format>
<city>New York</city>
</termsheet>
</payload>
我们的大部分 xml 转换都使用 Xalan,而且我们使用的是 XSLT 1.0 我想编写一个 XSLT 模板,将输入转换为以下输出 -
<payload id="001">
<termsheet>
<format>pdf</format>
<city>Mr. ABC</city>
</termsheet>
</payload>
我在 SO 上尝试了很多答案,但无法解决这个问题。
抱歉不清楚,toLower 过于简单化了。我想使用城市名称并调用 java 方法,该方法将 return 来自该城市的业务联系人。我已经更新了原来的问题
我认为最简单的方法是使用 Xalan 的 java 扩展,你可以编写一个简单的 java class 来实现你需要的业务逻辑,然后调用它从你的 xslt。样式表非常简单
<xsl:stylesheet version="1.0"
xmlns:java="http://xml.apache.org/xalan/java"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
exclude-result-prefixes="java">
<xsl:template match='node() | @*'>
<xsl:copy>
<xsl:apply-templates select ='node()|@*'></xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="termsheet/city">
<xsl:copy>
<xsl:value-of select='java:org.example.Card.getName(.)'/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
您还需要编写 java class 调用的
package org.example
public class Card {
public static String getName(String id) {
// put here your code to get what you need
return "Mr. ABC"
}
}
还有其他方法可以做到这一点,您应该真正关注有关 xalan extensions
的文档