2

XML ファイル (構成ファイルなど) 内のノードを「変換する必要がある」とマークし、変換ファイル内で指定しないと変換が失敗することは可能ですか?

たとえば、変換する必要があるノードを含む次の構成ファイルの例を見てください。.config

<?xml version="1.0"?>
<configuration>

  <appSettings>
    <!-- Mark this key to be transformed -->
    <add key="MyValue" MustBeTransformed="true" />
  </appSettings>
    <system.web>
      <compilation debug="true" targetFramework="4.5.2" />
      <httpRuntime targetFramework="4.5.2" />
    </system.web>

</configuration>

キー値は としてマークされているためMustBeTransformed、次のようにすると正しく変換されます。

<?xml version="1.0" encoding="utf-8"?>

<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <appSettings>
    <!-- Without the line below, the transform would fail -->
    <add key="MyValue" xdt:Transform="Set a value" />
  </appSettings>
  <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
  </system.web>
</configuration>

.ps1現時点では、スクリプトと XPathを使用してこれが可能であるとしか見ていないため、これを尋ねます

4

1 に答える 1

1

ノードを「変換する必要がある」とマークする必要があり、周りにある唯一のデータがXMLツリーである場合は、XML をマークで変更する必要があります。

これを行うには、予約済み属性 MustBeTransformed をノードに追加するか、予約済みタグ ... でノードをラップします。変換を適用してから、チェックを実行して、これらの予約済みの属性/タグがまだ存在するかどうかを確認する必要があります。

XML 自体にマークを付けたくない場合、「mustbetransformed」シグナルは、定義上、XML の外側にある必要があります。ここで、ポイントする方法が必要です。一連の XPATH 式を書き留めて、変換が必要なノードを「指す」ことができます。変換が XML サブツリーの周りを移動する可能性があり、XPATH も調整しないと無効になる可能性があるため、これは脆弱です。これは厄介です。

于 2016-11-15T13:31:43.733 に答える