У меня есть документ с определенным атрибутом (myId), значение которого необходимо обновлять всякий раз, когда его значение равно нулю. Документ выглядит так
<?xml version="1.0" encoding="UTF-8"?><Summary>
<Section myId="0">
<Section myId="0">
<Para>...</Para>
</Section>
<Section myId="5">
<Para>...</Para>
</Section>
</Section>
</Summary>
Я использую шаблон для сопоставления атрибута myId, чтобы установить для него уникальный идентификатор, переданный из вызывающей программы, но я хочу сопоставить только один из атрибутов в документе. Любые дополнительные атрибуты со значением 0 будут обновлены путем передачи другого идентификатора. Мой шаблон, который я использую, выглядит так:
<xsl:template match = '@myId[.="0"]'>
<xsl:attribute name = "{name()}">
<xsl:value-of select = "$addValue"/>
</xsl:attribute>
</xsl:template>
Значение addValue является глобальным параметром, передаваемым из вызывающей программы. Я искал ответ большую часть дня, но не могу применить этот шаблон только один раз. В выходных данных оба значения myId заменяются содержимым addValue. Я пытался сопоставить с '@myId[."0"][1]' и пытался использовать функцию position() для сопоставления, но мой шаблон всегда применяется ко всем атрибутам myId, которые равны нулю.
Можно ли применить соответствующий шаблон только один раз?
preceding
, где count равен 0. - person   schedule 05.05.2012