0

在我的请求 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>

因此,基本上,以售出请求中的 BillerName 标记的值开头的名称排在第一位,其余的十个已排序名称。

我该如何实施?

4

2 回答 2

2

使用两个排序键,一个主要的和一个次要的:

<xsl:for-each select="Name">
  <xsl:sort select="not(starts-with(., $BillerName))"/>
  <xsl:sort select="."/>
  ...
</xsl:for-each>

这依赖于在真之前​​知道错误排序。

于 2015-10-14T21:23:55.267 回答
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>
于 2015-10-14T20:08:27.527 回答