XSLT 1.0 三元 if 的惯用语?

2023-11-22

该 Java 程序使用三元 if 将布尔值映射到输出字符串:(“*”表示 true,空字符串表示 false)。

public class ternary {
  public static void main(String[] args) {
    boolean flags[]={true,false,true};
    for (boolean f : flags) {
      System.out.println(f?"*":"");
    }
  }
}

所以输出是*,[空],*。

我有一个输入 XML 文档,类似于:

<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" href="change.xsl"?>
<root>
  <change flag="true"/>
  <change flag="false"/>
  <change flag="true"/>
</root>

我有以下 XSLT 模板,它将 true 映射到“*”,将 false 映射到“”(它有效):

<xsl:template match="change">
  <xsl:variable name="flag" select="translate(substring(@flag,1,1),'tf','*')"/>
  <xsl:value-of select="$flag"/>
</xsl:template>

有更简洁的版本吗?

a) 我可以直接从字符串 'true|false' 自动获取布尔值 true|false 吗? b) 是否有一个 (xpath?) 构造将布尔值 true|false 映射到 '*', '' ?


a) 我可以直接从自动获取布尔值 true|false 字符串“真|假”?

b) 是否有一个 (xpath?) 构造将布尔值 true|false 映射到 '*', '' ?

这实际上是一个XPath问题.

一、XPath 1.0

有多个 XPath 表达式,其计算会产生所需的结果:

substring('*', 2 -(@flag = 'true'))

这也回答了 b)——注意strings 'true' and 'false'不是布尔值!仅有的两个布尔值是true() and false()而且它们不是字符串。

在上面的表达式中,我们使用了这样一个事实:在 XPath 1.0 中,如果布尔值位于需要数字的上下文中,它会自动转换为数字。根据定义:

number(true()) is 1

and

number(false()) is 0

因此调用的第二个参数substring() above:

2 - (@flag = 'true')

被评估为1 when @flag = 'true' and to 2否则。

生成字符串的更通用的 XPath 1.0 表达式$s1 if $val is "x"并产生字符串$s2 if $val is "y" :

concat(substring($s1, 1 div ($val = "x")),
       substring($s2, 1 div ($val = "y"))
      )

这会产生字符串$s1 when $val = "x", 字符串$s2 when $val = "y",以及空字符串——如果这两个条件都不成立。

上面的 XPath 1.0 表达式可以概括为产生 N 个不同的字符串结果$s1, $2, ..., $sN恰好在什么时候$val是值之一$v1, $v2, ..., $vN因为函数concat()可以有任意数量的参数。


二. XPath 2.0 (XSLT 2.0)

'*'[current()/@flag = 'true']

更一般地说,给定 2*N 个原子值$s1, $s2, ... $sN and $v1, $v2, ..., $vN,这样所有的$vi值不同,计算此 XPath 2.0 表达式的结果:

 ($s1, $s2, ..., $sN)[index-of(($v1, $v2, ..., $vN), $v)]

is $sK恰好在什么时候$v eq $vK.

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

XSLT 1.0 三元 if 的惯用语? 的相关文章

  • 由于命名空间“xmlns”,无法使用 XSLT 转换 XML

    我一直在尝试使用 XSLT 转换 XML 文件 但由于一些问题 即 xmlns 它没有转换 我 一辈子都找不到问题所在 XML 文件
  • WiX - 根据环境将编译后的 web.config 复制到网站根目录

    作为 WiX 安装的一部分 我将所有转换 编译的 web config 文件复制到安装目录 编译后的 web config 的名称格式为 web ENV config 在我的安装 UI 中 我创建了一个自定义对话框 在其中解析 ENV 并填
  • Excel - 使用 FILTERXML 从字符串中提取子字符串

    Background 最近 我一直在尝试更熟悉将分隔字符串更改为 XML 以使用 Excel 进行解析的概念FILTERXML https support microsoft com en us office filterxml funct
  • 使用 XSLT 向上移动节点

    我已经做了很多搜索 但我无法弄清楚如何准确地使用模板 我的输入数据称为 DEBTORS xml
  • 使用 XSLT(即 XML Transformer)时防止 DTD 下载

    我必须在 Java 中处理具有 DTD 和 XSLT 的 XML 文件 DTD 确实是必要的 因为它包含我使用的实体的定义 旁白 是的 将实体用于可以使用 unicode 的东西是一个坏主意 当我运行转换时 它每次都会从外部源下载 DTD
  • 如何从 .Net 中的许多 HTML 文件中读取 xpath 值?

    我的一个文件夹中有大约 5000 个 html 文件 我需要循环遍历它们 打开 使用 xpath 获取 10 个值 关闭并存储在 SQL Server 数据库中 使用 Net 读取 xpath 值的最简单方法是什么 xpath 应该相当稳定
  • xpath 的多个 string() 结果?

    string 在我试图从中提取文本的某个网页上效果很好 具有类似的结构 对于 bing 我尝试过的 xpath 是 string h3 a 即使有强标签等 它也能很好地获取搜索结果 但只返回第一个结果 有没有类似 strings 的东西 这
  • XSLT,查找最后一个子节点是否是特定元素

    看下面两个例子
  • 确定范围是否重叠

    给定两个具有整数开始时间和结束时间的事件 E1 s1 e1 E2 s2 e2 实现快速布尔检查以查看事件是否重叠 我有解决方案 但我很想看看其他人想出了什么 编辑 好的 这是我的解决方案 e1 gt s2 s1 gt s2 e2 lt s1
  • 在Python中解析Google Earth KML文件(lxml,命名空间)

    我正在尝试解析 kml https developers google com kml documentation 使用 xml 模块将文件导入到 Python 中 在 BeautifulSoup 中未能实现此功能 我将其用于 HTML 由
  • 使用 XSLT 从文本文件中删除第一行

    我正在使用一个生成文本文件的系统 Maximo 我需要删除文件的第一行 做到这一点的方法应该是使用 XSLT 任何想法 是的 您可以在 XSLT 中完成您想要的事情 如果您可以选择的话 在 XSLT 2 0 中这样做可能会更容易 Micha
  • XSLT 中是否有一种包含一次?

    I have FileA FileB and FileC FileA包括FileB and FileC FileC包括FileB XSLT 1 0 中是否有一种一次性包含功能 如果你使用
  • 我们可以在三元运算符(Java)中使用命令吗?

    这是一个工作代码 String a first String b second String object System out println object null a b 但它不是 String a first String b se
  • 在 XSL 中测试 xs:decimal 的正确方法是什么?

    我试图根据传入的数据显示不同的信息 如果它是整数 我想只显示数字 如果它是小数 我想使用 0 00 模式 是的 我知道 有点混乱 但这就是开发规范 gt 对于这个特定部分 我有以下 XSL 但我无法看到 xsl when 错误消息 预期的表
  • 如何在 xslt 2.0 中解析字符串到日期

    是否可以像这样转换字符串30042013 2013 年 4 月 30 日 日期格式 所以我可以稍后在类似的函数中使用它format date 就像托马拉克说的 你可以使用substring and concat 要构建一个字符串 您可以将其
  • Arduino 高低

    我有一个 Arduino 我想知道到底是什么HIGH and LOW意思是 就实际值而言 它们是否有符号ints unsigned ints unsigned char是 他们的价值观是什么 我猜HIGH and LOW可能是unsigne
  • 如何去除 XSL 中字符的重音符号?

    我一直在寻找 但找不到相当于字符 规范化空间 的 XSL 函数 也就是说 我的内容带有重音 UNICODE 字符 这很好 但是从该内容中 我正在创建一个文件名 但我不想要这些重音 那么 是否有一些我忽略的东西 或者没有正确地谷歌搜索来轻松处
  • 在 x86 程序集中存储大量布尔值的最佳方法是什么?

    最近我一直在处理充满布尔值的大型数组 目前 我将它们存储在 bss部分有一个 space指令 它允许我创建字节数组 但是 由于我只需要存储布尔值 因此我希望从数组中逐位读取和写入数据 目前 我能想到的最好方法是有一个 space指令所需存储
  • XPath JMeter 断言:错误“前缀必须解析为命名空间”

    我正在尝试使用JMeter XPath 断言 https jmeter apache org usermanual component reference html XPath Assertion使用 XPath 断言命令对标签值进行如下操
  • console.log() 显示同一对象属性的矛盾值

    我想我可能要疯了 我使用 console log 来查看对象的状态 然后在下一行对同一对象的特定属性执行 console log 并为每个属性获取不同的值 我正在使用的代码是 console log this pictures Items

随机推荐

  • 在 Docker 容器中使用 VNCserver + GUI 应用程序 + Virtual Display

    我想在 docker 容器内运行 firefox 或任何图形应用程序 我的要求 当我启动容器时 我应该创建一个虚拟显示 启动 VNC 服务器 然后启动 GUI 应用程序 这意味着容器成功启动后 我可以通过 VNC 客户端连接到容器内运行的
  • 在 React.js 中,如何在用户单击后退按钮时运行函数?

    我环顾四周并尝试使用 React router 找到解决方案 通过 V5 您可以使用
  • fasta.gz 上的 SeqIO.parse

    编码新手 Pytho biopython 新手 这是我在网上的第一个问题 如何打开压缩的 fasta gz 文件以提取信息并在我的函数中执行计算 这是我正在尝试执行的操作 我尝试了不同的方法 以及错误是什么的简化示例 我正在使用的 gzip
  • 在 WPF 中仅使用 XAML 根据 TextBox 的文本过滤 ListBox 的项目

    我目前有一个绑定到项目集合的列表框 由于集合很大 我们希望根据在文本框中输入的文本来过滤显示的项目 我要问的是 是否可以仅使用 XAML 来实现 我不想修改项目集合 我想根据过滤器修改每个项目的可见性 希望它清楚 thanks 就像 Cod
  • 使用 PowerShell 脚本执行 EXE 文件

    我正在尝试使用 PowerShell 脚本执行 EXE 文件 如果我使用命令行 它可以正常工作 首先我提供可执行文件的名称和一系列参数来调用它 C Program Files Automated QA TestExecute 8 Bin T
  • 为什么 .NET Reactive Extensions 中不推荐使用主题?

    我目前正在掌握 NET 的响应式扩展框架 并且正在研究我找到的各种介绍资源 主要是http www introtorx com 我们的应用程序涉及许多检测网络帧的硬件接口 这些将是我的 IObservables 然后我有各种组件将消耗这些帧
  • 如何在不使用框架集的情况下仅缩放 IFRAME 内容?

    我只需要缩放框架内容 在我的网页中我使用了zoom 0 75 height 520px width 800px 如果我增加缩放值 则意味着帧尺寸将会增加
  • glClear() 如何提高性能?

    Apple 关于解决闪烁问题的技术问答 QA1650 包括以下段落 强调我的 您必须为屏幕上的每个像素提供一种颜色 在绘图代码开始时 最好使用 glClear 来初始化颜色缓冲区 在帧开始时全屏清除每种颜色 深度和模板缓冲区 如果您正在使用
  • SMJobSubmit() 可以用来执行 SMJobBless 安装的特权助手吗?

    我一直在阅读文档和 SMJobBless 示例以及互联网上的各种讨论 我的应用程序现在使用安装特权助手SMJobBless 但助手根本不运行 帮助程序的全部目的是在应用程序启动时加载 kext 这是我的应用程序的重要组件 我看到的例子表明
  • zend 形式的数组输入,如 name="person[]"

    在普通的 html 中 我们可以有一个数组字段 例如person
  • 单个 Prisma 查询中的 LEFT JOINS 和聚合

    我有一个包含多个表的数据库 经常需要查询LEFT JOIN以便结果包含来自其他表的聚合数据 我的 Prisma 架构的片段 model posts id Int id unique default autoincrement user id
  • 使用变量作为格式指令的前缀参数

    我需要打印一些前面有可变数量空格的内容 例如 如果我需要在文本前打印 5 个空格 我会这样做 format T 5T My Text Output My Text 我可以使用变量来代替 5 并能够向其传递值吗 我正在寻找的是这样的 form
  • Twilio React Native - 无法解析模块加密

    我正在努力实施twilio打包到我的反应本机项目中 当我在文件中需要它时 项目将无法加载 并且我看到以下错误 Unable to resolve module crypto from Users myname Documents Proje
  • AWS 和 Terraform - 安全组中的默认出口规则

    我在许多提供者是 AWS 的 Terraform 项目中看到了可重复的配置 配置出站 出口 规则以允许所有出站流量 据我了解 这是 AWS 中的默认行为 如AWS 用户指南 默认情况下 安全组包含允许所有出站流量的出站规则 您可以删除规则并
  • Delphi有没有允许路径编辑的编辑控件?

    我有各种层次结构 并且希望使用编辑器 例如下面的资源管理器地址栏中找到的 Microsoft 编辑器 进行导航 Delphi有这样的组件吗 付费还是免费 TMS 的 TAdvExplorerTreeview 可能就是您所寻找的 http w
  • 如何基于 stanford-nlp 条件随机场模型训练法国 NER?

    我发现了 stanford NLP 的工具 发现它真的很有趣 我是一名法国数据挖掘者 数据科学家 喜欢文本分析 并且很想使用你们的工具 但是 NER 在法语中不可用 这让我很困惑 我很想制作自己的法语 NER 如果认为值得的话 甚至可能将其
  • 我可以从 scala 中的重载方法中获取函数吗?

    假设我定义了两个具有相同名称和返回值但参数不同的方法 def overload x Int x toString def overload s String s 现在我想将其中之一转换为函数 如果该方法没有重载 我会这样做 val f ov
  • 继承自 ObservableCollection 的集合 - 有什么好处?

    看完之后这篇 MSDN 文章 我现在想知道将集合定义为继承自的类有什么好处 如果有的话 ObservableCollection 这之间是否有任何显着差异 class MyCollection ObservableCollection
  • 使用基于 $resource 的服务进行部分更新(又名 PATCH)?

    我们正在使用 Django TastyPie 作为后端 REST 服务提供者构建一个 Web 应用程序 并构建一个基于 AngularJS 的前端 使用大量基于 resource 的服务来对服务器上的 CRUD 对象进行处理 到目前为止一切
  • XSLT 1.0 三元 if 的惯用语?

    该 Java 程序使用三元 if 将布尔值映射到输出字符串 表示 true 空字符串表示 false public class ternary public static void main String args boolean flag