2013-07-02 151 views
0

我正在使用我沒有構建的應用程序。XSLT不返回結果

如果XSLT返回任何內容爲True,並且返回的內容爲false,則該應用程序需要XSLT文件Sort的一個True/False。這由應用程序用來決定是否將XML發佈到Web服務。

,所以我第一次開始與

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
    <xsl:choose> 
    <xsl:when test="{{if this is true I don't want anything returned}}"> 

    </xsl:when> 
    </xsl:choose> 
</xsl:template> 
</xsl:stylesheet> 

{我想這會做的伎倆,但我錯了,它仍然返回。 如果我嘗試當它不存在應用程序仍然發佈了XML的,我不希望它。}

所以後來我試圖

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
    <xsl:choose> 
    <xsl:when test="{{if this is true I don't want anything returned}}"> 
    <xsl:message terminate="yes" /> 
    </xsl:when> 
    </xsl:choose> 
</xsl:template> 
</xsl:stylesheet> 

,並終止了改造,發送錯誤到應用程序,並且錯誤被應用程序捕獲並且保持下一個XML不通過發佈過程。

我需要的是在命令中保留XSLT文件不返回結果。

也許我不完全理解XSLT的功能和我做錯了什麼。

+0

什麼框架或進程正在執行XSLT轉換?一個shell腳本?一個.BAT文件?一個程序? –

+0

它是一個Windows應用程序。除此之外,我對應用程序的內部工作知之甚少。我認爲這是一個基於網絡的應用程序 – Malachi

回答

2
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" />  

<xsl:template match="/"> 
    <xsl:choose> 
    <xsl:when test="{{if this is true I don't want anything returned}}" /> 
    <xsl:otherwise> 
    <xsl:text>Return something</xsl:text> 
    </xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 
</xsl:stylesheet> 

如果測試評估爲真,這應該完全沒有任何回報。

另一個變化是使用匹配的表達特異性:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" />  

<!-- empty template with a more specific match expression --> 
<xsl:template match="/*[{if this is true I don't want anything returned}]" /> 

<xsl:template match="/"> 
    <xsl:text>Return something</xsl:text> 
</xsl:template> 
</xsl:stylesheet> 

然而在這種方法中,你是從在比賽中表現的輸入文檔不限於測試節點。變量在匹配表達式中不起作用。

+0

你是什麼意思變量?你的意思是喜歡選擇節點的屬性?我嘗試了第一個例子,它仍然發佈我不想要的XML。 – Malachi

+0

我重新閱讀文檔,需要做一些完全不同的事情。感謝您在理解XSL方面的一些幫助。 – Malachi

+1

好的,不客氣。 :-) – Tomalak

2

XSLT樣式表的輸出始終是符合XPath數據模型的XML文檔。這並不意味着它是格式良好的XML;例如它可以是一個沒有孩子的文檔節點(一個空文檔)。這可能是最接近你輸出「無」的。你測試這個「沒有」的方式將取決於你的調用應用程序。在實踐中,我會建議輸出一個容易讓你的應用程序測試的「東西」;例如包含單個空元素<nothing/>的文檔。

+0

我明白這一點。感謝您花時間回覆。我一直在做對,並且正確地理解了輸出,但是我認爲我的調用應用程序只會在我的兩個條件都成立的情況下才會發布,但如果任何條件都成立,它就會發布。所以我必須將兩個條件合併到一個XSL中。有點難以解釋,但我完全理解發生了什麼並解決了我的問題,完成了我的任務。再次感謝您花時間回答我的問題。 – Malachi