首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >XSLT移除与属性值不匹配的节点

XSLT移除与属性值不匹配的节点
EN

Stack Overflow用户
提问于 2012-11-25 04:47:13
回答 1查看 3.9K关注 0票数 1

如果某些属性值不匹配,我会尝试从xml中删除节点。下面是我的XML:

代码语言:javascript
运行
复制
<CONFIGURATIONS>
<CONFIG1 DOMAIN="CAE" FOCUS="IN" STATUS="ACTIVE" >
    <ATTR>1<ATTR>
</CONFIG1>
<CONFIG1 DOMAIN="CAE" FOCUS="OUT" STATUS="INACTIVE" >
    <ATTR>2<ATTR>
</CONFIG1>
    <CONFIG1 DOMAIN="CAE" FOCUS="OUT" STATUS="ACTIVE" >
    <ATTR>2<ATTR>
</CONFIG1>
    <CONFIG1 DOMAIN="MFG" FOCUS="OUT" STATUS="ACTIVE" >
    <ATTR>3<ATTR>
</CONFIG1>
</CONFIGURATIONS>

我想删除不具有作为CAE的域值的节点,并且焦点不是OUT,状态是not ACTIVE。

代码语言:javascript
运行
复制
<CONFIGURATIONS>    
    <CONFIG1 DOMAIN="CAE" FOCUS="OUT" STATUS="ACTIVE" >
    <ATTR>2<ATTR>
</CONFIG1>  

我正在使用以下xslt:

代码语言:javascript
运行
复制
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes"/>
    <xsl:template match="node()|@*">
         <xsl:copy>
              <xsl:apply-templates select="node()|@*"/>
          </xsl:copy>
    </xsl:template>
    <xsl:template match="SM_CONFIG_ITEM [@DOMAIN !='CAE' and @FOCUS !='OUT' and @STATUS != 'INACTIVE']"/>
</xsl:stylesheet>

但它没有产生所需的输出。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-25 05:48:10

但它没有产生所需的输出。我做错了什么?

您希望在满足其中一个!=条件时匹配元素--但是上面的匹配模式指定必须满足所有!=条件。

解决方案

此转换

代码语言:javascript
运行
复制
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*">
  <xsl:copy>
   <xsl:apply-templates select="node()|@*"/>
  </xsl:copy>
 </xsl:template>

 <xsl:template match=
  "CONFIG1[not(@DOMAIN='CAE' and @FOCUS='OUT' and @STATUS='ACTIVE')]"/>
</xsl:stylesheet>

在所提供的XML文档上应用时的

代码语言:javascript
运行
复制
<CONFIGURATIONS>
    <CONFIG1 DOMAIN="CAE" FOCUS="IN" STATUS="ACTIVE" >
        <ATTR>1</ATTR>
    </CONFIG1>
    <CONFIG1 DOMAIN="CAE" FOCUS="OUT" STATUS="INACTIVE" >
        <ATTR>2</ATTR>
    </CONFIG1>
    <CONFIG1 DOMAIN="CAE" FOCUS="OUT" STATUS="ACTIVE" >
        <ATTR>2</ATTR>
    </CONFIG1>
    <CONFIG1 DOMAIN="MFG" FOCUS="OUT" STATUS="ACTIVE" >
        <ATTR>3</ATTR>
    </CONFIG1>
</CONFIGURATIONS>

生成所需的、正确的结果

代码语言:javascript
运行
复制
<CONFIGURATIONS>
   <CONFIG1 DOMAIN="CAE" FOCUS="OUT" STATUS="ACTIVE">
      <ATTR>2</ATTR>
   </CONFIG1>
</CONFIGURATIONS>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13545430

复制
相关文章

相似问题

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