我在XML模式中有组定义。像这样:
<attributeGroup name="my_attributes">
<attribute ref="ns:foo" />
<attribute ref="ns:bar" />
</attributeGroup>
另外,我有一个XML转换,我希望能够重用这些定义。是否可以创建匹配此类组的模板?这样的事情可能是:
<xsl:template matchGroup="my_attributes">
<foobar>
<xsl:copy-of select="@*"/>
<xsl:value-of select="." />
</foobar>
</xsl:template>
答案 0 :(得分:1)
是否可以创建与此类组匹配的模板? 这样的事情可能是:
<xsl:template matchGroup="my_attributes"> <foobar> <xsl:copy-of select="@*"/> <xsl:value-of select="." /> </foobar> </xsl:template>
不,XSLT <xsl:template>
指令没有matchGroup
属性
由于这个原因,任何兼容的XSLT处理器都必须引发语法错误。
这样的事情可能接近你想要的东西:
<xsl:template match="@ns:foo[../@ns:bar]">
<!-- Processing here -->
</xsl:template>
上面匹配模式的含义:
将 local-name()
foo
与 "ns:"
所关联的名称空间中的任何属性匹配,以及“父”(此属性所附加的元素) *还有另一个名为* ns:bar
的属性。