是否可以将 XML 节点标记为 'must be transformed'?
Is it possible to mark an XML node as 'must be transformed'?
是否可以将 XML 文件(例如配置文件)中的节点标记为 'must be transformed' 并且如果您未在转换文件中指定它,则转换失败?
例如,以下面组成的.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
可以做到这一点
如果你想将一个节点标记为 "must be transformed" 并且你在 周围拥有的唯一数据是 XML 树,那么你必须用标记修改XML。
您可以通过向节点添加保留属性 MustBeTransformed 或将节点包装在保留标记中来实现...。您需要应用您的转换,然后 运行 检查以查看这些保留 attributes/tags 是否仍然存在。
如果您不想标记 XML 本身,根据定义,您的 "mustbetransformed" 信号必须在 XML 之外;现在你需要一些方法来指向。您可以将一组 XPATH 表达式写到 "point" 到需要转换的节点;这很脆弱,因为转换可以在 XML 个子树周围移动,并且 XPATH 可能会变得无效,除非它们也被调整,这很尴尬。
是否可以将 XML 文件(例如配置文件)中的节点标记为 'must be transformed' 并且如果您未在转换文件中指定它,则转换失败?
例如,以下面组成的.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
如果你想将一个节点标记为 "must be transformed" 并且你在 周围拥有的唯一数据是 XML 树,那么你必须用标记修改XML。
您可以通过向节点添加保留属性 MustBeTransformed 或将节点包装在保留标记中来实现...。您需要应用您的转换,然后 运行 检查以查看这些保留 attributes/tags 是否仍然存在。
如果您不想标记 XML 本身,根据定义,您的 "mustbetransformed" 信号必须在 XML 之外;现在你需要一些方法来指向。您可以将一组 XPATH 表达式写到 "point" 到需要转换的节点;这很脆弱,因为转换可以在 XML 个子树周围移动,并且 XPATH 可能会变得无效,除非它们也被调整,这很尴尬。