2011-05-26 95 views
2

如何使用xslt檢查標記是否存在? 區別在於我想檢查我創建的XML(不是輸入XML)。XSLT:檢查輸出的XML是否存在標記

有點像<xsl:when test="phone">但是用於輸出。

+0

使用XSLT時,您將對輸入文檔執行選擇和測試。你用變換驅動輸入來創建輸出。除非您想測試節點集變量中元素的存在,否則您的問題對我來說沒有多大意義。在這種情況下,無論如何,你會用同樣的方式來檢查輸入。 – 2011-05-26 17:44:22

回答

1

樣式表的結果樹是隻寫的。如果你想閱讀它,你可以從另一個轉換中做到這一點 - 轉換的管道是一個有用的設計模式。但是你沒有說你想要解決什麼問題。

1

除非您鏈接兩個樣式表,其中第二個樣式表將第一個樣式表的結果從第一個樣式表中作爲其輸入或除非您將結果存儲在變量中,例如

<xsl:variable name="temp-result"> 
<xsl:apply-templates/> 
<xsl:variable> 

<xsl:if test="$temp-result//phone"> 
    <xsl:copy-of select="$temp-result"/> 
</xsl:if> 

我不認爲有辦法。請注意,上面的方法使用XSLT 2.0以這種方式工作,對於1.0,您需要使用test="exsl:node-set($temp-result)//phone"中的exsl:node-set等擴展函數。

對架構感知型XSLT 2.0來說,通過對模式驗證結果可能會存在第三個選項,這樣可以確保結果是模式實例。