У меня есть XML-файл, как показано ниже.
<rule>
<ruleType>IC</ruleType>
<attributes>
<attribute>
<attributeName>salience</attributeName>
<value>5</value>
</attribute>
<attribute>
<attributeName>abc</attributeName>
<value>123</value>
</attribute>
</attributes>
</rule>
Мне нужно изменить значение значимости на основе ruleType.
Например, если ruleType (<ruleType>IC</ruleType>
) - IC, тогда мне нужно сгенерировать xml, как показано ниже.
<rule>
<ruleType>IC</ruleType>
<attributes>
<attribute>
<attributeName>salience</attributeName>
<value>100</value>
</attribute>
<attribute>
<attributeName>abc</attributeName>
<value>123</value>
</attribute>
</attributes>
</rule>
если типом правила является GC (<ruleType>GC</ruleType>
), тогда мне нужно сгенерировать, как показано ниже.
<rule>
<ruleType>GC</ruleType>
<attributes>
<attribute>
<attributeName>salience</attributeName>
<value>50</value>
</attribute>
<attribute>
<attributeName>abc</attributeName>
<value>123</value>
</attribute>
</attributes>
</rule>
и иногда я могу получить ruleType как пустой в этом случае, мне нужно сгенерировать, как показано ниже.
<rule>
<ruleType/>
<attributes>
<attribute>
<attributeName>salience</attributeName>
<value>10</value>
</attribute>
<attribute>
<attributeName>abc</attributeName>
<value>123</value>
</attribute>
</attributes>
</rule>
Даже если он получает пустые атрибуты, мне также нужно сгенерировать, как указано выше, с некоторым значением по умолчанию, равным 10.
Мне нужно изменить только элементы значения, связанные атрибутом attributeName (значимость).
Если значение attributeName отличается от значимого, мне нужно указать его в полученном xml.
Я использую xsl 1.0.
Пожалуйста, дайте мне несколько советов, чтобы сделать то же самое.