2013-06-25 18 views
0

我使用的Xalan-J 2.7.1。我已經使用exslt func函數擴展的xalans實現編寫了一個函數。我試圖通過使用輸出xml的可重複部分將函數中的xslt更清晰。下面的函數是我想要做的事情的一個表示。FUNC:函數的返回結果樹片段

預期的輸出是一個XML樹的片段,但我沒有看到任何輸出。我不知道爲什麼,雖然它是exslt.org文檔中提到的這不起作用

XSLT

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:func="http://exslt.org/functions" 
    xmlns:common="http://exslt.org/common" 
    xmlns:my="http://my.org/my" 
    exclude-result-prefixes="func common my"> 
    <xsl:output type="xml" indent="yes" /> 

    <func:function name="my:personinfo"> 
     <xsl:param name="name" /> 
     <xsl:param name="address" /> 
    <func:result> 
     <xsl:element name="details"> 
      <xsl:element name="name" select="$name" /> 
      <xsl:element name="address" select="$address" /> 
     </xsl:element>   
    </func:result> 
    </func:function> 

    <xsl:element name="results"> 
     <xsl:value-of select="my:personinfo('john', '02-234 pudding lane, london')" /> 
    </xsl:element> 
</xsl:stylesheet> 
+0

我能問爲什麼?爲什麼要使用XSLT 1.0處理器,半生不熟的擴展功能給它XSLT 2.0的額外功能的一小數額,當你可以使用真實的東西? –

回答

1

好吧,如果你有一個結果樹片段節點,並且希望將其輸出到結果樹你需要使用<xsl:copy-of select="my:personinfo('john', '02-234 pudding lane, london')"/>,不value-of

然而要注意xsl:element不採取select屬性,如果你想創建元素或者簡單地使用文字結果元素像

<details> 
    <name><xsl:value-of select="$name"/></name> 
    <address><xsl:value-of select="$address"/></address> 
</details> 

,或者如果你想使用xsl:element確保你使用正確的填充元素語法例如

<xsl:element name="name"><xsl:value-of select="$name"/></xsl:element> 
+0

感謝您抽出寶貴的時間和回答問題。 「確實有效! – Sanjit