gpt4 book ai didi

xml - xpath 选择所有以 foo 结尾的属性?

转载 作者:数据小太阳 更新时间:2023-10-29 02:50:59 26 4
gpt4 key购买 nike

XPATH/XSLT 1.0 是否可以选择所有以“Foo”结尾的属性?

我正在编写一些 XSLT 来获取属性名称以“Foo”结尾的所有“InterestingElement”的所有属性的所有值的列表。

其实我也想过滤掉那些值为空的 ""

我尝试为 XSLT 2.0 指定样式表但得到了 xsl:version: only 1.0 features are supported:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
xmlns:xdt="http://www.w3.org/2005/xpath-datatypes">

到目前为止我有:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:for-each select="//InterestingElement">
<xsl:value-of select="__what goes here?__"/><xsl:text>
</xsl:text>
</xsl:for-each>
<xsl:text>end</xsl:text>
</xsl:template>
</xsl:stylesheet>

下面是一些示例 XML:

<?xml version="1.0"?>
<root>
<Other Name="Bob"/>
<InterestingElements>
<InterestingElement AttrFoo="want this"
Attr2Foo="this too"
Blah="not this"
NotThisFoo=""/>
</InterestingElements>
</root>

最佳答案

XPath 2.0 解决方案

XPath 2.0 本身就可以解决这个问题;在 XSLT 2.0 中,不需要 xsl:for-each —— 只需 xsl:value-of

这个 XPath,

string-join(//InterestingElement/@*[ends-with(name(.), 'Foo') and . != ''], ' ')

将返回名称以 Foo 结尾的所有 InterestingElement 属性的(非空)值的空格分隔列表。

关于xml - xpath 选择所有以 foo 结尾的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42912338/

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