【问题标题】:Insert into config if child node is missing如果缺少子节点,则插入配置
【发布时间】:2019-09-30 07:35:27
【问题描述】:

我正在尝试使用 Microsoft.Web.XmlTransform.dll 来更新 xml 文档。如果带有子元素的组件没有匹配的属性名称,我需要插入一个新的组件元素。

变换:

<config>
  <assembly xdt:Transform="Insert" xdt:Locator="Condition(./assembly/file/@name!='qux.dll')>
    <file name='qux.dll>
  </assembly>
</config>

原始配置:

<config>
  <assembly>
    <file name='foo.dll>
  </assembly>
  <assembly>
    <file name='bar.dll>
  </assembly>
  <assembly>
    <file name='qux.dll>
  </assembly>
</config>

输出:

<config>
  <assembly>
    <file name='foo.dll>
  </assembly>
  <assembly>
    <file name='bar.dll>
  </assembly>
  <assembly>
    <file name='qux.dll>
  </assembly>
  <assembly>
    <file name='qux.dll>
  </assembly>
</config>

预期输出:

<config>
  <assembly>
    <file name='foo.dll>
  </assembly>
  <assembly>
    <file name='bar.dll>
  </assembly>
  <assembly>
    <file name='qux.dll>
  </assembly>
</config>

我假设 xdt:Locator="Condition(./assembly/file/@name!='qux.dll') 不正确,但我无法让它按预期工作。

【问题讨论】:

    标签: xslt xpath slowcheetah


    【解决方案1】:

    破解:

    <config>
      <assembly xdt:Transform="InsertIfMissing" xdt:Locator="Condition(file/@name='qux.dll')>
        <file name='qux.dll>
      </assembly>
    </config>
    

    【讨论】:

      猜你喜欢
      • 2021-07-30
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 2020-11-20
      • 1970-01-01
      • 2013-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多