2014-09-26 66 views
0

我試圖返回基於兩個匹配字符串'Group -''Experts Choice - '一切正常,因此我的要求,但問題是,它應該'Group -''Experts Choice - '後恢復一切substring'ed值。不過,我收到這條線不正確的錯誤。我看過操作員,每當我使用'OR'操作員時,我得到的輸出是'true'。但我不希望這是我的輸出。因此,一個例子是:XSL子給出了兩個賽變量

CASE1:

​​

OUTPUT: China sells apple products

CASE2:

<xsl:variable name="$own_name" select="Group - Experts Choice - China sells apple products | $900 "/> 

<xsl:value-of select="substring-before(substring-after($own_name, 'Group -'),'|') or substring-before(substring-after($own_name, 'Experts Choice - '),'|')"/> 

OUTPUT: true

我的目標:是得到同樣的輸出中,China sells apple products,而不是真實的。 case2我在哪裏出錯了。

+1

'或'是一個布爾運算符幷包含在e中xpression導致表達式返回布爾結果。這裏真正的問題是定義**邏輯**,在這兩個例子中你將得到相同的結果。我們知道的很少。也許你應該首先尋找'專家選擇' - 並且 - 如果沒有找到給定的字符串 - 則繼續'組 - '? – 2014-09-26 11:12:38

+0

@ michael.hor257k我可以用'if contains(stringToSearchWithin,stringToSearchFor)...'來包裝,並按照你的建議應用邏輯。但是,我將如何處理包含'Group - '和'Experts Choice - '的字符串呢? 'substring-after'如何在包含'Group-'和'Experts Choice'的字符串之後處理字符串? – Arty 2014-09-26 11:28:48

+0

「*但我將如何處理包含兩個字符串*」這是給你說的。我們是否事先知道'團隊'總是在''專家選擇'之前來**「? – 2014-09-26 11:32:26

回答

1

對於您可能的輸入,我仍然有點困惑。讓我們看看下面的例子輸入

<input> 
    <string>Group - China sells apple products | $900</string> 
    <string>Experts Choice - China sells apple products | $900 </string> 
    <string>Group - Experts Choice - China sells apple products | $900 </string> 
    <string>Group - gobbledy gook Experts Choice - China sells apple products | $900 </string> 
    <string>Experts Choice - Group - China sells apple products | $900 </string> 
</input> 

應用以下樣式:

XSLT 1.0

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 

<xsl:template match="/"> 
    <result> 
     <xsl:for-each select="/input/string"> 
      <payload> 
       <xsl:choose> 
        <xsl:when test="contains(., 'Experts Choice -')"> 
         <xsl:value-of select="substring-before(substring-after(., 'Experts Choice -'),'|')"/> 
        </xsl:when> 
        <xsl:otherwise> 
         <xsl:value-of select="substring-before(substring-after(., 'Group -'),'|')"/> 
        </xsl:otherwise> 
       </xsl:choose> 
      </payload> 
     </xsl:for-each> 
    </result> 
</xsl:template> 

</xsl:stylesheet> 

結果:

<?xml version="1.0" encoding="UTF-8"?> 
<result> 
    <payload> China sells apple products </payload> 
    <payload> China sells apple products </payload> 
    <payload> China sells apple products </payload> 
    <payload> China sells apple products </payload> 
    <payload> Group - China sells apple products </payload> 
</result> 
+0

謝謝!我的目標是第三個輸入。關於輸入,Group總是在專家選擇之前出現(這是自動的,而不是手動完成的)。但是鑑於你所表達的不同狀態的輸入,我很欣賞它。現在對我來說更加清楚了。謝謝 ! – Arty 2014-09-26 11:51:48