在XSL转换中使用XML模式组

时间:2011-11-30 13:14:23

标签: xslt xsd

我在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>

1 个答案:

答案 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的属性。