Как правило, вам нужно tokenize
содержимое элемента (ов) article
и создать новый элемент article
для каждого токена с помощью xsl:element
, в XSLT 3 один способ достичь этого - с помощью
<xsl:template match="article">
<xsl:apply-templates select="tokenize(., ',')">
<xsl:with-param name="element-name" select="node-name()"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match=".[. instance of xs:string]">
<xsl:param name="element-name"/>
<xsl:element name="{$element-name}">{.}</xsl:element>
</xsl:template>
Минимальная, но полная выборка будет
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
expand-text="yes"
version="3.0">
<xsl:mode on-no-match="shallow-copy"/>
<xsl:output indent="yes"/>
<xsl:template match="article">
<xsl:apply-templates select="tokenize(., ',')">
<xsl:with-param name="element-name" select="node-name()"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match=".[. instance of xs:string]">
<xsl:param name="element-name"/>
<xsl:element name="{$element-name}">{.}</xsl:element>
</xsl:template>
</xsl:stylesheet>
https://xsltfiddle.liberty -development.net / pPqsHU8