Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

Xslt转换
EN

Stack Overflow用户
提问于 2011-07-07 09:30:34
回答 3查看 359关注 0票数 2

我将使用XSLT转换将第一个XML转换为第二个XML

首先:

代码语言:javascript
运行
AI代码解释
复制
<Data> 
 <Time> 
  <ID>IDvalue1</ID> 
  <field1>PropertyValue1</field1> 
  <field2>PropertyName1</field2> 
 </Time> 
 <Time>
  <ID>IDvalue2</ID> 
  <field1>PropertyValue2</field1> 
  <field2>PropertyName1</field2> 
 </Time>
 <Time> 
  <ID>IDvalue1</ID> 
  <field1>PropertyValue3</field1> 
  <field2> PropertyName2</field2> 
 </Time> 
 <Time> 
  <ID>IDvalue2</ID> 
  <field1>PropertyValue4</field1> 
  <field2>PropertyName2</field2> 
 </Time>
</Data>
....

第二:

代码语言:javascript
运行
AI代码解释
复制
<Data> 
 <Time> 
  <ID>IDvalue1</ID> 
  <PropertyName1>PropertyValue1</PropertyName1> 
  <PropertyName2>PropertyValue3</PropertyName2> 
 </Time> 
 <Time> 
  <ID>IDvalue2</ID> 
  <PropertyName1>PropertyValue2</ PropertyName1> 
  <PropertyName2>PropertyValue4</PropertyName2> 
 </Time> 
</Data>
.....

在第一个XML中,有许多ID节点具有相同的值。在第二个XML中,它们被编译成单个节点。在第一个XML中,每个ID后面都有field1和field2节点。在第二个XML中,必须创建新节点,其中field2是标记名,field1是值。这些新节点是从具有相同值的所有ID节点中收集的。

你能帮我写XSLT代码吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-07 10:08:24

使用此模板:

代码语言:javascript
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
  <xsl:output method="xml" indent="yes"/>

  <xsl:key name="k" match="Time" use="ID"/>

  <xsl:template match="Data">
    <Data>
      <xsl:apply-templates select="Time[generate-id(.) = generate-id(key('k', ID))]"/>
    </Data>
  </xsl:template>

  <xsl:template match="Time">
    <Time>
      <xsl:copy-of select="ID"/>
      <xsl:for-each select="key('k', ID)">
        <xsl:element name="{normalize-space(field2)}">
          <xsl:value-of select="field1"/>
        </xsl:element>
      </xsl:for-each> 
    </Time>
  </xsl:template>

</xsl:stylesheet>

输出:

代码语言:javascript
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<Data>
  <Time>
    <ID>IDvalue1</ID>
    <PropertyName1>PropertyValue1</PropertyName1>
    <PropertyName2>PropertyValue3</PropertyName2>
  </Time>
  <Time>
    <ID>IDvalue2</ID>
    <PropertyName1>PropertyValue2</PropertyName1>
    <PropertyName2>PropertyValue4</PropertyName2>
  </Time>
</Data>
票数 2
EN

Stack Overflow用户

发布于 2011-07-07 12:14:33

这是一个标准的分组问题。如果您搜索"XSLT grouping“,您会发现大量的帮助。在XSLT 2.0中,使用xsl:for-each-group指令进行分组非常容易,但在XSLT 1.0中却非常棘手,polishchuk已经演示过。(就我个人而言,在不知道使用哪个版本的XSLT及其原因的情况下,我甚至不会尝试回答分组问题--这两种情况下的代码非常不同。)

票数 2
EN

Stack Overflow用户

发布于 2011-07-07 22:25:21

微软的.NET框架还不支持XSLT2.0。但是,如果你打算从ASP .NET中使用XSLT,你可以很容易地实现(@Michael Key) Saxon。有关详细信息,请参阅this topic

当你准备好了,你的分组解决方案将会非常简单。下面是针对您的问题应用的XSLT 2.0分组示例:

代码语言:javascript
运行
AI代码解释
复制
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes"/>

    <xsl:template match="Data">
        <Data>
            <xsl:for-each-group select="Time" group-by="ID">
                <Time>
                    <xsl:copy-of select="ID"/>
                    <xsl:apply-templates select="current-group()"/>
                </Time>
            </xsl:for-each-group>
        </Data>
    </xsl:template>

    <xsl:template match="Time">
        <xsl:element name="{field2}">
            <xsl:value-of select="field1"/>
        </xsl:element>
    </xsl:template>

</xsl:stylesheet>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6608483

复制
相关文章
Spark Scala当中reduceByKey(_+_) reduceByKey((x,y) => x+y)的用法
reduceByKey(_+_)是reduceByKey((x,y) => x+y)的一个 简洁的形式 */ val rdd08 = sc.parallelize(List((1, 1), (1, 4),(1, 3), (3, 7), (3, 5))) val rdd08_1 = rdd08.reduceByKey((x, y) => x + y) println("reduceByKey 用法 " + rdd08_1.collect().mkString(",")) sc.stop() } def myunion(rdd05: RDD[Int], rdd06: RDD[Int]): Unit = { val res: RDD[Int] = rdd05.union(rdd06)
马克java社区
2019/07/20
1.9K0
Spark Scala当中reduceByKey(_+_) reduceByKey((x,y) => x+y)的用法
求z=x-y的概率密度_X和Y独立同分布
总结过一次,一般方法是可以由分布函数再求导得到概率密度,计算一定更要小心才能得到正确的解。
全栈程序员站长
2022/11/02
1.7K0
求z=x-y的概率密度_X和Y独立同分布
R语言建模入门:如何理解formula中y~.和y~x:z的含义?
背景:2019年的某月末日,三路人开局,兴趣所致组建了“花儿少年”:一个有组织、有纪律的R语言入门交流学习组织。自此,开启了一段小白&大师的成长史。
拴小林
2020/07/10
8.2K0
X电容与Y电容
X电容和Y电容统称为安规电容,安规电容即经过安全认证的电容,经过国家权威机构检验测试通过的交流电容,产品有各国认证标志。失效后,不会导致电击,不危及人身安全。
徐师兄
2022/08/29
1.1K0
X电容与Y电容
为python(x,y)安装python
为了给我的python(x,y) 2.7.10安装xlwt包,在windows的命令行界面执行如下命令即可:
py3study
2020/01/08
8430
为python(x,y)安装python
前任de密码:(x^2+y^2-1)^3+x^2*y^3
正要下班,前任发来一串代码。按照一贯的尿性来看,这应该是TMD发错了。但鉴于今天日期特殊,仔细思考了一下好像不太对。
xjjdog
2021/05/27
4830
递归的练习1:求x的y次方
#include<iostream> using namespace std; //递归案例:计算x的y次方 //x:底数 y:次方 int test(int x, unsigned int y) { if (y == 0) { return 1; } //递归结束条件 if (y == 1) { return x; } return x*test(x, y-1); } int main() { cout << test(2,3) << endl; system("paus
大忽悠爱学习
2021/03/07
9700
C语言:定义一个计算两个整数的和的函数int sum(int a,int b),在主函数中输入两个整数x和y,调用sum(x,y)输出x+y的和。
最近也没学python,倒是忙着写起了C语言作业,我也分享一下我的作业吧,希望对大家有用。 我就不想分析了,直接上代码好吗?有问题留言好吧。 关注我,我是川川,计算机大二菜鸟,有问题可以找我,一起交流。QQ:2835809579
川川菜鸟
2021/10/18
5.2K0
求延长线坐标 已知 点1的(x1,y1) 点2的(x2,y2) 求点3的x3求y3或者 点3的y3求x3
求延长线坐标 已知 点1的(x1,y1) 点2的(x2,y2) 求点3的x3求y3或者 点3的y3求x3
不要方要圆
2023/03/16
8220
Skill语言实现将一个table中的坐标point(x,y)按照x和y进行从小到大排序的函数
/***************** 对table中的point进行排序,按照type值将x或者y从小到大排 *******************/ defun(TableSort (table type) table_len=length(table) let((sortedTable) sortedTable=makeTable("table") for(i 0 table_len-1 sortedTable[i]=table[i] ) for(i 0 table_len-2
黑马Amos
2023/03/21
8030
2022-06-29:x = { a, b, c, d },y = { e, f, g, h },x、y两个小数组长度都是4。如
[左神java代码](https://github.com/algorithmzuo/weekly-problems/blob/main/src/class_2022_04_2_week/Code06_PerfectPairNumber.java)
福大大架构师每日一题
2023/06/08
2450
2022-06-29:x = { a, b, c, d },y = { e, f, g, h },x、y两个小数组长度都是4。如
条件分布_Y关于X的条件分布律
给定另一随机变量Y的随机变量X的条件分布是当观察到Y取某一值时X的分布。 虽然涉及精确的数学定义,但对于离散和连续变量,它等于将X和Y的联合PDF或PMF除以Y的PDF或PMF。
全栈程序员站长
2022/09/20
7210
Echarts折线图的x和y轴坐标颜色修改
继续对Echarts的属性进行探索,关于如何修改Echarts的x和y轴坐标颜色的问题,继续看,主要修改代码的地方:
王小婷
2019/08/20
7K0
gmap构建离线地图,用createCustomerTiledLayer方法,瓦片地址尾部多了 ?x={x}&y={y}&z&{
gmap构建离线地图,用createCustomerTiledLayer方法,瓦片地址尾部多了 ?x={x}&y={y}&z&{z} 导致无法显示地图。 function initMap(
福大大架构师每日一题
2023/07/09
3390
gmap构建离线地图,用createCustomerTiledLayer方法,瓦片地址尾部多了 ?x={x}&y={y}&z&{
从Y = X到构建完整的人工神经网络
在某些时候,你也许曾问过自己,人工神经网络的参数的来源是什么?权重的目的是什么?如果不用偏差(bias)会怎样?
AI研习社
2019/07/15
5190
从Y = X到构建完整的人工神经网络
「R」ggplot2 修改x和y轴刻度
这个R tutorial描述如何使用ggplot2包修改x和y轴刻度。同样,该文包含如何执行轴转换(对数化,开方等)和日期转换。
王诗翔呀
2020/07/02
9.9K0
「R」ggplot2 修改x和y轴刻度
17*x^2-16*abs(x)*y+17*y^2-225=0公式画爱心。
1、点击[命令行窗口] 2、按<Enter>键
裴来凡
2022/05/28
5830
17*x^2-16*abs(x)*y+17*y^2-225=0公式画爱心。
matlab绘制figure的x y轴特殊标签数据
做数据分析的Matlab用户最常见的问题之一是如何在日期轴上绘制数据。很多时候,分析师最初会使用Excel处理数据,然后用相应的工具去处理数据,分析数据。Excel有一种在日期轴上绘制数据的简单方法,但在Matlab中使用日期轴需要麻烦一点。但matlab针对这种特殊情况也有对应的一些函数,使用Matlab完成这项任务并不难,而且和大多数Matlab函数一样,它具有相当大的通用性。
用户9925864
2022/12/16
3.1K0
matlab绘制figure的x y轴特殊标签数据
sum(x) over( partition by y ORDER BY z ) 分析
1. 从最简单的开始   sum(...) over( ),对所有行求和   sum(...) over( order by ... ),和 = 第一行 到 与当前行同序号行的最后一行的所有值求和,文字不太好理解,请看下图的算法解析。 with aa as( SELECT 1 a,1 b, 3 c FROM dual unionSELECT 2 a,2 b, 3 c FROM dual unionSELECT 3 a,3 b, 3 c FROM dual unionSELECT 4 a,4 b, 3 c
java达人
2018/01/31
1.2K0
sum(x) over( partition by y ORDER BY z ) 分析
开发 | 从Y = X到构建完整的人工神经网络
在某些时候,你也许曾问过自己,人工神经网络的参数的来源是什么?权重的目的是什么?如果不用偏差(bias)会怎样?
AI科技评论
2019/07/12
5510
开发 | 从Y = X到构建完整的人工神经网络

相似问题

R:‘xy.coords(x,y)中的错误:'x’和'y‘长度不同

11

Xy.coords中的错误(x,y,xlabel,ylabel,log):'x‘和'y’长度不同

12

如何解决这个绘图错误(在xy.coords(x,y,x标签,y标签,日志中的错误):'x‘和'y’长度不同)?

10

xy.coords(x,y,xlabel,ylabel,log)中出错:'x‘和'y’长度不同

20

R: xy.coords(x,y,xlabel,ylabel,log)出错:'x‘和'y’长度不同

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档