2015-09-05 135 views
0

在下面顯示的XML中,我想用'jenkins'替換<machine>%%Process Archive.par-machine%%</machine>的值。我試圖用XSLT來處理它,如下所示,但它不起作用。它與SED一起工作,但那不是D.o.D.XSLT不轉換XML

我在XSLT代碼中做了什麼錯誤,它並未取代該值?

XML代碼:

<?xml version="1.0" encoding="UTF-8"?> 

<application xmlns="http://www.tibco.com/xmlns/ApplicationManagement" name="HelloWorld"> 
    <description/> 
    <contact/> 
    <NVPairs name="Global Variables"> 
     <NameValuePair> 
      <name>DirLedger</name> 
      <value>.</value> 
     </NameValuePair> 
     <NameValuePair> 
      <name>DirTrace</name> 
      <value>.</value> 
     </NameValuePair> 
     <NameValuePair> 
      <name>HawkEnabled</name> 
      <value>false</value> 
     </NameValuePair> 
     <NameValuePair> 
      <name>JmsProviderUrl</name> 
      <value>tcp://localhost:7222</value> 
     </NameValuePair> 
     <NameValuePair> 
      <name>JmsSslProviderUrl</name> 
      <value>ssl://localhost:7243</value> 
     </NameValuePair> 
     <NameValuePair> 
      <name>RemoteRvDaemon</name> 
      <value/> 
     </NameValuePair> 
     <NameValuePair> 
      <name>RvDaemon</name> 
      <value>tcp:7500</value> 
     </NameValuePair> 
     <NameValuePair> 
      <name>RvNetwork</name> 
      <value/> 
     </NameValuePair> 
     <NameValuePair> 
      <name>RvService</name> 
      <value>7500</value> 
     </NameValuePair> 
     <NameValuePair> 
      <name>RvaHost</name> 
      <value>localhost</value> 
     </NameValuePair> 
     <NameValuePair> 
      <name>RvaPort</name> 
      <value>7600</value> 
     </NameValuePair> 
     <NameValuePair> 
      <name>TIBHawkDaemon</name> 
      <value>tcp:7474</value> 
     </NameValuePair> 
     <NameValuePair> 
      <name>TIBHawkNetwork</name> 
      <value/> 
     </NameValuePair> 
     <NameValuePair> 
      <name>TIBHawkService</name> 
      <value>7474</value> 
     </NameValuePair> 
    </NVPairs> 
    <repoInstances selected="rv"> 
     <httpRepoInstance> 
      <timeout>600</timeout> 
      <url/> 
     </httpRepoInstance> 
     <rvRepoInstance> 
      <timeout>600</timeout> 
      <discoveryTimout>10</discoveryTimout> 
      <daemon>tcp:7500</daemon> 
     </rvRepoInstance> 
     <localRepoInstance> 
      <encoding>ISO8859-1</encoding> 
     </localRepoInstance> 
    </repoInstances> 
    <services> 
     <bw name="Process Archive.par"> 
      <enabled>true</enabled> 
      <bindings> 
       <binding name=""> 
        <machine>%%Process Archive.par-machine%%</machine> 
        <product> 
         <type>bwengine</type> 
         <version/> 
         <location/> 
        </product> 
        <description/> 
        <contact/> 
        <shutdown> 
         <checkpoint>false</checkpoint> 
         <timeout>0</timeout> 
        </shutdown> 
       </binding> 
      </bindings> 
      <NVPairs name="Adapter SDK Properties"> 
       <NameValuePair> 
        <name>Trace.Task.*</name> 
        <value>false</value> 
       </NameValuePair> 
       <NameValuePair> 
        <name>EnableMemorySavingMode</name> 
        <value>false</value> 
       </NameValuePair> 
       <NameValuePair> 
        <name>bw.engine.enableJobRecovery</name> 
        <value>false</value> 
       </NameValuePair> 
       <NameValuePair> 
        <name>bw.engine.autoCheckpointRestart</name> 
        <value>true</value> 
       </NameValuePair> 
       <NameValuePair> 
        <name>bw.engine.jobstats.enable</name> 
        <value>false</value> 
       </NameValuePair> 
       <NameValuePair> 
        <name>log.file.encoding</name> 
        <value/> 
       </NameValuePair> 
       <NameValuePair> 
        <name>bw.engine.emaEnabled</name> 
        <value>false</value> 
       </NameValuePair> 
       <NameValuePair> 
        <name>bw.container.service</name> 
        <value/> 
       </NameValuePair> 
       <NameValuePair> 
        <name>bw.container.service.rmi.port</name> 
        <value>9995</value> 
       </NameValuePair> 
       <NameValuePair> 
        <name>bw.platform.services.retreiveresources.Enabled</name> 
        <value>false</value> 
       </NameValuePair> 
       <NameValuePair> 
        <name>bw.platform.services.retreiveresources.Hostname</name> 
        <value>localhost</value> 
       </NameValuePair> 
       <NameValuePair> 
        <name>bw.platform.services.retreiveresources.Httpport</name> 
        <value>8010</value> 
       </NameValuePair> 
       <NameValuePair> 
        <name>bw.platform.services.retreiveresources.defaultEncoding</name> 
        <value>ISO8859_1</value> 
       </NameValuePair> 
       <NameValuePair> 
        <name>bw.platform.services.retreiveresources.enableLookups</name> 
        <value>false</value> 
       </NameValuePair> 
       <NameValuePair> 
        <name>bw.platform.services.retreiveresources.isSecure</name> 
        <value>false</value> 
       </NameValuePair> 
       <NameValuePair> 
        <name>bw.platform.services.retreiveresources.identity</name> 
        <value>/Identity_HTTPConnection.id</value> 
       </NameValuePair> 
       <NameValuePair> 
        <name>bw.log4j.configuration</name> 
        <value/> 
       </NameValuePair> 
      </NVPairs> 
      <failureCount>0</failureCount> 
      <failureInterval>0</failureInterval> 
      <bwprocesses> 
       <bwprocess name="Processes/HelloWorld.process"> 
        <starter>HTTP Receiver</starter> 
        <enabled>true</enabled> 
        <maxJob>0</maxJob> 
        <activation>true</activation> 
        <flowLimit>0</flowLimit> 
       </bwprocess> 
      </bwprocesses> 
      <isFt>false</isFt> 
     </bw> 
    </services> 
</application> 

XSLT代碼:

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:template match="node()|@*"> 
     <xsl:copy> 
      <xsl:apply-templates select="node()|@*"/> 
     </xsl:copy> 
    </xsl:template> 

    <xsl:template match="/application/services/bw/bindings/binding/machine/text()">jenkins</xsl:template> 

</xsl:stylesheet> 
+2

搜索「XSLT默認命名空間」,你會發現大約五千個犯過同樣錯誤的人。 –

回答

1

你這會導致你的對手錶達失敗源文件中有一個命名空間。命名空間是特殊的xmlns屬性:xmlns="http://www.tibco.com/xmlns/ApplicationManagement"

查看this answer瞭解處理名稱空間的示例。

+0

是的,它做到了。謝謝! – Kelvin

+1

@Kelvin:請點擊複選框接受這個答案,以便其他人不必通過它來閱讀它,發現它已被回答。 – LarsH

+1

@LarsH:奧克做完了。 – Kelvin