我们可以使用它的子元素名称来匹配父节点吗?

Can we match a parent node using it's child element name?

我想使用它的子元素名称来匹配父节点。 示例:

<parent><child1>text</child1></parent>

这里我想匹配父元素,但我不知道父标签名称,但我知道它是子元素名称。所以我需要对父标签执行转换,这就是为什么我需要使用它的子元素名称来匹配父标签。而且如果子标签的父标签是根,那么我不想执行任何转换。

为了更清楚,我需要匹配类似 <xsl:template match="[ancestor::contentblock]"> or <xsl:template match="[parent::contentblock]"> 的内容,但 xslt 不允许这样做。

试试这样的东西:

//*/*[child1]

如果在 xsl:template 匹配中使用 xpath,您可以省略 //

match="*/*[child1]"

编辑

这应该是您正在寻找的更多内容:

match="*[parent::*][.//child1]"

这匹配任何具有父元素和后代 child1 元素的元素。

Fiddle: http://xsltfiddle.liberty-development.net/93F8dVG