XSLT 与 SQL 类似的功能 "WHERE LIKE"

标签 xslt xpath

我有以下 XML

        <Answer>
            <Label>FCVCMileage</Label>
            <Value>3258</Value>
            <Iteration>0</Iteration>
            <DataType>NUMBER</DataType>
        </Answer>

并且需要获取里程标签下的值。然而,里程的 4 个字母前缀可以是 8 个不同前缀中的任意一个。

我知道我可以通过使用 xsl:if 或 xsl:choose 测试每个组合来找到该值,但是有没有一种更优雅的方法可以类似于以下 SQL,并且不需要更改正在执行的代码:添加了其他前缀。

WHERE label LIKE '%Mileage'

注意。只会有 1 个标签元素包含“里程”一词

干杯!

最佳答案

I know I could find the value by testing for every combination using xsl:if or xsl:choose but is there a more elegant way that would work similar to the following SQL and also wouldn't need changes to code being made if other prefixes were added.

    WHERE label LIKE '%Mileage'

在 XPath 2.0 中有一个标准函数 ends-with()

在 XPath 1.0 中使用:

/*[Label[substring(., string-length(.) - 6) = 'Mileage']]/value

注意:

  contains(Label, 'Mileage')

与上面的 SQL 子句不同。例如,它将选择这个节点:

<Label>xxx Mileage yyy</Label>

关于XSLT 与 SQL 类似的功能 "WHERE LIKE",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4656169/

相关文章:

xslt - 在 xpath 中连接两个字符串序列

python - scrapy无法抓取页面中的所有链接

xpath - Windows 事件日志,您可以对不相等的字符串进行 xpath 过滤吗?

PHP 使用 DOMXPath 剥离标签和删除节点

java - 简单哈希函数(字符串输入输出 1 个字节)

xslt - 我想使用 xslt 在 xml 文件中添加 "xmlns"属性

java - 使用奇怪的标签编译样式表 XSL <a :tag>

xml - XSL,使用 XML 作为模板的参数

xpath - phpBB论坛的XPath表达式

xslt - 匹配XPath产生错误,加载样式表:解析XSLT样式表失败