2015-06-10 287 views
0

我想要測試XSLT中是否存在HTML元素,但無法使其工作。我目前正在分配基於變量是否可以這樣找到它:用於檢查HTML元素是否存在的XSLT表達式

<xsl:variable name="TestParaText"> 
     <xsl:choose> 
      <xsl:when test="contains(smf:body,index[@id='testSpan'])"> 
       <xsl:value-of select="'Element found'"/> 
      </xsl:when> 

      <xsl:otherwise> 
       <xsl:value-of select="'Element Not Found'"/>      
      </xsl:otherwise> 
     </xsl:choose> 
    </xsl:variable> 

在我的HTML我有這樣的:

<span id="testSpan" style="display:none"></span> 

我不想要的元素是可見的,所以我已經設置了一個style屬性,但我很確定它與我差的xpath/XSLT語法有關!道歉,因爲我對這個主題不是很瞭解,但希望我應該爲某人提供足夠的信息來幫助我。由於

HTML Body

+0

請有一個例子的輸入XML。 –

+0

我很抱歉,我不知道如何獲取,我正在使用一種工具來生成本質上是生成HTML的文本編輯器的主體,並且我已經將span標記放在那裏。如果我在元素中輸入一個值,它就會輸出,所以我知道它在那裏,它只是我如何引用身體內的HTML元素的ID – Wingmiester

+0

** 1。**請將您的輸入XML **作爲代碼** ,而不是照片,以便我們可以使用它進行測試。如有必要,請使用* identity transform *模板來獲取它。 - ** 2。** XSLT非常依賴於上下文,您只向我們展示了您的一部分。如果不知道你現在在哪裏需要應用這個測試,那麼無法準確回答你的問題。 –

回答

0

contains函數可以使用字符串。如果您想測試smf:body是否包含節點index[@id='testSpan']。你應該有這樣的事情:

<xsl:when test="body[descendant::index[@id='testSpan2']]"> 
+0

感謝這一點,儘管它仍然無法使用這種語法。你知道任何其他參考元素的方法嗎? – Wingmiester

+0

也許這是因爲命名空間。你能發佈生成的身體嗎? –

+0

對不起,它有點小(我明顯將它改爲testSpan2) – Wingmiester

0

如果下面是UR XML

輸入XML:

<span id="testSpan" style="display:none"></span> 

XSL:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="span"> 
    <xsl:copy> 
    <xsl:choose> 

    <xsl:when test = "@id = 'testSpan'">    
      <TestParaText> 
      Exists 
      </TestParaText> 
</xsl:when> 
     <xsl:otherwise> 
    <TestParaText> 
       Doesnt Exists 
    </TestParaText> 
     </xsl:otherwise> 
     </xsl:choose> 
    </xsl:copy> 
</xsl:template> 
</xsl:stylesheet> 

輸出將是:

輸出:

<?xml version="1.0" encoding="UTF-8"?> 

<span> 

<TestParaText> 
      Exists 
</TestParaText> 

</span> 

請共享烏爾請求xml和預期輸出