Использование XPath для текущей группы()

Мне нужно выбрать подмножество узлов current-group() в цикле xsl:for-each-group. Когда я использую XPath формы current-group()/foo, ничего не совпадает. Однако если я привязываю текущую группу к переменной следующим образом:

<xsl:variable name="foo"><xsl:copy-of select="current-group()"/></xsl:variable>

а затем используйте XPath в форме $foo/foo, я получаю ожидаемые совпадения. Я подозреваю, что проблема как-то связана с типом current-group() и с тем, что переменная $foo имеет другой тип, но я не могу понять это сам. Любые подсказки, как я могу избежать введения переменной для преобразования типа? Или это что-то другое?


person Hans Hübner    schedule 27.04.2018    source источник
comment
Что вы выбираете в своей группе для каждой группы? Является ли foo дочерним элементом того, что выбрано? mcve поможет нам понять вопрос.   -  person Daniel Haley    schedule 27.04.2018


Ответы (1)


если вы сделаете что-то вроде: <xsl:for-each-group select="foo" group-by="type"> <xsl:value-of select="current-group()[self::foo]"/> </xsl:for-each-group> Затем current-group() вернет последовательность элементов

Но <xsl:variable name="foo"><xsl:copy-of select="current-group()"/></xsl:variable>

возвращает узел документа, который содержит последовательность foo, а затем вам нужно использовать: <xsl:value-of select="current-group()/foo"/>

person Evgeny Degtyarev    schedule 27.04.2018