У меня есть следующий XMl. Я хочу прочитать даты начала и окончания на основе значения типа. когда тип «O», тогда прочитайте дату начала и окончания O и то же для типа «L». Дата не является обязательной.xslt следующее значение элемента на основе предыдущего элемента
<Person id="1">
<Date>
<Type value="O"/>
<Start value="2009-04-01"/>
<End value="2012-03-31"/>
</Date>
<Date>
<Type value="L"/>
<Start value="2009-01-31"/>
</Date>
</Person>
<Person id="2">
<Date>
<Type value="O"/>
<Start value="2009-01-11"/>
</Date>
</Person>
У меня есть следующий код XSLT. Но это чтение и расчесывание дат начала и окончания, которые присутствуют в обоих.
<xsl:choose>
<xsl:when test="Date/Type[@value = 'O']">
<xsl:value-of select="Date/Start/@value"/><xsl:value-of select="$separator" />
<xsl:value-of select="Date/End/@value"/><xsl:value-of select="$separator" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$separator" /><xsl:value-of select="$separator" />
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="Date/Type[@value = 'L']">
<xsl:value-of select="Date/Start/@value"/><xsl:value-of select="$separator" />
<xsl:value-of select="Date/End/@value"/><xsl:value-of select="$separator" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$separator" /><xsl:value-of select="$separator" />
</xsl:otherwise>
</xsl:choose>
выход желание CSV
"2009-04-01","2012-03-31","2009-01-31",""
"2009-01-11","","",""
Пожалуйста, ваши желаемого выходного XML, основанный на вашей входной XML выше. –
@ JoelM.Lamsen: я обновил вопрос с помощью желаемого результата. спасибо – user3202862