在我的请求xml中有一个标记,其值在发送到Web服务时返回响应的名称列表。最初的要求是按字母顺序对名称进行排序,我使用xsl:sort函数实现。现在要求发生了一些变化,我无法弄清楚它的代码。请参阅下面的请求,排序响应和预期的响应。
Request: <BillerName>Dir</BillerName>
Sorted Response: <Name>AT Direct</Name>
<Name>Direct AV</Name>
<Name>Direct SV</Name>
<Name>The Direct AV</Name>
Expected Response: <Name>Direct AV</Name>
<Name>Direct SV</Name>
<Name>AT Direct</Name>
<Name>The Direct AV</Name>
所以基本上,以te请求销售的BillerName标签的值开头的名称首先出现,而其余的te排序名称则为10。
我该如何实现?
答案 0 :(得分:2)
使用两个排序键,主要和次要:
<xsl:for-each select="Name">
<xsl:sort select="not(starts-with(., $BillerName))"/>
<xsl:sort select="."/>
...
</xsl:for-each>
这依赖于在真实之前知道错误排序。
答案 1 :(得分:0)
类似的东西:
<xsl:variable name="BillerName" select="BillerName"/>
<xsl:for-each select="Name[starts-with(., $BillerName)]">
<xsl:sort/>
<xsl:copy-of select="."/>
</xsl:for-each>
<xsl:for-each select="Name[not(starts-with(., $BillerName))]">
<xsl:sort/>
<xsl:copy-of select="."/>
</xsl:for-each>