gpt4 book ai didi

xml - XSLT 1.0 中用于 Linux CLI/contains() 函数的 XSLT 2.0 处理器

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:14:26 27 4
gpt4 key购买 nike

这不是 100% 的编程问题,但我希望它适合这里。

您知道用于 Linux (cli) 的任何轻量级 XSLT 2.0 处理器吗?

xsltproc 适用于 XSLT 版本。仅限 1.0。

我只找到了 saxon 处理器,但是这个需要 Java(我真的不想安装)。

或者,您能否向我推荐一个用于 contains() 函数的 XSLT v1 解决方案?

这是我的 XSLT:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="html" doctype-public="XSLT-compat" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" />

<xsl:template match="@*|node()">
<xsl:for-each select="offer[contains(lower-case(name),'find this one')]">
<xsl:copy-of select="."/>
</xsl:for-each>
</xsl:template>

</xsl:transform>

最佳答案

我不知道有这样的处理器,但是通过使用 translate 重新编码该样式表使其与 1.0 兼容相对简单。函数来替换 lower-case一个,然后它将与 xsltproc 一起工作.

如果要选择全部 offer匹配条件的元素(并且可能不止一个)然后你需要用一个根级元素将它们全部包裹起来:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" />

<xsl:template match="/">
<offers>
<xsl:copy-of select="//offer[contains(
translate(name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),
'find this one')]" />
</offers>
</xsl:template>

</xsl:transform>

如果您知道永远只有 一个 匹配的报价,那么您不一定需要包装器元素。

关于xml - XSLT 1.0 中用于 Linux CLI/contains() 函数的 XSLT 2.0 处理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32359418/

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