根据 ss:Index 对单元格进行排序

2024-05-27

服务器生成的 XML 电子表格具有随机序列<Cell>每个中都有<Row>。这是需要排序的。

我想使用 XSLT 实现进行排序<Cell>每个中都有<Row>基于ss:Index。 我尝试过,但未能获得排序结果。(XSLT 代码如下)

XML电子表格

<?xml version="1.0" encoding="UTF-8" standalone="no"?><?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" 
    xmlns:html="http://www.w3.org/TR/REC-html40" 
    xmlns:o="urn:schemas-microsoft-com:office:office" 
    xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" 
    xmlns:x="urn:schemas-microsoft-com:office:excel">
    <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
        <Version>16.00</Version>
    </DocumentProperties>
    <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
        <AllowPNG/>
    </OfficeDocumentSettings>
    <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
        <WindowHeight>10185</WindowHeight>
        <WindowWidth>20610</WindowWidth>
        <WindowTopX>0</WindowTopX>
        <WindowTopY>0</WindowTopY>
        <RefModeR1C1/>
        <ProtectStructure>False</ProtectStructure>
        <ProtectWindows>False</ProtectWindows>
    </ExcelWorkbook>
    <Styles>
        <Style ss:ID="Default" ss:Name="Normal">
            <Alignment ss:Vertical="Bottom"/>
            <Borders/>
            <Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11" x:Family="Swiss"/>
            <Interior/>
            <NumberFormat/>
            <Protection/>
        </Style>
        <Style ss:ID="header">
            <Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>
            <Borders>
                <Border ss:Color="#000000" ss:LineStyle="Continuous" ss:Position="Left" ss:Weight="1"/>
                <Border ss:Color="#000000" ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="1"/>
                <Border ss:Color="#000000" ss:LineStyle="Continuous" ss:Position="Top" ss:Weight="1"/>
            </Borders>
            <Font ss:Bold="1" ss:Color="#000000" ss:FontName="Arial" ss:Size="11" x:Family="Swiss"/>
            <Interior ss:Color="#E2EFDA" ss:Pattern="Solid"/>
        </Style>
        <Style ss:ID="record">
            <Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>
            <Borders>
                <Border ss:Color="#000000" ss:LineStyle="Continuous" ss:Position="Bottom" ss:Weight="1"/>
                <Border ss:Color="#000000" ss:LineStyle="Continuous" ss:Position="Left" ss:Weight="1"/>
                <Border ss:Color="#000000" ss:LineStyle="Continuous" ss:Position="Right" ss:Weight="1"/>
                <Border ss:Color="#000000" ss:LineStyle="Continuous" ss:Position="Top" ss:Weight="1"/>
            </Borders>
            <Font ss:Color="#000000" ss:FontName="Arial" ss:Size="11" x:Family="Swiss"/>
        </Style>
    </Styles>
    <Worksheet ss:Name="Report">
        <Names>
            <NamedRange ss:Hidden="1" ss:Name="_FilterDatabase" ss:RefersTo="=Report!R1C1:R1C19"/>
        </Names>
        <Table>
            <Column ss:AutoFitWidth="0" ss:Width="87"/>
            <Column ss:AutoFitWidth="0" ss:Width="135"/>
            <Column ss:AutoFitWidth="0" ss:Width="249.75"/>
            <Column ss:AutoFitWidth="0" ss:Width="97.5"/>
            <Column ss:AutoFitWidth="0" ss:Width="97.5"/>
            <Column ss:AutoFitWidth="0" ss:Span="1" ss:Width="97.5"/>
            <Column ss:AutoFitWidth="0" ss:Index="8" ss:Width="105.75"/>
            <Column ss:AutoFitWidth="0" ss:Width="90"/>
            <Column ss:AutoFitWidth="0" ss:Span="9" ss:Width="97.5"/>
            <Row ss:AutoFitHeight="0" ss:Height="31.5">
                <Cell ss:Index="8" ss:StyleID="header">
                    <Data ss:Type="String">c8</Data>
                </Cell>
                <Cell ss:Index="9" ss:StyleID="header">
                    <Data ss:Type="String">c9</Data>
                </Cell>
                <Cell ss:Index="10" ss:StyleID="header">
                    <Data ss:Type="String">c10</Data>
                </Cell>
                <Cell ss:Index="11" ss:StyleID="header">
                    <Data ss:Type="String">c11</Data>
                </Cell>
                <Cell ss:Index="7" ss:StyleID="header">
                    <Data ss:Type="String">c7</Data>
                </Cell>
                <Cell ss:Index="12" ss:StyleID="header">
                    <Data ss:Type="String">c12</Data>
                </Cell>
                <Cell ss:Index="13" ss:StyleID="header">
                    <Data ss:Type="String">c13</Data>
                </Cell>
                <Cell ss:Index="14" ss:StyleID="header">
                    <Data ss:Type="String">c14</Data>
                </Cell>
                <Cell ss:Index="15" ss:StyleID="header">
                    <Data ss:Type="String">c15</Data>
                </Cell>
                <Cell ss:Index="16" ss:StyleID="header">
                    <Data ss:Type="String">c16</Data>
                </Cell>
                <Cell ss:Index="1" ss:StyleID="header">
                    <Data ss:Type="String">c1</Data>
                </Cell>
                <Cell ss:Index="2" ss:StyleID="header">
                    <Data ss:Type="String">c2</Data>
                </Cell>
                <Cell ss:Index="3" ss:StyleID="header">
                    <Data ss:Type="String">c3</Data>
                </Cell>
                <Cell ss:Index="4" ss:StyleID="header">
                    <Data ss:Type="String">c4</Data>
                </Cell>
                <Cell ss:Index="5" ss:StyleID="header">
                    <Data ss:Type="String">c5</Data>
                </Cell>
                <Cell ss:Index="6" ss:StyleID="header">
                    <Data ss:Type="String">c6</Data>
                </Cell>
                <Cell ss:Index="17" ss:StyleID="header">
                    <Data ss:Type="String">c17</Data>
                </Cell>
                <Cell ss:Index="18" ss:StyleID="header">
                    <Data ss:Type="String">c18</Data>
                </Cell>
                <Cell ss:Index="19" ss:StyleID="header">
                    <Data ss:Type="String">c19</Data>
                </Cell>
            </Row>          
        </Table>
        <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
            <Unsynced/>
            <Print>
                <ValidPrinterInfo/>
                <PaperSizeIndex>9</PaperSizeIndex>
                <HorizontalResolution>600</HorizontalResolution>
                <VerticalResolution>600</VerticalResolution>
            </Print>
        </WorksheetOptions>
        <AutoFilter xmlns="urn:schemas-microsoft-com:office:excel" x:Range="R1C1:R1C19">
        </AutoFilter>
    </Worksheet>
</Workbook>

XLST

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">

  <xsl:output method="xml" encoding="utf-8" indent="yes"/>

  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="Row">
    <xsl:copy>
      <xsl:apply-templates select="*">
        <xsl:sort select="@ss:Index" order="ascending" data-type="number"/>
      </xsl:apply-templates>
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>

 <xsl:template match="Row">

与您的输入 XML 中的任何内容都不匹配,因为您的输入 XML 有一个默认命名空间:

<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" 

您已经在样式表中声明了此名称空间并为其分配了一个前缀 - 现在您所要做的就是使用它:

<xsl:template match="ss:Row">
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据 ss:Index 对单元格进行排序 的相关文章

随机推荐

  • JavaFX 8 默认消息图标

    随着 JavaFX 的最近几次更新 我们收到了警报 我想获取消息的默认图标 错误 警告 在Swing中 我可以通过一些方式获取L F消息图标UIManager的属性 如何在 JavaFX 中获取消息的默认图标 它们是包含在属性中 还是由 C
  • 无法使用 FirebaseRecyclerAdapter

    即使在 gradle 依赖项中添加 firebase ui 之后 我在尝试使用它时也无法解析 FirebaseRecyclerAdapter 提前致谢 我遇到了同样的问题 通过在 build gradle module app 中添加 fi
  • 从字符串中提取文本 Java

    使用此字符串 ADACADABRA 如何从java中的字符串 ADACADABRA 中提取 CADA 以及如何提取 和 之间的id从下面的链接 http www youtube nocookie com embed zaaU9lJ34c5
  • NHibernate Criteria API 是否支持集合属性的投影?

    我需要使用条件 API 复制以下工作 HQL 查询 session CreateQuery select c from Parent p inner join p Children c where p Id 9 and c Id 33 Se
  • JSF“总”变量类似于 JSTL 中的 c:set

    我不喜欢 JSF 但我需要用它来解决这个问题 我正在 纯 JSF 中工作 所以这就是我基本上需要的 但我不知道如何用 JSF 来实现它
  • 飞碟 - html 实体未呈现

    我正在使用 Flying saucer lib 生成 pdf 但我对一些 html 实体有问题 我已经在寻找解决方案 我在这个论坛和其他地方找到了很多提示 但仍然存在问题 我尝试过这种方法 http sdtidbits blogspot c
  • Python Pandas 系列失败日期时间

    我认为这一定是 pandas 的失败 有一个 pandas 系列 v 18 1 和 19 如果我为该系列分配一个日期 第一次将其添加为 int 错误 第二次将其添加为 int 错误 添加为日期时间 正确 我无法理解原因 例如使用以下代码 i
  • 在 asp.net mvc 3 中使用 Last-Modified 标头和 OutputCacheAttribute 进行客户端缓存

    Edited 我想在客户端缓存图像 并且知道在 mvc 3 中有不同的方法可以做到这一点 如果我错了 请纠正我 1 你可以使用OutputCacheAttribute其工作原理是Expireshttp 标头 但它会回来304 Not Mod
  • Python代码检测OS X El Capitan中的暗模式以更改状态栏菜单图标

    我有目标 C 代码来检测暗模式以更改状态栏 NSDistributedNotificationCenter defaultCenter addObserver self selector selector darkModeChanged n
  • 闪亮的演示文稿 (ioslides):自定义 CSS 和徽标

    我安装了以下内容 RStudio 预览版 版本 0 98 864 2014 年 5 月 24 日 knitr 和shiny 的开发版本 来自 devtools install github c yihui knitr rstudio shi
  • 有人还在使用客户端服务器架构吗[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我编写软件已有几十年了 现在一切都是网络 在网络出现之前 我们拥有的客户端服务器应用程序基本上是直接与数据库对话的胖客户端应用程序 它
  • 用于删除扩展名为 .bak 的文件的批处理文件

    我想批量删除磁盘上各个文件夹中的所有文件 bakc 谁能帮我 ex all c del bak s a 谢谢 它可以是单个命令 del s q f c bak
  • System.out.println("嗨"+6+10);打印Hi610?

    为什么要这样做 太令人困惑了 运算符优先级和结合性 两点 操作员 如果一个或两个参数都是字符串 则进行字符串连接 操作员 从左到右工作 所以在你的例子中 Hi 6 is Hi6 and Hi6 10 is Hi610 编辑 正如您在对另一个
  • Android:非键盘输入法

    我正在尝试为 Android 创建一个不是传统键盘 对应于不同字母的按键行 的 IME 并且我无法找到有关如何执行此操作的有用资源 因为 SDK 中的所有代码示例都使用键盘 API它是内置函数 我在 XML 文件中设计了 IME 界面 就好
  • Rails 4 不更新嵌套属性

    Issue 代替updating嵌套属性 它们正在created当我点击现有的嵌套属性之上 update相关的行动features controller rb 可能的原因 我认为问题在于我对 Rails 缺乏了解form for 我认为细分
  • 上下文切换到安全模式(arm trustzone)的成本是多少

    我试图了解在arm中可信 安全 和非安全模式之间来回切换的成本 从非安全世界转移到安全世界时到底需要发生什么 我知道需要设置 ns 位 基于某些特殊指令 需要刷新和更新页表 刷新和更新处理器缓存 还有什么需要发生的吗 处理器缓存 它们是分段
  • WMI 不返回 Windows 7 64 上的所有安装程序

    今天 我们尝试使用以下脚本列出每个虚拟机上所有已安装的程序来查询 WMI 我们发现它会列出所有 64 位应用程序 以及一些 32 位应用程序 但并非所有应用程序 32 位 64 位 都会列出 param string ExportPath
  • 如何在 i18next 中使用多个命名空间?

    我刚刚启动 i18next 我想为项目中的每个模块创建翻译文件 看起来使用命名空间是执行此操作的正确方法 该项目可以使用多个视图创建页面布局 因此我需要能够同时翻译多个命名空间中的字符串 我创建了一个具有两个命名空间的简单示例 但我只能使用
  • Unity 上适用于 Android 的 vuforia 插件和 prime31 facebook 插件之间的冲突

    如今客户需要它 这真的很紧急 T T 我在 Unity 上的 Android 应用程序中同时安装了 vuforia 插件和 prime31 facebook 插件 难点在于androidmanifest xml文件 它们都充当 MAIN 和
  • 根据 ss:Index 对单元格进行排序

    服务器生成的 XML 电子表格具有随机序列