提问人:U. Windl 提问时间:9/1/2023 最后编辑:U. Windl 更新时间:9/4/2023 访问量:50
XSLT:选择一个节点,其中非子节点具有给定的属性(即 ¬∃ (∄))
XSLT: selecting a node where non of its children do have given properties (i.e. ¬∃ (∄))
问:
我认为重复 XSLT 中的所有代码会适得其反: 当缺少特定的内部子元素时,如何跳过元素? 当问另一个问题时:
在所示示例中,有一些元素填充了来自每个 (valid) 的数据。
但是,如果根本没有有效的样本,则不会创建任何内容。
有效样本的条件为 。result
sample
[@label and value]
我正在寻找的是匹配条件,如果没有匹配;“¬∃”可以这么说。
例如,这种匹配可用于创建错误输出。<xsl:template match="perf_data/sample[@label and value]">
基本的 XSL 模式似乎是“如果存在,那么所有匹配都做......”,但我需要“如果不存在,那么做......一次”。
我以为解决方案类似于 ,但这并没有按预期工作。<xsl:template match="[not(boolean(./sample/@label) or not(./sample/value))]">
那么有可能吗,如果可能,如何? 我花了相当长的时间来寻找这样的解决方案,但失败了......
正在使用的软件来自;我不知道它支持哪个版本的 XSLT。
它说:xsltproc
libxslt-tools-1.1.28
Using libxml 20904, libxslt 10128 and libexslt 817
xsltproc was compiled against libxml 20901, libxslt 10128 and libexslt 817
libxslt 10128 was compiled against libxml 20901
libexslt 817 was compiled against libxml 20901
答:
1赞
Martin Honnen
9/1/2023
#1
您可以做例如
<xsl:template match="perf_data[not(sample[value|@label])]">error message: not a single sample with a value or label</xsl:template>
评论
0赞
U. Windl
9/4/2023
我试过了,但没有用。另外:不是说“有子项或属性的 a”吗?然而,这应该是,相反。sample[value|@label]
sample
value
label
评论
perf_data
sample
xsl:on-empty
libxslt
支持 XSLT 1.0(+ 多个 EXSLT 功能)。