Я хотел заменить подстановочные знаки в XML-файле управления из стороннего программного обеспечения.XSLT - сопоставить и заменить каждое значение атрибута XML с определенным значением атрибута
К сожалению, эти подстановочные знаки также используются в качестве значений атрибутов в этом XML-файле.
Я дам вам пример:
<control>
<some-tag id="$wildcard1$" version="3.14">
<another-tag id="second_level">stackoverflow rocks!</another-tag>
</some-tag>
<some-tag id="foo" version="$wildcard2$"/>
<some-tag id="bar" version="145.31.1"/>
</control>
Я попытался написать общее преобразование с параметрами, чтобы заменить символы в значениях атрибутов.
Моя самая большая проблема была в том, что я не знаю названия атрибута. Поэтому мне нужно сопоставить каждый атрибут в файле XML. Это легко , но как я сопоставляю каждый атрибут с определенным значением (например, $ wildcard $)?
Заметим, что 'матч = "[. = $ Wildacard] */@ *"' может быть сокращен до 'матча = "@ * [. = $ wildacard]". И если вы действительно используете XSLT версии 3.0, то вместо первого шаблона вы можете просто объявить ' '. Я также заметил, что ваше объявленное имя параметра - 'имя =" подстановочный знак ", но ваш код ссылается на' $ wildacard'. –