Можно ли пометить узел XML как "должен быть преобразован"?

Можно ли пометить узел в 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 ответ

Решение

Если вы хотите пометить узел как "должен быть преобразован", и единственные данные, которые у вас есть, это дерево XML, вам придется изменить XML с пометкой.

Вы можете сделать это, добавив зарезервированный атрибут MustBeTransformed к узлу или обернув узел в зарезервированный тег.... Вам нужно будет применить ваши преобразования, а затем запустить проверку, чтобы увидеть, присутствуют ли какие-либо из этих зарезервированных атрибутов / тегов.

Если вы не хотите помечать сам XML, ваш "must be transformed" сигнал должен по определению быть вне XML; Теперь вам нужен способ указать. Вы можете записать набор выражений XPATH, чтобы "указать" на узлы, которые необходимо преобразовать; это хрупко, потому что преобразования могут перемещаться по поддеревьям XML, а XPATH могут стать недействительными, если они тоже не настроены, и это неудобно.

Другие вопросы по тегам