0

いくつかの変数を含む.xsltファイルがあります。Powershellを使用してそのうちの2つを更新する必要があります。ファイルは次のようになります。

 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:variable name="VarA" select="this data stays the same" />
    <xsl:variable name="VarB" select="this data also stays the same" />

    <xsl:variable name="ChangeMe_1" select="data to be changed" />
    <xsl:variable name="ChangeMe_2" select="more data to be changed" />

 </xsl:stylesheet>

ChangeMe_1およびChangeMe_2という名前の変数の選択値を、Powershellスクリプトに渡されたパラメーターに更新する必要があります。私はPowershellのまったくの初心者であり、XMLファイルの解析に関する多くのリソースを見つけていますが、このxsltは十分に異なっているため、混乱を招きます。

さらに、これはフォルダーの階層内の同じ名前のすべての.xsltファイルで実行する必要があるため、誰かが私を正しい方向に向けることができれば、非常にありがたいです。

4

2 に答える 2

2

ファイルを xml として扱います。

[xml]$t=@(gc C:\temp\test.xslt)
$t.stylesheet.variable | ?{$_.name -like "ChangeMe_1"}|%{$_.select="New Value"}
$t.Save("newname.xslt")
gc .\newname.xslt

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:variable name="VarA" select="this data stays the same" />
  <xsl:variable name="VarB" select="this data also stays the same" />
  <xsl:variable name="ChangeMe_1" select="NewValue" />
  <xsl:variable name="ChangeMe_2" select="more data to be changed" />
</xsl:stylesheet>
于 2013-01-25T14:28:16.967 に答える
1

このようなものは、本番環境で実行する前に、テストフォルダーでテストすることをお勧めします。

param ($path, $filename, $newvalue)

$files = dir $path -filter $filename -Recurse
foreach ($file in $files)
{
[xml]$xml= gc $file.fullname
$xml.stylesheet.variable | ? { $_.name -match 'ChangeMe_[1|2]' } | % {$_.select= $newvalue }
$xml.Save($file.fullname)
}
于 2013-01-25T14:19:24.237 に答える