我有一個簡單的問題,我無法真正找到解決方法,我需要您的幫助。XSLT收集數據
主要的問題是,當處理輸入XML時,有各種需要「收集」信息的地方。這意味着我真正要做的就是調用帶有參數的特殊的模板,像這樣:
<xsl:template name="append-section">
<xsl:param name="id" />
<xsl:param name="title" />
<!-- more code here -->
</xsl:template>
比方說在XSLT過程中,這個模板被稱爲12倍。在轉換結束時,我想將這些數據寫入文件。
我試圖將這些數據應用到全局變量,然後將結果寫入文件。僅僅意識到這些變量在XSLT中並不是真正的變量。此解決方案無效。
第二種解決方案是將xsl:result-document與一個臨時文件結合使用。這個解決方案會做類似的東西永遠是文件的以前的內容複製到自身,還追加了新的數據是這樣的:
<xsl:template name="append-section">
<xsl:param name="id" />
<xsl:param name="title" />
<xsl:result-document method="html" href="tmp/tmp.html">
<xsl:value-of select="document(tmp.html)" />
<xsl:element name="li">
<xsl:element name="a">
<xsl:attribute name="class">
<xsl:value-of select="'so-dropdown-page-menu-list-button'" />
</xsl:attribute>
<xsl:attribute name="href">
<xsl:value-of select="'#'" />
<xsl:value-of select="$id" />
</xsl:attribute>
<xsl:value-of select="$title" />
</xsl:element>
</xsl:element>
</xsl:result-document>
</xsl:template>
此代碼可能不是完美的,但我不得不不幸的是,實現引發以下異常:
Cannot write more than one result document to the same URI
此解決方案似乎也無效。
所以我的問題是這樣的:我該如何實現這個簡單的問題?收集來自不同地方的數據,並在轉換結束時將它們寫入文件。
我使用撒克遜。
告訴我們輸入XML的外觀,然後向我們顯示要構建或收集的相應HTML,然後我們可以建議一種XSLT方法。如果在一個樣式表中需要不同的處理步驟,您可能只想在模板上使用某種模式來收集信息,然後使用其他模式進行其他處理。 –
我很確定這是不可能的,或者至少很難完成,我想如果有人可以提出一個通用的解決方案,其他人可能會發現它有幫助,必須有一種方法來實現這一點。 –
如果你能向我們展示一個特定的場景,也許我們可以爲它提出一個通用的解決方案。 – JLRishe