2014-12-04 67 views
0

我有以下XML:XSLT「當測試」工作不正常

<?xml version="1.0" encoding="UTF-8"?> 
<ClaimSystemConfig> 
    <MHC> 
     <businessArea>Test2</businessArea> 
    </MHC> 
    <MHC> 
     <businessArea>Test1</businessArea> 
    </MHC> 
    <PowerSTEPP> 
     <businessArea>Test3</businessArea> 
    </PowerSTEPP> 
    <Amisys> 
     <businessArea>CSAAQA</businessArea> 
     <WADL> 
     <url>Blah</url> 
     <services> 
      <service> 
       <name>authSearch</name> 
       <tenant>rest/clientd/</tenant> 
       <version>1</version> 
      </service> 
      <service> 
       <name>memberSearch</name> 
       <tenant>rest/clientd/</tenant> 
       <version>1</version> 
      </service> 
      <service> 
       <name>memberSummary</name> 
       <tenant>rest/clientd/</tenant> 
       <version>3</version> 
      </service> 
      </services> 
     </WADL> 
    </Amisys> 
</ClaimSystemConfig> 

現在,我想用XSLT僅在<service>標籤中的任何一個有權修改上面的XML <name>memberSummary<version>3。我正在嘗試以下條件,但不起作用。

<xsl:choose> 
    <xsl:when test="//ClaimSystemConfig/Amisys/WADL/services/service[name='memberSummary' and version=3]"> 
    ......do something..... 
    </xsl:when> 
    <xsl:otherwise> 
    ...do nothing...  
    </xsl:otherwise> 
</xsl:choose> 

任何人可以幫助我在制定正確的條件?

下面是部分XSLT:

<xsl:choose> 
          <xsl:when test="//ClaimSystemConfig/Amisys/WADL/services/service[name='memberSummary' and version=3]"> 
           <type>WADL</type> 
           <METHOD>POST</METHOD> 
           <service>memberSummary</service> 
           <requestSpecific>healthplan/memberstatuses</requestSpecific> 
           <inputSchema> 
            <ver:routeData xmlns:ver="version3"> 
            </ver:routeData> 
           </inputSchema> 
           <parms> 
            <parm> 
             <name>eao</name> 
             <value><xsl:value-of select="eao"/></value> 
            </parm> 
           </parms> 
          </xsl:when> 
          <xsl:otherwise> 

          </xsl:otherwise> 
    </xsl:choose> 
+0

如果您更詳細地瞭解什麼是不工作解釋這會有所幫助。在這種情況下,您會收到錯誤消息還是意外輸出?顯示預期的輸出以及實際輸出將會有所幫助。謝謝! – 2014-12-04 09:33:50

+0

@Tim C,當我測試外使用任何XPath測試器工具的條件下,它返回我結果'元= ' memberSummary 其餘/ clientd/ '',但是,當我在我的應用程序中加入了相同的更改,控件不會處於'when'狀態。看起來有點不對勁。 – 2014-12-04 09:39:53

+0

我認爲你需要展示更多的XSLT。如果您可以提供一個完整但很少的XSLT示例來演示問題,那將有所幫助。例如,你確定它甚至可以達到'xsl:choose'嗎? – 2014-12-04 09:42:37

回答

2

目前,當你對你的XML運行下面的XSLT的結果的確是 「......做一些事情......」

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 
    <xsl:template match="/"> 
     <xsl:choose> 
      <xsl:when test="//ClaimSystemConfig/Amisys/WADL/services/service[3][name='memberSummary' and version=3]"> 
      ......do something..... 
      </xsl:when> 
      <xsl:otherwise> 
      ...do nothing...  
      </xsl:otherwise> 
     </xsl:choose> 
    </xsl:template> 
</xsl:stylesheet> 

但如果所涉及的service元素是列表中的第三個元素,它只會「執行某些操作」。所以,你需要把它改成這樣:

<xsl:when test="//ClaimSystemConfig/Amisys/WADL/services/service[name='memberSummary' and version=3]">