阻止导入相同的样式表

时间:2012-02-23 14:23:58

标签: xslt

我们正在使用一个从组件生成wsdl的建模工具。该工具生成多个wsdl文件和一个wsdl,用于导入所需的所有wsdl(有些是几个Web服务所需的常用对象)。我写了一个xsl,它将所有文件合并为一个,但这会导致一些wsdls不止一次被包含在内,有时甚至会成为一个孩子。 这是处理导入元素的模板:

<xsl:template match="wsdl:import">
  <xsl:apply-templates select="document(@location)"/>
</xsl:template>

我想要一种方法来测试文件是否已经导入,如果已经导入,请忽略它。有没有办法在xsl中执行此操作?感谢。

1 个答案:

答案 0 :(得分:0)

<xsl:key name="imports-by-location" match="wsdl:import" use="@location"/>

<xsl:template match="wsdl:import">
    <xsl:if test="generate-id() = generate-id(key('imports-by-location', @location))">
        <xsl:apply-templates select="document(@location)"/>
    </xsl:if>
</xsl:template>

有关详细信息,请参阅 muenchian方法(例如http://www.jenitennison.com/xslt/grouping/muenchian.html