2016-03-14 73 views
-1

我有一個問題:如何檢查是否元素存在XMLT - > HTML

我有一個XML文件是這樣的:

<tag1> 
    <tag2> 
     <tag3 property="bag"/> 
     <tag3 property="charger"/> 
    </tag2> 
</tag1> 

,我想,如果在標籤2打印存在TAG3做以下出一件事,否則說沒有發現標籤。 我迄今爲止嘗試過這樣的:

<xsl:for-each select="/tag1/tag2> 
    <xsl:choose> 
     <xsl:when test="??"> 
      I HAVE A TAG3 
     </xsl:when> 
     <xsl:otherwise> 
      I DONT HAVE A TAG3 
     </xsl:otherwise> 
    </xsl:choose> 
</xsl:for-each> 

我想知道什麼對我有地方做「?」

最好的問候, Egert

回答

0

如果你只是想測試一個元素的存在,然後只需使用該元素的名稱

<xsl:for-each select="/tag1/tag2> 
    <xsl:choose> 
    <xsl:when test="tag3"> 
     I HAVE A TAG3 
    </xsl:when> 
    <xsl:otherwise> 
     I DONT HAVE A TAG3 
    </xsl:otherwise> 
    </xsl:choose> 
</xsl:for-each> 

或者,使用模板方法

<xsl:template match="/"> 
    <xsl:apply-templates select="tag1/tag2" /> 
</xsl:template> 

<xsl:template match="tag2[tag3]"> 
    I have tag 3 
</xsl:template> 

<xsl:template match="tag2"> 
    I do not have tag 3 
</xsl:template> 

在這種情況下,具有額外條件的模板匹配tag2具有比另​​一個更高的優先級。這意味着第二個模板將只匹配tag2元素,它們下面沒有tag3

+0

謝謝!甚至不知道這很容易! –