2010-10-28 42 views
1

我正在使用XSLTJSON將我的XML轉換爲JSON。我的原始XML不是我想要的格式,所以我首先通過XSL樣式表來傳遞它,然後將該樣式表的輸出傳遞給XSLTJSON。將XSL模板輸出傳遞給XSL函數

現在我正在通過串聯調用變壓器來做到這一點。我想簡化它,只需要一次調用變壓器。有沒有辦法寫一個包含json.xsl的XSL樣式表,匹配「/」,做它的事情,然後將其輸出傳遞給json:generate()?

+0

[XSLT - 參考以前的模板的輸出結果]的可能重複(http://stackoverflow.com/questions/12361371/xslt-referencing-the-output-result – 2014-02-04 03:50:43

回答

0

該樣式表:

<xsl:stylesheet version="2.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:json="http://json.org/"> 
    <xsl:import href="xml-to-json.xsl"/> 
    <xsl:template match="/"> 
     <xsl:variable name="vFirstPass"> 
      <xsl:apply-templates/> 
     </xsl:variable> 
     <xsl:value-of select="json:generate($vFirstPass)"/> 
    </xsl:template> 
    <xsl:template match="node()|@*"> 
     <xsl:copy> 
      <xsl:apply-templates select="node()|@*"/> 
     </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 
+0

我想先應用我的樣式表(它有一個匹配「/」的模板),然後從輸入的json.xsl將輸出傳遞給json:generate()。它看起來只是對你所擁有的一個小小的調整,但我不確定要改變什麼。我以前從未使用過模式。 – 2010-10-28 20:19:07

+0

@Danny Cohn:你在使用XSLT 2.0還是XSLT 1.0版本? – 2010-10-28 20:33:43

+0

我正在使用XSLT 2.0 – 2010-10-28 21:03:57