Mi modelo de datos es el siguiente:Obtener la fecha más reciente en registros 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>
He intentado usar la respuesta dada aquí: XSLT: Getting the latest date pero ¿no es cierto me da ningún valor.
Estoy intentando que el jugador más joven pase a una función externa.
que estoy haciendo esto en Biztalk por lo que tienen que atenerse a XSLT1
Mi trabajo hasta ahora es la siguiente:
<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>
Esto es parte de una plantilla grande - en realidad no puedo cambiar esto, pero el valor de Clubroot es "<xsl:variable name="ClubRoot" select="/*[1]"/>"
para asegurar que puedo leer sus nodos secundarios.
siempre estoy
<blahhh>false</blahhh>
<blahhh/>
como mis valores de depuración ... así que no estoy recogiendo el valor que espero
¿Alguien puede resaltar dónde me he equivocado?
A partir de los datos anteriores, esperaría el valor de 14-01-1993 en la variable del jugador más joven. Pero está en blanco.
Al usar la función translate(), se puede reducir el número de xsl: sort instrucciones de 3 a 1, Y simplifique la expresión 'xsl: sort/@ select'. –