首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XSLT 'when test‘不能正常工作

XSLT 'when test‘不能正常工作
EN

Stack Overflow用户
提问于 2014-12-04 17:24:09
回答 1查看 1.2K关注 0票数 0

我有以下xml:

代码语言:javascript
复制
<?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>

现在,我希望仅当任何一个<service>标记将<name>作为memberSummary,将<version>作为3时,才使用XSLT修改上面的xml。我正在尝试以下条件,但它不起作用。

代码语言:javascript
复制
<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:

代码语言:javascript
复制
  <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>
EN

回答 1

Stack Overflow用户

发布于 2014-12-04 17:32:10

目前,当您在XML上运行以下XSLT时,结果确实是“……做点什么……”

代码语言:javascript
复制
<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元素是列表中的第三个元素时,它才会“执行某些操作”。因此,您需要将其更改为:

代码语言:javascript
复制
<xsl:when test="//ClaimSystemConfig/Amisys/WADL/services/service[name='memberSummary' and  version=3]">
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27290319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档