9

私はこのような変換を持っています

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <a>
    <b>
      <c>
        <d>
          <e name="UpdateLanguageProfile">
            <f xdt:Transform="Replace" xdt:Locator="Condition(/..@name='UpdateLanguageProfile')">
              stuff here
            </f>
          </e>
        </d>
      </c>
    </b>
  </a>

したがって、親ノードに指定された値の属性がある場合にのみ、 xdt:Locator が f ノードを選択するようにします。

xdt:Locator は、次の xpath 式に変換されます。

/a/b/c/d/e/f[/..@name='UpdateLanguageProfile']

これは無効です。

問題は、親ノードの属性に基づいて f ノードを選択するために、Condition に何を入れることができるか、つまり XPath 角括弧です。

4

1 に答える 1

21

答えは、xdt:Locator と xdt:Transform が同じノード上にある必要はないということです。私がこれまでに見たすべての例で、それらはたまたま同じノード上にあるだけです。

あなたはこれを行うことができます:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <a>
    <b>
      <c>
        <d>
          <e name="UpdateLanguageProfile" xdt:Locator="Match(name)">
            <f xdt:Transform="Replace">
              stuff here
            </f>
          </e>
        </d>
      </c>
    </b>
  </a>
于 2012-12-14T21:10:36.100 に答える