Mój model danych jest następujący:uzyskać najbardziej aktualne w dokumentacji xml
<Club>
<Captain>
<Name></Name>
<DateOfBirth>15-01-1985</DateOfBirth>
</Captain>
<PlayingStaff>
<Player>
<DateOfBirth>14-01-1993</DateOfBirth>
</Player>
<Player>
<DateOfBirth>07-12-1975</DateOfBirth>
</Player>
<Player>
<DateOfBirth>11-11-1991</DateOfBirth>
</Player>
</PlayingStaff>
</Club>
Próbowałem za pomocą odpowiedź udzieloną tutaj: XSLT: Getting the latest date ale isnt daje mi żadnej wartości.
Staram się, aby najmłodszy gracz przeszedł do funkcji zewnętrznej.
Robię to w BizTalk więc muszę trzymać się XSLT1
Moja praca do tej pory jest w następujący sposób:
<xsl:variable name="youngestPlayer">
<xsl:for-each select="$ClubRoot/*[local-name()='PlayingStaff']/*[local-name()='Player']">
<xsl:sort select="./*[local-name()='DateOfBirth']" order="descending"/>
<xsl:if test="position() = 1">
<xsl:value-of select="DateOfBirth"/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="IsYoungestPlayerUnderAgeLimit" select="externalfunctionreturningboolean">
<xsl:element name="blahhh"><xsl:value-of select="$IsYoungestPlayerUnderAgeLimit"/></xsl:element>
<xsl:element name="blahhh"><xsl:value-of select="$youngestPlayer"/></xsl:element>
Jest to część dużej matrycy - nie mogę naprawdę zmienić, ale wartość kiłę jest "<xsl:variable name="ClubRoot" select="/*[1]"/>"
aby zapewnić mogę odczytać jego węzły potomne.
zawsze jestem coraz
<blahhh>false</blahhh>
<blahhh/>
jako moje wartości debugowania ... więc nie podniosę wartości, której oczekuję.
Czy ktoś może wskazać miejsce, w którym popełniłem błąd?
Z powyższych danych oczekiwałbym wartości 14-01-1993 w mojej najmłodszej zmiennej Player. Ale puste.
przy użyciu funkcji translate(), można zmniejszyć liczbę xsl: sort instrukcje od 3 do 1 i uprość wyrażenie "xsl: sort/@ select". –