일부 XML 파일을 변환하는 데 xslt를 사용하고 있습니다. 내 입력 데이터는 다음과 같습니다 : 값의 요소가 0이 아닌 경우 즉xslt를 사용하여 xml 요소 찾기
<root>
<item>
<text>
Feb 14, 2013
</text>
</item>
</root>
내가 가장 최근 날짜 요소를 찾고 있어요 :
<data>
<dataItem>
<value>24014</value>
<date>Feb 11, 2013</date>
</dataItem>
<dataItem>
<value>0</value>
<date>Feb 12, 2013</date>
</dataItem>
<dataItem>
<value>0</value>
<date>Feb 13, 2013</date>
</dataItem>
<dataItem>
<value>24627</value>
<date>Feb 14, 2013</date>
</dataItem>
<dataItem>
<value>0</value>
<date>Feb 15, 2013</date>
</dataItem>
</data>
내 출력 데이터는 다음과 같이해야합니다 dataItem 요소는 날짜 순서가 증가하도록 보장됩니다 (문서의 맨 위에서 시작).
나는 다음과 같이 재귀 적으로이 문제를 접근하는 시도했다 :
이<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template name="findDate">
<xsl:param name="list"/>
<xsl:choose>
<xsl:when test="value = 0">
<xsl:call-template name="findDate">
<xsl:with-param name="list" select="$list[position()!=1]"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<root>
<item>
<text>
<xsl:value-of select="label"/>
</text>
</item>
</root>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="/">
<xsl:call-template name="findDate">
<xsl:with-param name="list" select="//dataItem"/>
</xsl:call-template>
</xsl:template>
</xsl:stylesheet>
지금까지하지만, 그것은 작동하지 않습니다, 나는 밖으로지고있어 모두가 이것이다 :
<root>
<item>
<text>
</text>
</item>
</root>
사람이 수 내가 어디로 잘못 가고 있는지 보아라.
감사합니다,
바울 dataItem
요소가 이미 date
으로 분류하는 경우
대소 문자가 도움이됩니다. Daniel. –