- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
以这种格式使用 XML:
<?xml version="1.0"?>
<GetResult version="1.0">
<Fetch>
<StartTime>2004-08-01 00:00:00</StartTime>
<EndTime>2004-08-01 00:00:00</EndTime>
</Fetch>
<Items>
<Item>
<Name>Item Name Number 1</Name>
<Data>
<Datum>
<Timestamp>2004-07-31 16:00:00+00:00</Timestamp>
<Value><![CDATA[25]]></Value>
</Datum>
<Datum>
<Timestamp>2004-07-31 18:00:00+00:00</Timestamp>
<Value><![CDATA[35]]></Value>
</Datum>
</Data>
</Item>
<Item>
<Name>Item Number 2</Name>
<Data>
<Datum>
<Timestamp>2004-07-31 16:00:00+00:00</Timestamp>
<Value><![CDATA[45]]></Value>
</Datum>
<Datum>
<Timestamp>2004-07-31 17:00:00+00:00</Timestamp>
<Value><![CDATA[55]]></Value>
</Datum>
<Datum>
<Timestamp>2004-07-31 18:00:00+00:00</Timestamp>
<Value><![CDATA[65]]></Value>
</Datum>
</Data>
</Item>
</Items>
</GetResult>
我希望能够使用 XSLT 生成这样的表格:
<table>
<tr>
<th>Timestamp</th>
<th>Item Name Number 1</th>
<th>Item Number 2</th>
</tr>
<tr>
<td>2004-07-31 16:00:00+00:00</td>
<td>25</td>
<td>45</td>
</tr>
<tr>
<td>2004-07-31 17:00:00+00:00</td>
<td></td>
<td>55</td>
</tr>
<tr>
<td>2004-07-31 18:00:00+00:00</td>
<td>35</td>
<td>65</td>
</tr>
</table>
无论返回多少项目以及每个项目下有多少基准,这都必须有效。我已经阅读了一些其他类似的答案,但没有任何运气。我对 XSLT 还很陌生,它让我抓狂。对此的解决方案将不胜感激。
最佳答案
这里有一个方法使用了相当可怕的 Muenchian Grouping 方法,如果您查看 StackOverflow 中的其他 XSLT 问题,您可能会看到它被提及,因此值得了解。在这种情况下,Muenchian Grouping 将用于循环遍历 distict Timestamp 元素。
首先,您定义一个键来查找时间戳元素
<xsl:key name="Timestamps" match="Timestamp" use="."/>
因此,如果您使用它来查找 '2004-07-31 16:00:00+00:00' 的键,它将包含两个时间戳元素,但是 '2004-07-31 17:00 :00+00:00' 将只包含一个。
要遍历不同的 Timestamp 元素,您首先要遍历所有 Timestamp 元素,就像这样
<xsl:for-each select="//Timestamp">
但是您随后需要一个 XSL:IF 条件来检查 Timestamp 元素是否是该值的第一次出现。这是通过使用 key 来完成的。如果该元素恰好在键列表中排在第一位,则可以对其进行处理。
<xsl:if test="generate-id(.) = generate-id(key('Timestamps',.)[1])">
generate-id 是当你想测试两个元素是否相同时使用的方法。把它放在一起给出:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="Timestamps" match="Timestamp" use="."/>
<xsl:template match="/">
<table>
<tr>
<th>Timestamp</th>
<!-- Output the Item headers -->
<xsl:for-each select="//Item">
<th>
<xsl:value-of select="Name"/>
</th>
</xsl:for-each>
</tr>
<!-- Loop through all Timestamps -->
<xsl:for-each select="//Timestamp">
<xsl:sort select="."/>
<!-- Only process the element if it is the first occurence of this value -->
<xsl:if test="generate-id(.) = generate-id(key('Timestamps',.)[1])">
<xsl:variable name="Timestamp" select="."/>
<tr>
<td>
<xsl:value-of select="."/>
</td>
<xsl:for-each select="//Item">
<td>
<!-- Output the relevant Value for the Item -->
<xsl:value-of select="Data/Datum[Timestamp=$Timestamp][1]/Value"/>
</td>
</xsl:for-each>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
关于xml - 使用 XSLT 转换 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2019370/
我正在尝试将一个字符串逐个字符地复制到另一个字符串中。目的不是复制整个字符串,而是复制其中的一部分(我稍后会为此做一些条件......) 但我不知道如何使用迭代器。 你能帮帮我吗? std::stri
我想将 void 指针转换为结构引用。 结构的最小示例: #include "Interface.h" class Foo { public: Foo() : mAddress((uint
这有点烦人:我有一个 div,它从窗口的左上角开始过渡,即使它位于文档的其他任何位置。我试过 usign -webkit-transform-origin 但没有成功,也许我用错了。有人可以帮助我吗?
假设,如果将 CSS3 转换/转换/动画分配给 DOM 元素,我是否可以检测到该过程的状态? 我想这样做的原因是因为我正在寻找类似过渡链的东西,例如,在前一个过渡之后运行一个过渡。 最佳答案 我在 h
最近我遇到了“不稳定”屏幕,这很可能是由 CSS 转换引起的。事实上,它只发生在 Chrome 浏览器 上(可能还有 Safari,因为一些人也报告了它)。知道如何让它看起来光滑吗?此外,您可能会注意
我正在开发一个简单的 slider ,它使用 CSS 过渡来为幻灯片设置动画。我用一些基本样式和一些 javascript 创建了一支笔 here .注意:由于 Codepen 使用 Prefixfr
我正在使用以下代码返回 IList: public IList FindCodesByCountry(string country) { var query =
如何设计像这样的操作: 计算 转化 翻译 例如:从“EUR”转换为“CNY”金额“100”。 这是 /convert?from=EUR&to=CNY&amount=100 RESTful 吗? 最佳答
我使用 jquery 组合了一个图像滚动器,如下所示 function rotateImages(whichHolder, start) { var images = $('#' +which
如何使用 CSS (-moz-transform) 更改一个如下所示的 div: 最佳答案 你可以看看Mozilla Developer Center .甚至还有例子。 但是,在我看来,您的具体示例不
我需要帮助我正在尝试在选中和未选中的汉堡菜单上实现动画。我能够为菜单设置动画,但我不知道如何在转换为 0 时为左菜单动画设置动画 &__menu { transform: translateX(
我正在为字典格式之间的转换而苦苦挣扎:我正在尝试将下面的项目数组转换为下面的结果数组。本质上是通过在项目第一个元素中查找重复项,然后仅在第一个参数不同时才将文件添加到结果集中。 var items:[
如果我有两个定义相同的结构,那么在它们之间进行转换的最佳方式是什么? struct A { int i; float f; }; struct B { int i; float f; }; void
我编写了一个 javascript 代码,可以将视口(viewport)从一个链接滑动到另一个链接。基本上一切正常,你怎么能在那里看到http://jsfiddle.net/DruwJ/8/ 我现在的
我需要将文件上传到 meteor ,对其进行一些图像处理(必要时进行图像转换,从图像生成缩略图),然后将其存储在外部图像存储服务器(s3)中。这应该尽可能快。 您对 nodejs 图像处理库有什么建议
刚开始接触KDB+,有一些问题很难从Q for Mortals中得到。 说,这里 http://code.kx.com/wiki/JB:QforMortals2/casting_and_enumera
我在这里的一个项目中使用 JSF 1.2 和 IceFaces 1.8。 我有一个页面,它基本上是一大堆浮点数字段的大编辑网格。这是通过 inputText 实现的页面上的字段指向具有原始值的值对象
ScnMatrix4 是一个 4x4 矩阵。我的问题是什么矩阵行对应于位置(ScnVector3),旋转(ScnVector4),比例(ScnVector3)。第 4 行是空的吗? 编辑: 我玩弄了
恐怕我是 Scala 新手: 我正在尝试根据一些简单的逻辑将 Map 转换为新 Map: val postVals = Map("test" -> "testing1", "test2" -> "te
输入: This is sample 1 This is sample 2 输出: ~COLOR~[Green]This is sample 1~COLOR~[Red]This is sam
我是一名优秀的程序员,十分优秀!