gpt4 book ai didi

java - 测试表达式中的 XSLT 2.0 析取

转载 作者:行者123 更新时间:2023-12-01 08:10:10 25 4
gpt4 key购买 nike

我想知道是否有一种方法可以更方便地格式化测试表达式中的连接。目前它看起来像这样:

<xsl:when test="local-name() = 'p' or local-name() = 'ul' or local-name() = 'sec'" >
<xsl:call-template name="whatever" />
</xsl:when>

如果我想在这里测试大约 10 个元素,那么查找我已经添加的元素非常不方便。

2.0中有类似的东西吗?

<xsl:when test="local-name() = 'p'|'ul'|'sec'" >

更新:

2.0 中的这个怎么样:

<xsl:when test="local-name() = ('p','ui','sec')" >
<xsl:call-template name="whatever" />
</xsl:when>

最佳答案

根本不要使用local-name(),使用正确的命名空间声明和节点测试。

这假设您的 XSLT 中有一个 xmlns:n="..." 声明。

<xsl:when test="self::n:p or self::n:ul or self::n:para">
<xsl:call-template name="whatever" />
</xsl:when>

更好的是,使用模板匹配。

<xsl:template match="n:p | n:ul | n:para">
<xsl:call-template name="whatever" />
</xsl:template>
<小时/>

如果您绝对必须使用字符串表达式和local-name(),则可以使用index-of()

<xsl:when test="index-of(('p', 'ul', 'sec'), local-name())">
<xsl:call-template name="whatever" />
</xsl:when>

* 这是有效的,因为 index-of() 在找到匹配项时会返回一个非零数字,并且非零数字的计算结果为 true 在 boolean 上下文中。

尽管我强烈建议不要在这种特殊情况下这样做,因为它与 XSLT 的设计原则相矛盾。

关于java - 测试表达式中的 XSLT 2.0 析取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18056613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com