XSLT 有数组的概念吗?

2024-02-26

我以前从未真正使用过 XSLT,正在寻求一些建议。

我从 GSA 箱中以 XML 形式返回了以下项目:

<MT N="searchCategories" V="Category 1"/>
<MT N="searchCategories" V="Category 2"/>
etc etc

这些类别可以有任意数量。

我只是想知道 XSLT 是否有数组的概念?

If so:

  • 我怎样才能将上面的所有节点枚举到一个数组中?
  • 我如何获得数组的长度?

If not:

  • 有什么解决办法吗?

我相信我正在使用 XSLT 版本 1.0


正如 @Michael Kay 所解释的,XPath 1.0 和 XPath 2.0 的 XPath 数据模型 (XDM) 都不支持数组数据结构。

但是,可以使用类似数组的语法,如下所示:

在 XPath 1.0/2.0 中,可以定义一个变量来包含一组特定的节点并且可以通过它们的位置(按文档顺序)访问它们,并在谓词中指定该位置。

这是一个例子:

<xsl:variable name="vTransfers" select="/*/transfer"/>

定义了一个名为的变量vTransfers值为所有的节点集transfer每个元素都是 XML 文档顶部元素的子元素。

Then:

$vTransfers[1]

选择包含在的第一个元素$vTransfers.

$vTransfers[2]

选择包含在的第二个元素$vTransfers, ...

$vTransfers[position() = $k]

从中选择节点$vTransfers按文档顺序,其位置等于变量中包含的值$k.

此外,XPath 2.0 支持以下概念: 序列。序列就像一个项目列表。项目可以是任何类型——不仅仅是节点。序列中的项目按照它们在序列中出现(定义)的方式排序。如果序列中的两个项目是节点,则它们的顺序仍然是序列中定义的顺序,这可能与它们的文档顺序不同。

Example:

<xsl:variable name="vNumList" as="xs:integer*" select="3, 5, 7"/>

然后当像这样引用时:

$vNumlist[2]

产生:

5

Remember:虽然这些合成结构类似于从数组中选择一个项目,但节点集和序列是not数组。特别是,它们通常缺乏数组对其元素的快速访问 O(1)。在节点集和序列的情况下,访问随机位置的项目的效率通常为 O(N)。这意味着使用数组时为 O(N) 的算法,在使用具有节点集或序列的类似数组表示法时可能为 O(N^2)。

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

XSLT 有数组的概念吗? 的相关文章

  • WYSIWYG XML 编辑器(基于 DTD 或 RelaxNG 或 XSD 的语法)[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我需要为自定义 XML 语法创建一个
  • 何时使用包含引用类型的值类型数组而不是引用类型数组?

    假设我有以下内容 public class MyElement Serializable StructLayout LayoutKind Sequential struct ArrayElement internal MyElement E
  • C 为数组元素赋值时下标值既不是数组也不是指针也不是向量

    抱歉问已经回答的问题 我是 C 的新手 不明白解决方案 这是我的功能 int rotateArr int arr int D 4 4 int i 0 n 0 for i i lt M i for n n lt N n D i n arr n
  • Laravel 集合到数组

    我有两个模型 Post and Comment 许多评论属于一个帖子 我正在尝试以数组形式访问与帖子相关的所有评论 我有以下内容 它提供了一个集合 comments collection post gt comments gt get 我该
  • 如何在 JavaScript 中将数组拆分为数组对?

    我想将一个数组拆分为数组对 var arr 2 3 4 5 6 4 3 5 5 would be var newarr 2 3 4 5 6 4 3 5 5 你可以使用jsreduce https developer mozilla org
  • 没有找到合适的写入方法

    我正在尝试将先前创建的数组写入文件 这是我遇到的错误 我不知道如何修复它 Zoo java 341 error no suitable method found for write Animals outputWriter write an
  • Oracle存储过程使用数组作为表插入的参数

    我一直在寻找一个明显的例子 但没有运气 抱歉 如果已经回答了 我正在尝试做一些非常简单的事情 一个存储过程 它将获取输入并将它们插入到表中 我希望它获取多行数组并一次全部插入 我认为这很简单 但我还没有找到一个可以展示我的例子 在很多例子中
  • 如何计算数组中相同的值并将其存储到变量中?

    items explode product values is 4 2 4 2 2 4 unique items array unique items gives me 4 2 接下来应该给我 4 3 2 3 并将值的数量存储到变量中的代码
  • 字符串插值搜索

    对于那些不熟悉插值搜索的人来说 这是一种在排序数组中搜索值的方法 可能比二分搜索更快 您查看第一个和最后一个元素 并 假设数组的内容均匀分布 线性插值以预测位置 例如 我们有一个长度为 100 的数组 其中 array 0 0 和 arra
  • 获取嵌套数组 JS 中对象的所有父对象

    我在使用 vuejs 的项目上遇到问题 我有一个像这样的嵌套对象数组 Data data id 1 parent id null title First folder children id 3 parent id 1 title Firs
  • 匹配数组中的对象并合并

    UPDATE 我有一个名为的对象数组cars包含 li 标签 其中包含有关汽车的属性数据 例如价格 汽车类型等 我的目标是 如果这些汽车符合某些标准 则将它们合并到一个列表中 要求 快速性能 保持相同的汽车数组结构 Main Goal Ma
  • 如果多个键是相同的 JS,则对对象中的值求和

    例如我有 5 个对象 row aa col 1 value 1 row bb col 2 value 1 row bb col 3 value 1 row aa col 1 value 1 row aa col 2 value 1 我想对值
  • 通过 XSL 查看 XML 到 XHTML 转换中的源代码

    我正在尝试使用 XSL 文件将 XML 文件转换为 XHTML 文件 如何查看转换后输出的XHTML源代码 我目前正在通过 Firefox 查看结果 但我看到的只是 XHTML 文件的渲染版本 我想查看源代码 但是当我转到 查看 gt 页面
  • 如何复制 ArrayIterator 以保留其当前迭代位置?

    因为这似乎是我必须做的才能达到这种效果 arr a gt first b gt second iter new ArrayIterator arr Do a bunch of iterations iter gt next new iter
  • Fortran 指针数组

    同样 Fortran 中的指针数组 好吧 我有一个派生类型 type t context pointer type t context pointer p ctx end type t context pointer 当我在主程序中执行以下
  • 将 Javascript 对象的属性从 string 更改为 int

    我有一个对象数组 每个对象具有三个属性 年份 总计 人均 例子 0 Object per capita 125 8 total 1007 2 year 2009 这些属性是字符串 我想创建一个循环来遍历数组并将它们转换为 int 我尝试了以
  • 将 UUID 存储为 base64 字符串

    我一直在尝试使用 UUID 作为数据库键 我希望占用尽可能少的字节数 同时仍然保持 UUID 表示形式的可读性 我认为我已经使用 base64 将其减少到 22 个字节 并删除了一些尾随的 这些 对于我的目的来说似乎没有必要存储 这种方法有
  • 如何计算伽罗瓦域上的numpy数组?

    我想在伽罗华域 GF4 上使用 numpy 数组 所以 我将 GF4 类设置为数组元素 它适用于数组 整数计算 但不适用于数组 数组计算 import numpy class GF4 object class for galois fiel
  • 如何获得n个具有不同元素数量的数组的所有可能组合?

    我有一些在编程时未知的数组数量 也许是 3 或 4 或 7 每个数组都有一些元素 即 a 1 2 3 4 b 6 7 5 2 1 c 22 4 6 8 4 8 5 4 d e f g 我想通过从每个数组中采样一个数字来获得所有可能的组合 例
  • 按第一列排序二维数组,然后按第二列排序

    int arrs 1 100 11 22 1 11 2 12 Arrays sort arrs a b gt a 0 b 0 上面的数组已排序为 1 100 1 11 2 12 11 22 我希望它们按以下方式排序a 0 b 0 首先 如果

随机推荐

  • 当我的 main.c 不使用 pthreads 时,为什么我必须在 main.c 编译中显式链接到 pthreads?

    在 Linux 中 我制作了一个使用 pthread 的共享库和一个不使用 pthread 的 main c libpthread so 显示在我的共享库的 ldd 中 这是正确的 ldd libmapreduce so 1 0 linux
  • 为什么可以在主线程上运行 Kotlin 协程?

    我无法理解why 这段代码 https medium com trionkidnapper launching a kotlin coroutine for immediate execution on the main thread 85
  • 卡坦岛地图的数据结构? [复制]

    这个问题在这里已经有答案了 不久前 有人问我是否知道一种对卡坦岛游戏的信息进行编码的好方法 这需要以每个六角形都可以有与其关联的数据的方式存储六角形网格 但更重要的是 我需要某种方法来有效地查找这些六边形侧面的顶点和边 因为这就是所有动作的
  • 如何允许用户移动表单上的控件

    我有一个 winform 我想允许用户在其上移动控件 该控件 目前 是一条垂直线 带有边框且宽度为 1 的标签 上下文不是很重要 但无论如何我都会给你 我有一个带有一些图形的背景 我希望用户能够在图形上方滑动指导线 图形是用 Nplots
  • 区块链为何如此安全? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 昨天我读到一篇关于区块链的文章 根据它 区块链非常安全 我无法理解它如何安全 区块链如何确保数据安全 即使普通人也可以使用 saura
  • 将 IVSHMEM 与 libvirt virt-manager 结合使用

    Using ivshmem in qemu需要执行以下步骤 在主机中启动 ivshmem 服务器 ivshmem server这将创建一个unix域套接字 tmp ivshmem socket 使用以下命令行选项启动 qemu charde
  • 为什么 newList = list.remove(x) 返回 None ? [复制]

    这个问题在这里已经有答案了 我在下面有一个列表 我想删除一个值并将其设置为一个新变量 为什么它返回无 aList 1 2 3 4 5 newList aList remove 1 print newList prints None 但当我这
  • 返回对一个结构体部分的引用作为另一个结构体的字段[重复]

    这个问题在这里已经有答案了 如果可能的话 我希望将一个结构移动到另一个结构中 并获取第一个结构的部分作为其他结构的部分的引用 而无需克隆或复制 如何以正确的方式去做 fn main let foo Foo new let bar Bar n
  • 未将对象引用设置为 MVC 文件(图像)上传的对象实例[重复]

    这个问题在这里已经有答案了 我是 MVC 新手 我正在遵循教程并收到此错误 我按照教程中的每个步骤进行操作 但仍然遇到相同的错误 这是我的观点的代码 model 234CrudDemo Models ComplaintTicket div
  • 具有自定义频率和持续时间的蜂鸣声

    我想在 Mac Os X 中播放蜂鸣声并指定持续时间和频率 在 Windows 上 可以通过使用来完成蜂鸣功能 http msdn microsoft com en us library windows desktop ms679277 2
  • 如何重写 Django 管理列表中的 queryset count() 方法

    为了避免耗时且昂贵的精确数据库计数查询 我想覆盖count Django 管理类中的方法如下所示 from django contrib import admin from django db import connection class
  • 前端与后端端点(spring boot 和 vuejs)

    某种程度上基于本指南 https jaxlondon com blog java core languages put spring boot und vue js practical use project tutorial https
  • BLE扫描记录说明

    我正在尝试获取UUID Major Minor IDs从以以下形式收到的 BLE 广告中byte 我已经使用了建议的代码here https stackoverflow com questions 22016224 ble obtain u
  • Ruby:如何使用 Curb 发送 JSON POST 请求?

    如何将 CURB 请求的请求正文设置为我的 json 字符串 我正在尝试使用 Curb 执行 JSON POST 请求 My code require rubygems require curb require json myarray m
  • Node.js mongodb 设置默认安全变量

    我正在尝试在本地运行 Node js 脚本 但它给了我以下错误消息 Please ensure that you set the default safe variable to one of the allowed values of t
  • 从一个 Activity 更新存储在另一个 Activity 中的对象

    我正在第一个活动中创建一个名为 AppEngine 的对象 此 AppEngine 对象存储事件的数组列表 并以其中的 2 个事件开始 从第一个活动中 我单击一个按钮 该按钮将我带到第二个活动 在其中我通过使用将事件对象添加到 arrayL
  • Openwhisk:增加并发请求数

    我有一个分布式 Openwhisk 设置 当我尝试一次向一个用户执行 30 多个请求时 出现以下错误 错误 无法调用操作 素数 并发数太多 正在处理的请求 计数 30 允许 30 知道如何增加这个数字吗 如果您使用 ansible 方法部署
  • 计算机图形学:光线追踪和 3D 渲染编程

    我注意到许多顶尖大学都为计算机专业的学生提供与计算机图形学相关的课程 遗憾的是 这是我的大学没有提供的东西 也是我非常想在未来几年内进入的东西 我从一些大学发现的一些项目都很棒 尽管我最感兴趣的是两件事 Raytracing 我想在未来两年
  • google chrome实现了哪个版本的websockets协议草案

    我正在尝试在 java 中实现 websockets 服务器 但我无法理解 google chrome 实现的 websocket 协议版本 在this http blog chromium org search label websock
  • XSLT 有数组的概念吗?

    我以前从未真正使用过 XSLT 正在寻求一些建议 我从 GSA 箱中以 XML 形式返回了以下项目