Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.xsl脚本通过.bat添加到.xml_Xml_Batch File_Xslt - Fatal编程技术网

.xsl脚本通过.bat添加到.xml

.xsl脚本通过.bat添加到.xml,xml,batch-file,xslt,Xml,Batch File,Xslt,我有一个扩展名为.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="1481

我有一个扩展名为.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脚本(第二行)时,它会显示在internet浏览器(即Google)中


@ECHO关闭
SETLOCAL
设置“sourcedir=U:\sourcedir”
设置“destdir=U:\destdir”
设置“filename1=%sourcedir%\q41654708.xml”
设置“outfile=%destdir%\q41654708.xml”
设置“xslline=^”
(
对于/f“usebackqdelims=“%%a IN”(“%filename1%”)DO(
回声(%%a
如果定义了xslline回显(%xslline%)
设置“xslline=”
)
)>“%outfile%”
后藤:EOF
您需要更改
sourcedir
destdir
的设置以适应您的环境。 我使用了一个名为
q41654708.xml
的文件,其中包含了用于测试的数据

生成定义为%outfile%的文件

请注意,我使用了两个不同的目录和相同的文件名。输出的绝对文件名应该与输入的不同

只需
将变量设置为所需的额外行-注意,重定向程序
需要使用插入符号转义
^

然后读取每一行并将其倒出。在每一行之后,吐出所需的额外行,但随后将变量设置为“无”。这将确保在第一行之后,每一行的变量为空,将所需行插入所需的位置。

@ECHO Off
SETLOCAL
设置“sourcedir=U:\sourcedir”
设置“destdir=U:\destdir”
设置“filename1=%sourcedir%\q41654708.xml”
设置“outfile=%destdir%\q41654708.xml”
设置“xslline=^”
(
对于/f“usebackqdelims=“%%a IN”(“%filename1%”)DO(
回声(%%a
如果定义了xslline回显(%xslline%)
设置“xslline=”
)
)>“%outfile%”
后藤:EOF
您需要更改
sourcedir
destdir
的设置以适应您的环境。 我使用了一个名为
q41654708.xml
的文件,其中包含了用于测试的数据

生成定义为%outfile%的文件

请注意,我使用了两个不同的目录和相同的文件名。输出的绝对文件名应该与输入的不同

只需
将变量设置为所需的额外行-注意,重定向程序
需要使用插入符号转义
^


然后读取每一行并将其返回。在每一行之后,吐出所需的额外行,但随后将变量设置为nothing。这将确保在第一行之后,每一行的变量都为空,将所需行插入所需的位置。

考虑直接运行XSLT将
.tlf
转换为
.html
无需调用
内联。如果您有自己的XSLT处理器(Xalan、Saxon等),请批调用。下面使用外部PowerShell脚本使用内置的.NET类进行转换:

PowerShell

param($xml,$xsl,$output)
if(-not$xml-or-not$xsl-or-not$output){
写入主机“&.\xslt.ps1[-xml]xml输入[-xsl]xsl输入[-output]转换输出”
出口
}
陷阱[例外]{
写入主机$\异常;
}
$xslt=New Object System.Xml.Xsl.xslcomiledTransform;
$xslt.Load($xsl);
$xslt.Transform($xml,$output);
写入主机“生成的”$输出;
批处理(当然,根据需要更改为相对目录)

Powershell.exe-文件“C:\Path\To\Powershell\Script.ps1”^
“C:\Path\To\PowerShell\FISDB001.tlf”“C:\Path\To\PowerShell\FISDB.xsl”^
“C:\Path\To\PowerShell\FISDB001.html”

考虑直接运行XSLT将
.tlf
转换为
.html
,而无需调用
内联。如果您有自己的XSLT处理器(Xalan、Saxon等),请批量调用。下面使用外部PowerShell脚本使用内置的.NET类进行转换:

PowerShell

param($xml,$xsl,$output)
if(-not$xml-or-not$xsl-or-not$output){
写入主机“&.\xslt.ps1[-xml]xml输入[-xsl]xsl输入[-output]转换输出”
出口
}
陷阱[例外]{
写入主机$\异常;
}
$xslt=New Object System.Xml.Xsl.xslcomiledTransform;
$xslt.Load($xsl);
$xslt.Transform($xml,$output);
写入主机“生成的”$输出;
批处理(当然,根据需要更改为相对目录)

Powershell.exe-文件“C:\Path\To\Powershell\Script.ps1”^
“C:\Path\To\PowerShell\FISDB001.tlf”“C:\Path\To\PowerShell\FISDB.xsl”^
“C:\Path\To\PowerShell\FISDB001.html”

>如果您想向XML文档添加处理指令,那么请查看提供对XML API的访问的外壳;我不认为批处理文件提供了这一点,所以在Windows上,我会考虑PuthSeBor或Windows脚本宿主。@ MartinHonnen -您读我的想法!我刚用PosiScript脚本回答了!如果您想添加处理指令一个XML文档然后查看提供对XML API的访问的外壳;我不认为批处理文件提供了这一点,所以在Windows上,我会考虑PosiS壳或Windows脚本宿主。@ MartinHonnen -你读我的想法!我刚刚用PosiScript脚本回答了!谢谢一百万MaGoO。Magoo,我可以把下面的行添加到.BAT文件中去杀死FISDB.TLF吗?它已经创建了我的FISDB.xml?cd“C:\Users\user\Desktop”DEL FISDB001.tlf我可以在一个单独的.bat中运行这些行(它可以工作),但我希望所有的行都放在一个包中(如果可能的话)。没有理由不这样做。只需将这些行放在
goto:eof
Magoo之前,我添加了这些行,它们可以正常工作,非常感谢。感谢一百万Magoo.Magoo,我可以将下面的行添加到.bat文件中以杀死FISDB.tlf吗?在它创建了我的FISDB.xml之后?cd“C:\Users\user\Desktop”DEL FISDB001.tlf我可以在一个单独的.bat中运行这些行(它可以工作),但我希望所有的行都在一个包中(如果可能)。没有理由不这样做。只需将这些行放在
goto:eof<?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"