2013-10-30 46 views
0

我有一個XSL文件,它充當我的應用程序的配置文件。實際上它是一個XML文件,它包含了它的元素。此文件被稱爲Config.xsl:使用螞蟻更新xml元素

<?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的一個NEWVALUE值。

下面是我的螞蟻代碼,我正在使用它來更新值。

<?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> 

如果有人能讓我知道如何得到這份工作,我將不勝感激。

回答

2

看來你對命名空間感到困惑。在更換任何東西之前您必須處理它。有關XML Task如何處理它的更多細節轉到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> 

Ant腳本:

<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> 
+0

謝謝納文。這就像一個魅力。此外,我正在嘗試更新相同的文件,以便我的源代碼和席位都是XSL文件,並且可以正常工作。 – Santosh