Можно ли извлечь значение из инструкции обработки ('define') с помощью XPath?

Я хотел бы извлечь номер версии из этого кода:

<?xml version="1.0" encoding="UTF-8"?>
<Include>
  <?define ProductVersion = "1.0.0.0" ?>
</Include>

Я хочу, чтобы вывод был: 1.0.0.0, Можно ли сделать это?

2 ответа

Решение

Если вы используете Visual Studio для создания установщика на основе WIX, вы можете определить свой ProductVersion переменная в .wixproj файл.

  <Target Name="BeforeBuild">
    <PropertyGroup>
      <DefineConstants>ProductVersion=1.0</DefineConstants>
      ...
    </PropertyGroup>
  </Target>

Это будет доступно из файла.wxs $(var.ProductVersion), Теперь вы можете использовать XPath, чтобы прочитать значение DefineConstants из вашего.wixproj файла. Это поможет вам ProductVersion = "1.0.0.0"

Вы можете получить доступ к содержанию инструкции обработки, используя processing-instruction() фильтр узла. В инструкции обработки нет семантики, поэтому вы не можете напрямую запросить "значение атрибута".

Вы можете использовать этот запрос XPath (1.0), чтобы получить значение, используя обработку строки:

substring-before(substring-after(/Include/processing-instruction(), '"'), '"')
Другие вопросы по тегам