Я хочу создать вложенные XML узлы, используя один узел из структуры XML, я пытался, но не смог вывести вложенную XML структуру. Могут ли некоторые помочь мне, я не могу получить ожидаемое поведение .
XML Структура:
<job[n]/> -> 0...n
<person-non-active/> -> 1
<removed> -> 1
<?xml version="1.0" encoding="UTF-8"?>
<root>
<person>
<job1/>
<job2/>
<person-non-active>
<removed>
<job3/>
<job4/>
</removed>
</person-non-active>
</person>
<person>
<bio>
<job1/>
<job2/>
<person-non-active>
<removed>
<job3/>
</removed>
</person-non-active>
</bio>
</person>
<person>
<person-non-active>
<removed>
<job3/>
<job4/>
</removed>
</person-non-active>
</person>
</root>
XSL Используется:
<xsl:template match="person-non-active">
<person>
<xsl:if test="(count(../*) > 1)">
<job>
<xsl:attribute name="status"><xsl:text>active</xsl:text></xsl:attribute>
<xsl:attribute name="jobs">
<xsl:for-each select="../*">
<xsl:if test="not(name() = 'person-non-active')">
<xsl:value-of select="name()"/><xsl:text>, </xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:attribute>
</job>
</xsl:if>
<xsl:if test="(count(./removed/*) > 0)">
<job>
<xsl:attribute name="status"><xsl:text>non-acitve</xsl:text></xsl:attribute>
<xsl:attribute name="jobs">
<xsl:for-each select="./removed/*">
<xsl:value-of select="name()"/><xsl:text>, </xsl:text>
</xsl:for-each>
</xsl:attribute>
</job>
</xsl:if>
</person>
</xsl:template>
Вывод получен:
<person>
<job status="active" jobs="job1, job2, "/>
<job status="non-acitve" jobs="job3, job4, "/>
</person>
Ожидаемый вывод
<person>
<job status="active" jobs="job1, job2, ">
<job status="non-acitve" jobs="job3, job4, "/>
</job>
</person>
<person>
<bio>
<job status="active" jobs="job1, job2, ">
<job status="non-acitve" jobs="job3, "/>
</job>
</bio>
</person>
<person>
<job status="non-acitve" jobs="job3, job4, "/>
</person>
Элемент "персона-неактивен" должен использоваться для совпадения