2014-12-04 104 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]">