0

私のリクエストxmlには、Webサービスに送信されたときに値が応答で名前のリストを返すタグがあります。最初の要件は、応答の名前をアルファベット順に並べ替えることでした。これは、xsl:sort 関数を使用して実装しました。現在、要件が少し変更されており、そのコードを理解できません。pls は、要求、並べ替えられた応答、および予想される応答の下を参照してください。

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 タグの値で始まる名前が最初に来て、残りの 10 個の名前がソートされます。

どうすればこれを実装できますか?

4

2 に答える 2

2

メジャーとマイナーの 2 つのソート キーを使用します。

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

これは、false が true の前にソートされることを知っていることに依存しています。

于 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 に答える