[英]XSLT 2.0 processor for Linux CLI / contains() function in XSLT 1.0
这不是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
函数替换lower-case
,将样式表重新编码为1.0兼容是相对简单的,然后它将与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>
如果您知道将只有一个匹配的报价,那么您不一定需要wrapper元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.