在 XSLT/XPath 中,要匹配具有某个兄弟元素的元素,可以使用通配符和布尔运算符。具体步骤如下:
*
或 [name]
匹配需要查找的元素类型。>
或 >>
判断是否需要将匹配结果包含在结果集中。>
将匹配结果包含在结果集中,并使用 /
符号将 XSLT 代码中的 match
属性与 /
符号之后的匹配结果连接起来。>>
将匹配结果包含在结果集中,并使用 /
符号将 XSLT 代码中的 match
属性与 /
符号之后的匹配结果连接起来。例如,如果要查找所有具有 brother
元素的 item
元素,则可以使用以下 XSLT 代码:
<xsl:template match="/*/*[contains(name(), 'brother') and self::item]">
<xsl:apply-templates select="node()" />
</xsl:template>
其中,/*/*
表示匹配当前目录下的所有元素,contains(name(), 'brother')
表示匹配所有具有 brother
元素的元素,self::item
表示匹配当前元素必须是 item
类型。
如果需要将匹配结果包含在结果集中,则可以使用以下 XSLT 代码:
<xsl:template match="/*/*[contains(name(), 'brother') and self::item]">
<xsl:sequence select="." />
</xsl:template>
其中,select="."
表示将匹配结果包含在结果集中,.
表示匹配结果。
需要注意的是,在使用通配符匹配元素时,为了避免匹配到不需要查找的元素,可以将通配符和布尔运算符组合使用,例如 self::*
表示匹配当前目录下的所有元素,self::node()
表示匹配当前元素必须是 node
类型,self::text()
表示匹配当前元素必须是 text
类型,以此类推。
领取专属 10元无门槛券
手把手带您无忧上云