2012-02-23 74 views
0

我們正在使用一個建模工具從組件生成wsdl。該工具生成多個wsdl文件和一個wsdl,用於導入所需的所有wsdls(有些是幾個Web服務所需的常用對象)。我寫了一個將所有文件合併爲一個的xsl,但這會導致一些wsdls不止一次被包含,有時也會成爲它自己的孩子。 這是處理進口元素的模板:防止導入相同的樣式表

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

我想一個方法來測試,如果文件已經導入,如果是,忽略它。有沒有辦法在xsl中做到這一點?謝謝。

+0

你能,請提供一個小例子(源XML 2-3小XML文檔,可以用來演示問題)。我知道如何解決這個問題,但是想用自己的詞彙來表達答案。 – 2012-02-23 15:31:25

+0

Dimitre,我試着在這裏粘貼代碼示例,但我無法。有沒有辦法可以給xmls發電子郵件?謝謝。 – bretter 2012-02-24 13:48:08

回答

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

+0

這最終會忽略所有導入。我嘗試在相同的結果中將'='更改爲'!='。 – bretter 2012-02-23 14:45:26

+0

調試說什麼? (例如insert'''''之前'? – penartur 2012-02-23 15:10:24

+0

<調試的xmlns:XSD = 「http://www.w3.org/2001/XMLSchema」 的xmlns:XS = 「http://www.w3.org/2001/XMLSchema」> N1000A N1000A bretter 2012-02-23 18:43:51