2016-04-28 63 views
0

我想創建幾個XSL:變量,可能會或可能不爲空,然後加入他們的行列:XSL字符串連接()多個變量 - 只使用非空

<xsl:variable name="creatorType" select="replace(lib:merge(subfields/subfield[matches(@code,'[e]')],' '),'author|[.$]','')" /> 
<xsl:variable name="creatorAttribution" select="replace(lib:merge(subfields/subfield[matches(@code,'[j]')],' '),'[,-.]$','')" /> 
<xsl:variable name="creatorNameFullForm" select="replace(lib:merge(subfields/subfield[matches(@code,'[q]')],' '),'[,-()]$','')" /> 
<xsl:variable name="creatorAffiliation" select="replace(lib:merge(subfields/subfield[matches(@code,'[u]')],' '),'[,-.]$','')" /> 

字符串連接(( xsl:sequence),'delimiter')似乎是一個很好的選擇,但也可以用空值連接變量。

<xsl:variable name="creatorDescriptors" select ="string-join(($creatorDates, $creatorType, $creatorAttribution, $creatorAffiliation),', ')"/> 

你將如何只有string-join非空xsl:變量?

我目前得到的東西是這樣的:

Mozart, Wolfgang Amadeus (1756–1791, Composer, ,) 

回答

3

試試這個表達,而不是(用自己的變量名替換變量名),這樣只有非空節點序列

在選定
<xsl:value-of select="string-join(($a, $b, $c, $d)[. != ''],', ')"/>