我正在使用xslt編輯多個文件。我有輸入文件,它是我的設置文件,它看起來像這樣:帶設置的XSLT輸入文件 - 更改多個輸出文件
<root>
<file>
<folderin>/var/in/</folderin>
<in>10</in>
<folderout>/var/out</folderout>
<out>20</out>
<name>First file</name>
</file>
</root>
示例文件:
<root>
<element1 id1="10">
...
</element1>
<element2 id2="10" attribute="xyz">
...
</element2>
</root>
我的XSLT文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml" indent="yes" encoding="utf-8"/>
<xsl:template name="CopyXml" match="/*">
<xsl:for-each select="file">
<xsl:variable name="inputfile" select="concat(folderin, in, '.xml')"/>
<xsl:variable name="outputfile" select="concat(folderout, out, '.xml')"/>
<xsl:result-document method="xml" href="{$outputfile}">
<xsl:copy-of select="document($inputfile)/*"/>
</xsl:result-document>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
在/ var /中/有幾百個文件,我只想編輯幾個文件(在本例中爲/var/in/10.xml,帶有退出文件/var/out/20.xml)。在新的文件中,我想將id1和id2屬性值更改爲我的「out」參數
我已經設法使用我的xslt複製這些具有足夠名稱的特定文件,但是我遇到了應用任何模板的問題,所以我可以更改這些文件。我試過使用應用程序模板,但是我不能使它將這些模板應用到$ outputFile,它要麼沒有做任何事情,要麼從設置文件複製$ outputFile; /有沒有人有任何想法如何做到這一點?
編輯: 輸出這個例子文件:
<root>
<element1 id1="20">
...
</element1>
<element2 id2="20" attribute="xyz">
...
</element2>
</root>
請編輯您的問題,並顯示您想爲您顯示的「示例文件」創建的結果。我也沒有在你的代碼中看到一個「out」參數,所以我不明白這個值應該從哪裏來。 –
我已經添加了我想要的結果。現在「out」參數在:select =「concat(folderout,out,'.xml')」。我嘗試添加應用模板,其中出現了param,但它總是隻應用於我的設置文件,而不是$ inputfile – Pumar
因此,任何具有'in'元素中的值的屬性都需要獲得一個新值'out'元素?屬性名稱是否有限制? –