0

我有一个 XSL 文件,它充当我的应用程序的配置文件。事实上,它是一个 XML 文件,其中包含围绕它的元素。此文件称为 Config.xsl:

<?xml version="1.0" encoding="UTF-8"?>
 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"           xmlns="http://www.example.org/Config">
 <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"               standalone="yes" />
 <xsl:template match="/">
 <Config>
      <Test>somevalue</Test>
      <Test1>someothervalue</Test1>
 </Config>
 </xsl:template>

我想用新值更改元素 Test1 的值。

下面是我用来更新值的 ant 代码。

<?xml version="1.0" encoding="UTF-8" ?>
<project name="Scripts" default="test">
<taskdef resource="net/sf/antcontrib/antcontrib.properties" />
<taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/>
<target name="test">
    <xmltask source="Config.xsl" dest="Config.xsl">
        <replace path="Config/Test1/text()" withText="newvalue" />
    </xmltask>
</target>
</project>

如果有人能让我知道如何完成这项工作,我将不胜感激。

4

1 回答 1

2

您似乎对命名空间感到困惑。您必须在更换任何东西之前处理它。有关 XML 任务如何处理它的更多详细信息,请转到https://today.java.net/pub/a/today/2006/11/01/xml-manipulation-using-xmltask.html#paths-and-namespaces。但是,您可以使用此代码来获得我们想要的输出:

输入:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns="http://www.example.org/Config">
  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" standalone="yes"/>
  <xsl:template match="/">
    <Config>
      <Test>somevalue</Test>
      <Test1>someothervalue</Test1>
    </Config>
  </xsl:template>
</xsl:stylesheet>

蚂蚁脚本:

<project name="XML-VALIDATION" default="main" basedir=".">
  <taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/>
  <target name="main">
    <xmltask source="config.xsl" dest="output.xml">
      <replace path="//:Config/:Test1/text()">xxxxxxx</replace>
    </xmltask>
  </target>
</project>

输出:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.example.org/Config" version="1.0">
  <xsl:output encoding="UTF-8" indent="yes" method="xml" standalone="yes" version="1.0"/>
  <xsl:template match="/">
    <Config>
      <Test>somevalue</Test>
      <Test1>xxxxxxx</Test1>
    </Config>
  </xsl:template>
</xsl:stylesheet>
于 2013-10-31T07:26:19.607 回答