2012-05-14 41 views
0

我正在使用XPATH來判斷我的參數$ test是否存在。 我正在使用Altova的Stylevision的XPATH建設者,我想我可以使用類似 exists ($blah)exists (string($blah)) 但這結束與在使用它之前檢查XSLT中是否存在參數

" Undefined variable in expression test="exists( string($blah) )""

的問題是,有時參數會存在,有時它贏得」噸。我不想在一個空白參數中硬編碼!

在我使用它之前,有沒有一種方法可以說「檢查參數XXXX是否存在」?這是令人沮喪,因爲我知道如何做到這一點在幾乎所有其他的編程語言

參數定義:

<xsl:param name="blah"> some text </xsl:param>

這些參數是從一個單獨的文件「parameters.xslt」中讀出。該文件可能存在也可能不存在,具體取決於場景。在嘗試使用它之前,我需要檢查實際存在的參數。

回答

1

如果您聲明瞭參數,它就存在。你想知道的是,does it have a value?

<xsl:choose> 
    <xsl:when test="not($blah)">$blah wasn’t passed in</xsl:when> 
    <xsl:otherwise>$blah was passed in</xsl:otherwise> 
</xsl:choose> 
+0

問題是參數從參數文件「Parameters.xslt」中被拖入。有時,根據場景,這個文件將不再需要。所以我需要做的是檢查參數是否真的存在/是否已經創建。9甚至有可能嗎?)另一方面,「NOT()」在參數確實存在的情況下可以正常工作。 – JustAnotherDeveloper

+1

啊。不,我不相信有一種方法可以在不知道它是否存在的情況下檢查參數。您是否有條件地添加''或''?如果是這樣,當包含Parameters.xslt,並且包含'時,如何包含''什麼時候沒有? –

+0

當我說「有條件地添加」時,我的意思是說,當你正在生成一個樣式表時,這肯定會發生,對吧?因爲我相信'import' /'include'只能是'stylesheet'的直接子類,而不是'if'。 –

1

基本上,如果你正在編寫XSLT,那麼你應知道已被宣佈哪些變量。您正嘗試使用某種開發模式,其中編寫樣式表的不同模塊的人員不完全瞭解彼此的代碼,並且XSLT不適用於該模型。

XSLT在這方面並不是唯一的:你不會在Java方法中找到任何東西,它允許方法的作者詢問「調用者提供了多少個參數?」。如果提供的參數不足,代碼將無法編譯。

相關問題