我有:
<parent>
<groupId>com.test.example</groupId>
<artifactId>myProject</artifactId>
<version>00.01.00.00</version>
</parent>
我想要什么
<parent>
<groupId>com.test.example</groupId>
<artifactId>parameter1</artifactId>
<version>parameter2</version>
</parent>
所以我创建了一个Java GUI,我在其中放置了我的参数(这只是按钮事件代码):
private void btnModifyActionPerformed(ActionEvent e) {
String strArtifactID = txtArtifactID.toString();
int iVersion = new Integer(txtVersion.getText());
Source xmlInput = new StreamSource(new File("c:/Users/balestrierih/Desktop/pomReplace.xml"));
Source xsl = new StreamSource(new File("c:/Users/balestrierih/Desktop/pomReplace.xsl"));
Result xmlOutput = new StreamResult(new File("c:/Users/balestrierih/Desktop/output.xml"));
try {
Transformer transformer = TransformerFactory.newInstance().newTransformer(xsl);
transformer.transform(xmlInput, xmlOutput);
} catch (TransformerException TE) {
TE.getMessage();
}
}
它将启动XSL代码:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="artifactID">
<xsl:param name="strArtifactID"/>
<xsl:apply-templates select="($strArtificatID)"/>
</xsl:template>
<xsl:template match="version">
<xsl:param name="iVersion"/>
<xsl:apply-templates select="($iVersion)"/>
</xsl:template>
</xsl:stylesheet>
但是当我启动我的程序时,我收到一条错误,指出XSLT代码不正确
答案 0 :(得分:0)
我认为你需要全局参数(假设你想在运行转换之前将它们设置为值)然后你只需要将参数值放入你想用XSLT操作的元素中:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:param name="strArtifactID"/>
<xsl:param name="iVersion"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="artifactId">
<xsl:copy>
<xsl:value-of select="$strArtifactID"/>
</xsl:copy>
</xsl:template>
<xsl:template match="version">
<xsl:copy>
<xsl:value-of select="$iVersion"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
现在您可以设置参数和名为artifactId
的元素(注意拼写差异),并使用传入的参数值填充version
。