Я бы хотел xsl, который заменяет атрибут value элементов данных, только если переданы соответствующие имена param
(они переданы из вызывающей Java-программы).
Ввод
<applicationVariables applicationServer="tomcat">
<data name="HOST" value="localhost"/>
<data name="PORT" value="8080"/>
<data name="SIZE" value="1000"/>
</applicationVariables>
Так, например, если передать параметр HOST1 = myHost и PORT = 9080, вывод должен быть:
<applicationVariables applicationServer="tomcat">
<data name="HOST" value="myHost"/>
<data name="PORT" value="9080"/>
<data name="SIZE" value="1000"/>
</applicationVariables>
Обратите внимание, что HOST и PORT были заменены, но размер не был заменен, поскольку не было параметра с именем SIZE
Мне не нужна проверка для каждого имени, как показано ниже:
<xsl:when test="not($HOST)"> <!-- parameter has not been supplied -->
<xsl:attribute name="value"><xsl:value-of select="@value"/></xsl:attribute>
</xsl:when>
<xsl:otherwise> <!--parameter has been supplied -->
<xsl:attribute name="value"><xsl:value-of select="$HOST"/></xsl:attribute>
</xsl:otherwise>
Мне нужен общий способ сказать: заменять атрибут значения только в том случае, если существует параметр с тем же именем.
Но как мне проверить, существует ли параметр с именем = @name?