我的文件扩展名为.tlf,文件包含xml数据,当我用.xml重命名时,它显示并读取为xml文件; 我只使用带有
的.bat文件ren FISDB001.tlf FISDB001.xml
FISDB001.xml的顶行如下所示
<?xml version="1.0" encoding="UTF-8"?>
<workspace id="ais:-24ivtsesb18hr-1f4r7b5s7n7c4" name="FISDB" path="NAVY" time="1481644548" workspace-type="AIS" version="1">
<object id="8#83067">
当我添加.xsl脚本(第二行)时,它会显示在互联网浏览器(即Google)中。
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" version="2" href="FISDB.xsl"?>
<workspace id="ais:-24ivtsesb18hr-1f4r7b5s7n7c4" name="FISDB" path="NAVY" time="1481644548" workspace-type="AIS" version="1">
<object id="8#83067"
如何通过.bat文件添加.xsl脚本行?。
我还需要运行两个.bat文件,还是可以从一个文件中完成两个进程?。
答案 0 :(得分:0)
@ECHO Off
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
SET "filename1=%sourcedir%\q41654708.xml"
SET "outfile=%destdir%\q41654708.xml"
SET "xslline=^<?xml-stylesheet type="text/xsl" version="2" href="FISDB.xsl"?^>"
(
FOR /f "usebackqdelims=" %%a IN ("%filename1%") DO (
ECHO(%%a
IF DEFINED xslline ECHO(%xslline%
SET "xslline="
)
)>"%outfile%"
GOTO :EOF
您需要更改sourcedir
和destdir
的设置以适合您的具体情况。
我使用了一个名为q41654708.xml
的文件,其中包含我的测试数据。
生成定义为%outfile%
的文件请注意,我使用了两个不同的目录和相同的文件名。输出绝对文件名应与输入
不同只需将set
变量添加到所需的额外行 - 请注意,重定向符<>
需要使用插入符^
进行转义。
然后阅读每一行并回流它。在每一行之后,吐出所需的额外行,但随后将变量设置为 nothing 。这将确保变量在第一行之后为空,在所需位置插入所需的行。
答案 1 :(得分:0)
考虑直接运行您的XSLT,将.tlf
转换为.html
,而无需调用<?xml-stylesheet ... ?>
内联。如果您有自己的XSLT处理器(Xalan,Saxon等)批量调用。下面使用外部PowerShell脚本进行转换,使用内置的.NET类XslCompiledTransform:
<强>的PowerShell 强>
param ($xml, $xsl, $output)
if (-not $xml -or -not $xsl -or -not $output) {
Write-Host "& .\xslt.ps1 [-xml] xml-input [-xsl] xsl-input [-output] transform-output"
exit;
}
trap [Exception]{
Write-Host $_.Exception;
}
$xslt = New-Object System.Xml.Xsl.XslCompiledTransform;
$xslt.Load($xsl);
$xslt.Transform($xml, $output);
Write-Host "generated" $output;
批量 (当然根据需要更改为相关目录)
Powershell.exe -File "C:\Path\To\PowerShell\Script.ps1"^
"C:\Path\To\PowerShell\FISDB001.tlf" "C:\Path\To\PowerShell\FISDB.xsl"^
"C:\Path\To\PowerShell\FISDB001.html"