xsl功能需要改进

时间:2017-09-18 19:51:23

标签: xml xslt

所以我在这里有这个功能

<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>

......并且做的是按照他们的头衔安排员工..首先展示教师,然后是辅助教员,然后是员工。它是唯一的问题,如果有人的标题不同于那三个分页符。

我希望它能做的是,如果有人拥有不同的头衔,那么下一步就是工作人员。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

您可以检查返回计数加上未找到的任何role的已知值序列中的1:

<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>

答案 1 :(得分:1)

还有一种旧技术,即在要搜索的序列的末尾放置所需值的副本:

"Given request user1
When method post
Then status 201
Given path response.id
When method get"
Then response == {id:'123', name:'Bill'} etc.