是否可以将XML节点标记为“必须转换”?

时间:2016-11-15 13:20:33

标签: .net xml xdt-transform

是否可以在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

的可能性

1 个答案:

答案 0 :(得分:1)

如果要将节点标记为&#34;必须进行转换&#34;并且周围唯一的数据是 XML树,那么您必须用标记修改XML。

您可以通过向节点添加保留属性MustBeTransformed,或者将节点包装在保留标记中来实现此目的....您需要应用转换,然后运行检查以查看是否仍存在这些保留的属性/标记。

如果您不想标记XML本身,那么您的#34;必须转换为&#34;根据定义,信号必须在XML之外;现在你需要一些方法来指出。您可以将一组XPATH表达式写入&#34; point&#34;到需要转换的节点;这是脆弱的,因为转换可以围绕XML子树移动,并且XPATH可能会变得无效,除非它们也被调整,并且这很尴尬。