行计数,包括转换节点

     2023-02-16     238

关键词:

【中文标题】行计数,包括转换节点【英文标题】:Row counting including transformed nodes 【发布时间】:2021-11-19 01:20:32 【问题描述】:

我需要正确的行计数(在属性pos="1"、"2" 等中)用于从其子元素部分转换的line 元素节点。 XSLT 代码的当前 counting-part 无法正常工作。我还尝试创建一个变量模板来计算所需的节点,但到目前为止该变量是无用的,因为尚不完全清楚如何在下一步中应用它。

源 XML

<?xml version="1.0" encoding="UTF-8"?>
<entry>

  <line id="001" att1="aaa" att2="bbb" att3="ccc"/>
  <line id="002" att1="ddd" att2="eee" att3="fff"/>
  <line id="003" att1="ggg" att2="hhh" att3="iii">

    <subline  x="name" z="lastname"/>
    <subline  x="name2" z="lastname2"/>
    <underline  a="bar" b="foo"/>
  </line>

</entry>

期望的输出(无论如何pos=在属性中的位置可以是任意的)

<?xml version="1.0" encoding="UTF-8"?><entry>
<entry>

  <line pos="1" id="001" att1="aaa" att2="bbb" att3="ccc"/>
  <line pos="2" id="002" att1="ddd" att2="eee" att3="fff"/>
  

  <line pos="3" id="003" att1="ggg" att2="hhh" att3="iii" x="name" z="lastname"/>
  <line pos="4" id="003" att1="ggg" att2="hhh" att3="iii" x="name2" z="lastname2"/>
  <line pos="5" id="003" att1="ggg" att2="hhh" att3="iii" a="bar" b="foo"/>

</entry>

提供 XSLT 代码

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">

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

  <xsl:template match="line[*]">
    <xsl:apply-templates/>
  </xsl:template>

<xsl:template match="/">
  <xsl:for-each select="entry/line">
    <xsl:variable name="pos" select="position()" />
  </xsl:for-each>

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

  <xsl:template match="line/*">
    <line  pos="position()">
      <xsl:copy-of select="../@* | @*"/>
    </line>
  </xsl:template>

</xsl:stylesheet>

【问题讨论】:

请解释一下跳过数字4的逻辑。 只是一个错误。谢谢,已更正 【参考方案1】:

怎么样:

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:template match="/entry">
    <xsl:copy>
        <xsl:for-each select="line[not(*)] | line/*">
            <line pos="position()">
                <xsl:copy-of select="parent::line/@* | @*"/>
            </line>
        </xsl:for-each>     
    </xsl:copy>
</xsl:template>

</xsl:stylesheet>

【讨论】:

Oracle 按时间段对合格行进行分组,包括零计数

】Oracle按时间段对合格行进行分组,包括零计数【英文标题】:Oraclegroupqualifyingrowsbytimeperiodincludingzerocounts【发布时间】:2014-05-1204:38:28【问题描述】:假设我有一个Oracle10g表,它记录了我系统上的所有响应时间。如何按日期获... 查看详情

MySQL 计数行包括零(非常接近我想要的!)

】MySQL计数行包括零(非常接近我想要的!)【英文标题】:MySQLcountrowsincludezero(soclosetowhatIwant!)【发布时间】:2012-06-0411:37:11【问题描述】:我知道我已经很近了,它正在杀死我。这里需要一双新的眼睛......SELECTfirst_name,COUNT(*)FR... 查看详情

计数行在 Codeigniter 中按 Id 包括 JSON

】计数行在Codeigniter中按Id包括JSON【英文标题】:CountingRowsIncludesJSONbyIdinCodeigniter【发布时间】:2021-12-2206:15:40【问题描述】:我们有一个组表名称为“组”(有邮件组)我们有一个人表名称为“人”(有些人有在邮件组中)我... 查看详情

洛谷——p3914染色计数

P3914染色计数题目描述有一颗NN个节点的树,节点用1,2,cdots,N1,2,?,N编号。你要给它染色,使得相邻节点的颜色不同。有MM种颜色,用1,2,cdots,M1,2,?,M编号。每个节点可以染MM种颜色中的若干种,求不同染色方案的数量除以(10^9+7109+7)的... 查看详情

洛谷p3914染色计数

P3914染色计数题目描述有一颗NN个节点的树,节点用1,2,cdots,N1,2,?,N编号。你要给它染色,使得相邻节点的颜色不同。有MM种颜色,用1,2,cdots,M1,2,?,M编号。每个节点可以染MM种颜色中的若干种,求不同染色方案的数量除以(10^9+7109+7)的... 查看详情

将列计数转换为行计数的 SQL 查询

】将列计数转换为行计数的SQL查询【英文标题】:SQLQuerytoTransposeColumnCountstoRowCounts【发布时间】:2014-09-1122:18:13【问题描述】:我有一个如下所示的表格,其中显示了类型的数量。我需要并且一直在尝试将数据显示为1列和7行,... 查看详情

将按月分组的行计数为列

】将按月分组的行计数为列【英文标题】:Countrowsgroupedbymonthsascolumns【发布时间】:2020-12-0311:26:29【问题描述】:我有以下数据(实际上跨越多年,但对于这个例子,我只包括了4个月)idcreated_atstaff--------------------------------12010-0... 查看详情

spring+Hibernate 一对多计数行

】spring+Hibernate一对多计数行【英文标题】:spring+Hibernateonetomanycountrows【发布时间】:2017-06-1100:58:50【问题描述】:我在休眠中的“发布”和“评论”实体之间存在一对多关系。一个帖子可以有多个cmets(Post)1-N(Comment),因此comment... 查看详情

奥运奖牌计数

总时间限制: 1000ms 内存限制: 65536kB描述2008年北京奥运会,A国的运动员参与了n天的决赛项目(1≤n≤17)。现在要统计一下A国所获得的金、银、铜牌数目及总奖牌数。输入输入n+1行,第1行是A国参与决赛项目的天数n,... 查看详情

奥运奖牌计数

描述2008年北京奥运会,A国的运动员参与了n天的决赛项目(1≤n≤17)。现在要统计一下A国所获得的金、银、铜牌数目及总奖牌数。输入输入n+1行,第1行是A国参与决赛项目的天数n,其后n行,每一行是该国某一天获得的金、银、... 查看详情

jvm垃圾回收机制

首先JVM的内存结构包括五大区域:程序计数器、虚拟机栈、本地方法栈、方法区、堆区。其中程序计数器、虚拟机栈和本地方法栈3个区域随线程启动与销毁,因此这几个区域的内存分配和回收都具有确定性,不需要过多考虑回收... 查看详情

奥运奖牌计数

总时间限制:1000ms内存限制:65536kB描述2008年北京奥运会,A国的运动员参与了n天的决赛项目(1≤n≤17)。现在要统计一下A国所获得的金、银、铜牌数目及总奖牌数。输入输入n+1行,第1行是A国参与决赛项目的天数n,其后n行,每一... 查看详情

XPath 计数转换的行

】XPath计数转换的行【英文标题】:XPathCountTransformedLines【发布时间】:2014-05-0209:25:41【问题描述】:我需要将填充记录附加到使用XSLT生成的文件中。需要将文件中的总行数四舍五入到最接近的10,这样如果存在以下情况:FileHead... 查看详情

spfa最短路计数

最短路计数【问题描述】  给出一个N个顶点M条边的无向无权图,顶点编号为1~N。问从顶点1开始,到其他每个点的最短路有几条。 【输入格式】 输入第一行包含2个正整数N,M,为图的顶点数与边数。接下来M行,... 查看详情

为啥 SQL 计数(*)与 SQL 计数(数字)存在行为差异

】为啥SQL计数(*)与SQL计数(数字)存在行为差异【英文标题】:WhythereisabehaviordifferenceofSQLcount(*)vsSQLcount(numeric)为什么SQL计数(*)与SQL计数(数字)存在行为差异【发布时间】:2017-05-0313:17:54【问题描述】:我知道count(*)-将返... 查看详情

pandas根据列数据的值范围计数?

假设有这么一个DataFrame数据:有两列,name列为姓名,age列为年龄,其中年龄为随机生成,如下图:我们可以使用loc来得到age>20的行:data.loc[条件]其中条件为data['age']>20即:data.loc[data['age']>20]这样就会得到age>... 查看详情

p1144最短路计数

 P1144最短路计数题目描述给出一个N个顶点M条边的无向无权图,顶点编号为1~N。问从顶点1开始,到其他每个点的最短路有几条。输入输出格式输入格式: 输入第一行包含2个正整数N,M,为图的顶点数与边数。接下来M行... 查看详情

轻松构建复杂数据集,永洪自服务数据查询功能详解

...l)通过连线的方式,联合节点可以将列数相同的表的数据(包括重复数据行)拼接在一起。举例:A表包括1日到20日的交易信息,B表包括21日到30日的交 查看详情