I am facing a problem with same name nodes at the same level and specific order. My order depends on the value of their nodes. My output should be a txt file. My XML looks like:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<header>
<B>
<element>
<value>10</value>
<value>test</value>
</element>
</B>
<A>
<element>
<value>100</value>
<value>message</value>
</element>
</A>
<B>
<element>
<value>20</value>
<value>phase</value>
</element>
</B>
<A>
<element>
<value>101</value>
<value>type</value>
</element>
</A>
<B>
<element>
<value>20</value>
<value>phase</value>
</element>
</B>
<A>
<element>
<value>101</value>
<value>type</value>
</element>
</A>
</header>
My txt output should look like that.
typephase
typephase
and so on.
My XSL looks like that
Code:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="text" indent="yes" />
<xsl:template match="header/child::node()">
<xsl:if test="name(.) = 'A' and element/value='101'">
<xsl:value-of select="element/value[position()=2]" />
</xsl:if>
<xsl:if test="name(.) = 'B' and element/value='20'">
<xsl:value-of select="element/value[position()=2]" />
</xsl:if>
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="/">
<xsl:apply-templates select="header"></xsl:apply-templates>
</xsl:template>
</xsl:stylesheet>
The result with this XSL is:
phasetype
phasetype
xsl:sort descending doesn`t help me, because the original input XML has much more nodes. I need the order from the XSL not from the input XML document. Does anyone know, how to solve this?