Я имею в виду добавить элемент атрибута в узел тогда и только тогда, когда существует источник данных этого атрибута.
Другими словами, я не хочу заканчиваться пустыми атрибутами, если источник не соответствует моему правилу.
<tok id="t1" fooID=""/> //not accepted
<tok id="t1" /> //instead of ^
<tok id="t1" fooID="bar"/> //accepted
Более того, я хотел бы проверить, имеет ли источник более 1 узла, соответствующего моему текущему атрибуту, и если да, добавьте еще один атрибут
foo
с «source2». Вот что я сейчас использую:
<xsl:template match="tokens/token">
<tok id="{@ID}"
ctag="{/root/myStuff/fooSources[1and2 how?]/fooSource[@fooID=current()/@ID]}"
>
</tok>
Исходный XML выглядит следующим образом:
<root>
<myStuff>
<tokens>
<token ID="bar"/>
<token ID="anotherBar"/>
<token ID="noFoo"/>
</tokens>
<fooSources>
<fooSource fooID="bar"> kitten </fooSource>
<fooSource fooID="anotherBar"> shovel </fooSource>
</fooSources>
<fooSources>
<fooSource fooID="bar"> kitty </fooSource>
<fooSource fooID="notAnotherBar"> fridge </fooSource>
</fooSources>
</myStuff>
</root>
Желаемый результат будет следующим:
<tok id="bar" fooID="kitten" fooID_2="kitty"/>
<tok id="anotherBar" fooID="shovel"/>
<tok id="noFoo" />
Заранее спасибо за любую помощь!
PS: я бы хотел сделать это в xpath 1.0