Можно ли извлечь значение из инструкции обработки ('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(), '"'), '"')