Как переместить элемент 'affiliation' в элемент 'contrib', который находится в контексте «для каждого» в XSLT?Как переместить элемент в другой преобразованный элемент в XSLT?
Входной XML:
<article>
<authors>Amrendra, Kumar; Mohan, Kumar</authors>
<affiliation id="Amrendra, Kumar">Amrendra, Kumar</affiliation>
<affiliation id="Mohan, Kumar">Mohan, Kumar</affiliation>
</article>
Выходной ток:
<contrib-group>
<contrib>
<string-name>Amrendra, Kumar</string-name>
</contrib>
<contrib>
<string-name>Mohan, Kumar</string-name>
</contrib>
<aff id="Amrendra, Kumar">Amrendra, Kumar</aff>
<aff id="Mohan, Kumar">Mohan, Kumar</aff>
</contrib-group>
XSLT Код:
<xsl:template match="authors">
<xsl:choose>
<xsl:when test="not(node())"/>
<xsl:otherwise>
<contrib-group>
<xsl:for-each select="tokenize(., ';')">
<contrib>
<string-name>
<xsl:value-of select="normalize-space(.)"/>
</string-name>
</contrib>
</xsl:for-each>
<xsl:apply-templates select="../affiliation"/>
</contrib-group>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Обязательный выход: (Matching с AFF/@ идентификатор и вно/# PCDATA)
<contrib-group>
<contrib>
<string-name>Amrendra, Kumar</string-name>
<aff id="Amrendra, Kumar">Amrendra, Kumar</aff>
</contrib>
<contrib>
<string-name>Mohan, Kumar</string-name>
<aff id="Mohan, Kumar">Mohan, Kumar</aff>
</contrib>
</contrib-group>
, когда я пытаюсь применить элемент «принадлежность» внутри вно, то он показывает ниже ошибки:
[Saxon-PE 9.5.1.7] XPTY0020: Cannot select the parent of the context node: the context item is not a node
Можете ли вы показать полный XSLT, который демонстрирует вашу проблему, пожалуйста? Я не думаю, что показанный шаблон приводит к ошибке, если только ваш фактический XSLT не имеет ' ' в структуре 'xsl: for-each', не после этого. Спасибо. –
Что конкретно связывает автор с соответствующей «принадлежностью»? У вас одинаковые значения в трех местах, трудно сказать, какую пару использовать. –