xslt - 对序列的字符串操作
问题描述
我有一个包含一系列图像及其宽度的 XML:
<p>
<image width="10cm"/>
<image width="3cm"/>
</p>
我需要计算这些图像的总宽度。当我只有一张图片时,这很简单:
<template match="p">
<xsl:variable name="imgwidth">
<xsl:value-of select="number(substring-before(image/@width,'cm'))"/>
天真地,我尝试扩展它以容纳更多图像:
<xsl:value-of select="sum(number(substring-before(image/@width,'cm')))"/>
当我在我的示例上运行它时,我收到一条错误消息:
fn:substring-before() ("10cm", "3cm") 的第一个参数不允许包含多个项目的序列
我已经进行了一些搜索,但无法弄清楚如何在我的<p>
.
解决方案
在 XSLT 2.0 中,您可以这样编写...
<xsl:value-of select="sum(image/number(substring-before(@width,'cm')))"/>
或者,也许这...
<xsl:value-of select="sum(for $i in image return number(substring-before($i/@width, 'cm')))"/>
推荐阅读
- arrays - 在 C 中使用第一个数组元素作为数组长度是一种好的编程习惯吗?
- javascript - 将角度服务返回类字段作为可观察的
- flutter - 相当于 Dart 中 Swift 的 if let 和 guard let
- c# - Cosmos DB 序列化问题引发错误,将 Int 读取为 Double
- css - 如何在 CSS 中并排设置背景图像
- powershell - 如何让脚本通过 Powershell 为所选目录中的所有子文件夹运行?
- java - 反射性地基于静态类生成可实例化的类
- html - Outlook 中的文本添加了额外的间距/填充或行高问题
- powershell - 如何同时激活 Anaconda 环境和 Typescript 观察者?
- java - 如何在 CMD 中分离 Java 程序的输出?