Можно ли пометить узел 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 могут стать недействительными, если они тоже не настроены, и это неудобно.