如何根据多个字段过滤xml

埃里克 C.

我需要通过仅获取 end_date = 9999-12-31 来过滤 job_information 记录的帮助,并且如果 action 不等于“DELETE”

输入的XML如下

queryCompoundEmployeeResponse  
CompoundEmployee  
Person  
fields...fields  
fields...fields  
fields...fields  
Employment_Information  
fields...fields  
fields...fields  
      job_information
      Action..Action
      date...date  
      job_information
      Action...Action
      date...date 

我在尝试这样做时陷入困境

`<?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" encoding="UTF-8" indent="yes"/>
  <xsl:template match="@* | node()">
   <xsl:copy>
   <xsl:apply-templates select="@* | node()"/>
   </xsl:copy>
   </xsl:template>
   <xsl:template match="employment_information">
  <xsl:copy>
    <xsl:apply-templates select="*[not(self::job_information)]"/>
   <xsl:copy-of select="employment_information[job_information/end_date = 
  '9999-12-31']"/>
</xsl:copy>

以下是输入的XML

      <?xml version="1.0" encoding="UTF-8"?>
      <queryCompoundEmployeeResponse>
      <CompoundEmployee>
      <id></id>
      <person>
      <employment_information>
      <action>NO CHANGE</action>
      <assignment_class></assignment_class>
      <job_information>
      <action>NO CHANGE</action>
      <end_date>9999-12-31</end_date>
      <event>5</event>
      </job_information>
      <job_information>
      <action>DELETE</action>
      <end_date>1998-12-31</end_date>
      <event>5</event>
      </job_information>
      </employment_information>
      </person>
      <execution_timestamp>2018-09-18T12:06:05.000Z</execution_timestamp>
      <version_id></version_id>
     </CompoundEmployee>
    </queryCompoundEmployeeResponse>

输出应为以下 XML。应删除第二个 job_information

      <?xml version="1.0" encoding="UTF-8"?>
      <queryCompoundEmployeeResponse>
      <CompoundEmployee>
      <id></id>
      <person>
      <employment_information>
      <action>NO CHANGE</action>
      <assignment_class></assignment_class>
      <job_information>
      <action>NO CHANGE</action>
      <end_date>9999-12-31</end_date>
      <event>5</event>
      </job_information>
      </employment_information>
      </person>
      <execution_timestamp>2018-09-18T12:06:05.000Z</execution_timestamp>
      <version_id></version_id>
     </CompoundEmployee>
    </queryCompoundEmployeeResponse>
michael.hor257k

通过仅获取 end_date = 9999-12-31 并且如果 action 不等于“DELETE”来过滤 job_information 记录

我认为可以翻译成:

XSLT 1.0

<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:strip-space elements="*"/>

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

<xsl:template match="job_information[not(end_date = '9999-12-31' and action != 'DELETE')]"/>

</xsl:stylesheet>

将删除job_information您不想要元素。要按照您开始的方式进行操作 - 即保留job_information您想要元素,它需要是:

<xsl:template match="employment_information">
    <xsl:copy>
        <xsl:apply-templates select="*[not(self::job_information)]"/>
        <xsl:copy-of select="job_information[end_date = '9999-12-31' and action != 'DELETE']"/>
    </xsl:copy>
</xsl:template>

请注意,这可能会更改元素的原始顺序,因为所需的job_information元素将始终位于末尾。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何过滤多个字段的搜索查询?

来自分类Dev

如何使用对象列表过滤多个字段

来自分类Dev

如何快速过滤UITableView中的多个字段

来自分类Dev

如何根据条件在多个字段中执行搜索

来自分类Dev

如何根据多个字段删除mongodb中的重复项?

来自分类Dev

SQL查询根据一个或多个字段进行过滤

来自分类Dev

Spark SQL过滤多个字段

来自分类Dev

从单个字段过滤多个值-Django

来自分类Dev

AngularJS 过滤多个字段上的重复 OR

来自分类Dev

按多个字段过滤 Firebase

来自分类Dev

无法使用过滤器过滤多个字段

来自分类Dev

按多个字段和子字段过滤Mongo项目

来自分类Dev

如何对SQL中多个字段的搜索进行排序和过滤

来自分类Dev

如何在Django中的多个字段中过滤某些项目

来自分类Dev

如何对SQL中多个字段的搜索进行排序和过滤

来自分类Dev

如何在Logstash中过滤具有相同名称的多个字段?

来自分类Dev

如何在多个字段上创建远程过滤器?扩展 Js 5

来自分类Dev

如何在 Django 中过滤具有多个字段对象的查询集?

来自分类Dev

根据不同的字段计算多个字段的出现次数

来自分类Dev

Django-如何根据多个字段编辑数据库中的特定行?

来自分类Dev

如何根据javascript中的多个字段对数组进行排序

来自分类Dev

如何根据字段值过滤ElasticSearch结果?

来自分类Dev

如何根据某些字段过滤对象数组?

来自分类Dev

如何根据字段值过滤ElasticSearch结果?

来自分类Dev

AngularJS过滤一个字段的多个值

来自分类Dev

MongoDB文本搜索按多个字段过滤

来自分类Dev

Elasticsearch:无法在多个字段上进行过滤

来自分类Dev

使用AngularJS中的单个输入过滤多个字段

来自分类Dev

ElasticSearch在多个字段上进行过滤(具有聚集)

Related 相关文章

  1. 1

    如何过滤多个字段的搜索查询?

  2. 2

    如何使用对象列表过滤多个字段

  3. 3

    如何快速过滤UITableView中的多个字段

  4. 4

    如何根据条件在多个字段中执行搜索

  5. 5

    如何根据多个字段删除mongodb中的重复项?

  6. 6

    SQL查询根据一个或多个字段进行过滤

  7. 7

    Spark SQL过滤多个字段

  8. 8

    从单个字段过滤多个值-Django

  9. 9

    AngularJS 过滤多个字段上的重复 OR

  10. 10

    按多个字段过滤 Firebase

  11. 11

    无法使用过滤器过滤多个字段

  12. 12

    按多个字段和子字段过滤Mongo项目

  13. 13

    如何对SQL中多个字段的搜索进行排序和过滤

  14. 14

    如何在Django中的多个字段中过滤某些项目

  15. 15

    如何对SQL中多个字段的搜索进行排序和过滤

  16. 16

    如何在Logstash中过滤具有相同名称的多个字段?

  17. 17

    如何在多个字段上创建远程过滤器?扩展 Js 5

  18. 18

    如何在 Django 中过滤具有多个字段对象的查询集?

  19. 19

    根据不同的字段计算多个字段的出现次数

  20. 20

    Django-如何根据多个字段编辑数据库中的特定行?

  21. 21

    如何根据javascript中的多个字段对数组进行排序

  22. 22

    如何根据字段值过滤ElasticSearch结果?

  23. 23

    如何根据某些字段过滤对象数组?

  24. 24

    如何根据字段值过滤ElasticSearch结果?

  25. 25

    AngularJS过滤一个字段的多个值

  26. 26

    MongoDB文本搜索按多个字段过滤

  27. 27

    Elasticsearch:无法在多个字段上进行过滤

  28. 28

    使用AngularJS中的单个输入过滤多个字段

  29. 29

    ElasticSearch在多个字段上进行过滤(具有聚集)

热门标签

归档