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 本身,您的“必须转换”信号必须根据定义在 XML 之外;现在你需要一些方法来指出。您可以写下一组 XPATH 表达式来“指向”需要转换的节点;这很脆弱,因为转换可以在 XML 子树中移动,并且 XPATH 可能会变得无效,除非它们也被调整,这很尴尬。

于 2016-11-15T13:31:43.733 回答