Кто-нибудь знает о встроенной функции для выполнения coalesce в XSLT, или мне нужно написать свое собственное?xslt coalesce function with Saxon
У меня есть некоторые XML следующим образом:
<root>
<Element1>
<Territory>Worldwide</Territory>
<Name>WorldwideName</Name>
<Age>78</Age>
</Element1>
<Element1>
<Territory>GB</Territory>
<Name>GBName</Name>
</Element1>
</root>
Второй element1 (GB край) является необязательным и укомплектовать может или возникнуть, могут не, однако, когда это происходит, то оно имеет приоритет над WorldWide на территории.
Так что я был после что-то вроде ниже сливаются:
<xsl:variable name="Worldwide" select="root/Element1[./TerritoryCode ='Worldwide']"/>
<xsl:variable name="GB" select="root/Element1[./TerritoryCode ='GB']"/>
<xsl:variable name="Name" select="ext:coalesce($GB/Name, $Worldwide/Name)"/>
Идентификатор в том, что имя переменной в приведенном выше примере будет содержать GBName.
Я знаю, что могу использовать xsl: choose, но у меня есть места, где есть 4 места, которые он мог бы посмотреть, а xsl: выбрать просто становится грязным и сложным, поэтому надеялся найти встроенную функцию, но пока не повезло.
спасибо.
XPath 2 поддерживает условные выражения [] (http://www.w3.org/TR/xpath20/#id-conditionals), который может помогите вам достичь этого. –