gpt4 book ai didi

xslt - 使用相同的输入和输出文件使用 ant xslt 任务

转载 作者:行者123 更新时间:2023-12-02 04:28:51 25 4
gpt4 key购买 nike

似乎无法运行 ant xslt 任务来对 xml 进行排序(例如)使用输入文件作为输出文件而不使用任何临时文件。

我使用以下目标对所有 arxml 文件的内容进行排序。

<target name="sort_arxml" depends="init" description="Do a XLST on all arxml files to sort their content">
<tempfile property="sort.xslt" suffix=".xslt" deleteonexit="true" />
<echo file="${sort.xslt}">
<![CDATA[
<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:sort select="child::*"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
]]></echo>
<xslt style="${sort.xslt}" basedir="../Config" destdir="../Config" extension=".arxml" includes="**/*.arxml" excludes="**/AUTOSAR*"/>
</target>

但我不能这样做,因为它返回异常

java.io.FileNotFoundException: xxxx\Config\Developer\ComponentTypes\yyyy.arxml (Access is denied)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
at java.io.FileOutputStream.<init>(FileOutputStream.java:171)
at org.apache.tools.ant.taskdefs.optional.TraXLiaison.transform(TraXLiaison.java:185)
at org.apache.tools.ant.taskdefs.XSLTProcess.process(XSLTProcess.java:816)

如果我使用不同的扩展名,它可以工作,但我必须将文件复制回原始文件。

有人解决了这个问题吗?如果,如何?是变压器的问题吗?

系统信息:

Apache Ant(TM) version 1.9.2 compiled on July 8 2013
Detected Java version: 1.7 in: C:\Program Files\Java\jdk1.7.0_45\jre
Detected OS: Windows 7

最佳答案

XSLT 本身无法写入其输入文件,因此 ant XSLT 任务无法帮助您实现目标。

顺便说一句,创建临时文件或目录并没有什么问题,而且将 XSLT 输入与输出分开也有好处。 ant XSLT 任务可以检测何时需要重新运行转换,并且当输入和输出文件不同时可以方便地进行调试。你最好不要试图违背常规。

如果您无法设计满足输出文件与输入文件相同的需求,只需写入单独的输出目录,并在转换后将输入目录替换为输出目录:

<target name="sort_arxml" depends="init" 
description="Do a XLST on all arxml files to sort their content">

<!-- [ same as in question ] -->

<xslt style="${sort.xslt}" basedir="../Config" destdir="../ConfigTMP"
extension=".arxml" includes="**/*.arxml" excludes="**/AUTOSAR*"/>

<delete dir="../Config"/>
<move file="../ConfigTMP" tofile="../Config"/>

</target>

关于xslt - 使用相同的输入和输出文件使用 ant xslt 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24826950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com