2012-03-19 32 views
1

我正在使用xslt。 如果我輸入的字符串是像如何檢查標記是否有值xslt

<entry colsep="0" rowsep="0" /> 
<entry colsep="0" rowsep="0">Acid suppressant</entry> 

我需要檢查入境標籤包含任何價值。如果沒有,我需要將其替換爲

<entry colsep="0" rowsep="0">...</entry> 

如何在XSLT中進行檢查。

感謝 普加

回答

2

如果你想匹配任何文本值的元素,你可以簡單地做到這一點

<xsl:template match="entry[not(text())]" > 

然後,您可以添加您的代碼複製元素,但添加默認價值在同一時間。

結合這與恆等變換,給出了下面的XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="entry[not(text())]"> 
     <entry> 
     <xsl:copy-of select="@*"/> 
     <xsl:text>Default Value</xsl:text> 
     </entry> 
    </xsl:template> 

    <xsl:template match="@*|node()"> 
     <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
     </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 

當施加到下面的XML:

<entries> 
    <entry colsep="0" rowsep="0" /> 
    <entry colsep="0" rowsep="0">Acid suppressant</entry> 
</entries> 

以下是輸出

<entries> 
    <entry colsep="0" rowsep="0">Default Value</entry> 
    <entry colsep="0" rowsep="0">Acid suppressant</entry> 
</entries>