BI Publisher RTF模板中Alpha数字数据的排序问题。

问题描述 投票:0回答:1

我有下面的XML,并希望排序的字母数字子数据,但排序时有问题。

<LEVEL>
 <PARENT>
   <CHILD>D1</CHILD>
 </PARENT>
 <PARENT>
  <CHILD>A2</CHILD>
 </PARENT>
 <PARENT>
  <CHILD>A1</CHILD>
 </PARENT>
 <PARENT>
  <CHILD>A1</CHILD>
 </PARENT>
 <PARENT>
  <CHILD>CD1234</CHILD>
 </PARENT>
 <PARENT>
  <CHILD>1</CHILD>
 </PARENT>
 <PARENT>
  <CHILD>2</CHILD>
 </PARENT>
 <PARENT>
  <CHILD>11</CHILD>
 </PARENT>
 <PARENT>
  <CHILD>9</CHILD>
 </PARENT>
 <PARENT>
  <CHILD>4</CHILD>
 </PARENT>
 <PARENT>
  <CHILD>C3</CHILD>
 </PARENT>
 </LEVEL>

我试过使用数据类型为数字和文本(升序& 降序)。附加尝试的情况下,所需的输出。你能不能帮助我?

enter image description here

xml xslt rtf bi-publisher
1个回答
0
投票

先按文本排序,再按数字排序。

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="/LEVEL">
    <xsl:copy>
        <xsl:for-each select="PARENT">
            <xsl:sort select="translate(CHILD, '0123456789', '')" data-type="text" order="ascending"/>
            <xsl:sort select="translate(CHILD, translate(CHILD, '0123456789', ''), '')" data-type="number" order="ascending"/>
            <xsl:copy-of select="CHILD"/>
        </xsl:for-each>
    </xsl:copy>
</xsl:template>

</xsl:stylesheet>

结果:先按文字排序,再按数字排序:XSLT 1.0

<?xml version="1.0" encoding="UTF-8"?>
<LEVEL>
   <CHILD>1</CHILD>
   <CHILD>2</CHILD>
   <CHILD>4</CHILD>
   <CHILD>9</CHILD>
   <CHILD>11</CHILD>
   <CHILD>A1</CHILD>
   <CHILD>A1</CHILD>
   <CHILD>A2</CHILD>
   <CHILD>C3</CHILD>
   <CHILD>CD1234</CHILD>
   <CHILD>D1</CHILD>
</LEVEL>
© www.soinside.com 2019 - 2024. All rights reserved.