XSLT / Xpath:使用冗余Xpath启动器匹配多个元素

时间:2018-10-08 08:25:04

标签: xml xslt xpath

我有一个看起来像这样的XML:

<parent>
    <child1/>
    <child2/>
    <child3/>
    <child4/>
    <child5/>
    <child6/>
</parent>

我有一个模板,仅匹配如下所示的特定孩子:

<xsl:template match="parent/child1|parent/child4|parent/child6/>

有没有办法只写一次“ parent”标签,然后用简化的表达式写“ child”标签,女巫看起来像这样?

<xsl:template match="parent/(child1|child4|child6)"/>

2 个答案:

答案 0 :(得分:1)

您可以尝试

<xsl:template match="parent/*[self::child1 or self::child4 or self::child6]"/>

答案 1 :(得分:1)

在这个特定的示例中,您可以只写一个

 <xsl:template match="child1|child4|child6"/>

如果XML中还有其他parent个元素具有您不想删除的其他父元素,则只需担心会添加child1。如果不是这种情况,您可以改写为...

<xsl:template match="(child1|child4|child6)[parent::parent]"/>

编辑:如评论中所述,这仅在XSLT 3.0及更高版本中有效。