2017-09-18 1 views
0

So habe ich diese Funktion hierxsl Funktion verbessert werden muss

<xsl:function name="fn:role-rank" as="xs:integer"> 
    <xsl:param name="role" as="xs:string"/> 
    <xsl:sequence select="index-of(('Faculty', 'Adjunct Faculty', 'Staff'), $role)"/> 
    </xsl:function> 

... und was tut, ist anordnet Mitarbeiter durch ihren Titel .. erste Fakultät angezeigt wird, dann Adjunct Faculty und schließlich Mitarbeiter. Es funktioniert großartig, das einzige Problem ist, wenn jemand einen Titel hat, der sich von diesen drei Seitenumbrüchen unterscheidet.

Was ich möchte es ist, wenn jemand einen anderen Titel hat, würde es nur als nächstes in Zeile unter den Mitarbeitern sein.

Jede Hilfe würde sehr geschätzt werden!

Antwort

1

Sie überprüfen könnten, die Zählung plus 1 der Sequenz von bekannten Werten für jeden role Rückkehr nicht gefunden werden:

<xsl:function name="fn:role-rank" as="xs:integer"> 
    <xsl:param name="role" as="xs:string"/> 
    <xsl:variable name="known-titles" 
        as="xs:string*" 
        select="('Faculty', 'Adjunct Faculty', 'Staff')"/> 
    <xsl:sequence select="(index-of($known-titles, $role), 
          count($known-titles) + 1)[1]"/> 
    </xsl:function> 
+0

Danke funktioniert! Musste einfach ein s zu dem bekannten Titel – dbaker6

+0

@ dbaker6 hinzufügen, sorry darüber, jetzt behoben. –

1

Es gibt auch die alte Technik, die eine Kopie des gesuchten Wertes am Ende des von Putten zu durchsuchende Sequenz:

<xsl:function name="fn:role-rank" as="xs:integer"> 
    <xsl:param name="role" as="xs:string"/> 
    <xsl:variable name="known-titles" as="xs:string*" 
        select="('Faculty', 'Adjunct Faculty', 'Staff')"/> 
    <xsl:sequence select="index-of(($known-titles, $role), $role)[1]"/> 
</xsl:function> 
+0

Dies wird zu einem Fehler führen, wenn '$ role' ein bekannter Titel ist: http://xsltransform.net/pNmBy1P –

+0

Hier ist ein Fix:' ' –

Verwandte Themen