使用XSLT / XPATH选择具有特定值的子元素的元素

男孩先生

我有一个很大的XML文件(200k行),是该工具的报告(在VSS数据库上报告)。它由许多<file>类似元素组成:

<file>
 <name>file.bat</name>
 <version>111</version>
 <checkedout>No</checkedout>
 <binary>Text</binary>
 <vss_path>$/Code/file.bat</vss_path>
 <original_path>C:\code\file.bat</original_path>
 <action>Labeled &apos;1.2.3.4&apos;</action>
 <date>27/09/2013 09:08:00</date>
 <comment></comment>
 <label>1.2.3.4</label>
 <label_comment></label_comment>
 <user>John</user>
 <shared_links>
  <shared_link>$/Beta_1</shared_link>
  <shared_link>$/Branches/New_Feature</shared_link>
 </shared_links>
</file>

我想找到<file>其中至少有一个元素<shared_link>开始/由“$ /贝塔”前缀。

在理想的世界中,我想要的每个匹配元素都是<name><vss_path>和(匹配)<shared_link>部分,但这并不十分重要。

我对XSLT / XPATH并不精通,但是相信那些人可以做这样的事情吗?

此XSLT样式表:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>

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

  <xsl:template match="root">
    <xsl:copy>
      <xsl:apply-templates select="file[shared_links[shared_link[starts-with(., '$/Beta')]]]"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="file">
    <xsl:copy>
      <xsl:apply-templates select="name | vss_path | shared_links"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="shared_links">
    <xsl:copy>
      <xsl:apply-templates select="shared_link[starts-with(., '$/Beta')]"/>
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>

应用于此输入XML时(与您一样,但添加了额外的不匹配文件):

<root>
  <file>
    <name>file.bat</name>
    <version>111</version>
    <checkedout>No</checkedout>
    <binary>Text</binary>
    <vss_path>$/Code/file.bat</vss_path>
    <original_path>C:\code\file.bat</original_path>
    <action>Labeled &apos;1.2.3.4&apos;</action>
    <date>27/09/2013 09:08:00</date>
    <comment></comment>
    <label>1.2.3.4</label>
    <label_comment></label_comment>
    <user>John</user>
    <shared_links>
      <shared_link>$/Alpha_1</shared_link>
      <shared_link>$/Branches/New_Feature</shared_link>
    </shared_links>
  </file>
  <file>
    <name>file.bat</name>
    <version>111</version>
    <checkedout>No</checkedout>
    <binary>Text</binary>
    <vss_path>$/Code/file.bat</vss_path>
    <original_path>C:\code\file.bat</original_path>
    <action>Labeled &apos;1.2.3.4&apos;</action>
    <date>27/09/2013 09:08:00</date>
    <comment></comment>
    <label>1.2.3.4</label>
    <label_comment></label_comment>
    <user>John</user>
    <shared_links>
      <shared_link>$/Beta_1</shared_link>
      <shared_link>$/Branches/New_Feature</shared_link>
    </shared_links>
  </file>
</root>

产生以下输出XML:

<root>
  <file>
    <name>file.bat</name>
    <vss_path>$/Code/file.bat</vss_path>
    <shared_links>
      <shared_link>$/Beta_1</shared_link>
    </shared_links>
  </file>
</root>

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用XSLT / XPATH选择具有特定值的子元素的元素

来自分类Dev

使用Python中的elementree xpath在子级具有特定属性值时选择父级元素

来自分类Dev

如何使用jQuery选择具有特定值的按钮元素?

来自分类Dev

如何使用XPath选择具有四个以上子元素的tr元素?

来自分类Dev

使用python 2.7和XML元素树在XML中选择具有特定元素值的节点

来自分类Dev

xslt仅选择具有给定值的元素

来自分类Dev

使用XPATH确定是否存在具有特定值的XML元素

来自分类Dev

使用XPath返回具有特定属性的所有元素

来自分类Dev

如何使用jQuery选择具有特定ARIA值的所有元素?

来自分类Dev

如何使用jQuery通过具有特定值的数据属性选择所有元素

来自分类Dev

XSLT:生成所有子元素的XPATH

来自分类Dev

XPath / XSLT 1.0:基于子元素值识别元素

来自分类Dev

如何使用jQuery选择具有特定“ abbr”属性值的元素

来自分类Dev

使用XPATH访问具有多个属性的XML元素的值

来自分类Dev

使用XSLT选择XML中的所有元素和子元素

来自分类Dev

使用jQuery选择具有特定数据属性的元素

来自分类Dev

如何使用'this'在jQuery中选择具有类的特定元素

来自分类Dev

XPath:在其子元素中选择具有特定值的元素

来自分类Dev

具有匹配值的XSLT计数元素

来自分类Dev

使用xpath定位具有属性和子元素的复杂元素

来自分类Dev

使用jQuery选择具有至少2个子元素的所有元素

来自分类Dev

使用XPath获取子元素值,其中date是元素值

来自分类Dev

使用xpath和xslt测试兄弟元素的数字属性值

来自分类Dev

使用XSLT移动元素

来自分类Dev

使用 jQuery 检查 li 元素是否有任何具有值的子元素

来自分类Dev

使用XSLT访问子节点并检索元素值

来自分类Dev

使用XSLT访问子节点并检索元素值

来自分类Dev

使用Xpath提取具有属性的元素

来自分类Dev

使用XSLT查找具有可变/变化位置的XML元素

Related 相关文章

  1. 1

    使用XSLT / XPATH选择具有特定值的子元素的元素

  2. 2

    使用Python中的elementree xpath在子级具有特定属性值时选择父级元素

  3. 3

    如何使用jQuery选择具有特定值的按钮元素?

  4. 4

    如何使用XPath选择具有四个以上子元素的tr元素?

  5. 5

    使用python 2.7和XML元素树在XML中选择具有特定元素值的节点

  6. 6

    xslt仅选择具有给定值的元素

  7. 7

    使用XPATH确定是否存在具有特定值的XML元素

  8. 8

    使用XPath返回具有特定属性的所有元素

  9. 9

    如何使用jQuery选择具有特定ARIA值的所有元素?

  10. 10

    如何使用jQuery通过具有特定值的数据属性选择所有元素

  11. 11

    XSLT:生成所有子元素的XPATH

  12. 12

    XPath / XSLT 1.0:基于子元素值识别元素

  13. 13

    如何使用jQuery选择具有特定“ abbr”属性值的元素

  14. 14

    使用XPATH访问具有多个属性的XML元素的值

  15. 15

    使用XSLT选择XML中的所有元素和子元素

  16. 16

    使用jQuery选择具有特定数据属性的元素

  17. 17

    如何使用'this'在jQuery中选择具有类的特定元素

  18. 18

    XPath:在其子元素中选择具有特定值的元素

  19. 19

    具有匹配值的XSLT计数元素

  20. 20

    使用xpath定位具有属性和子元素的复杂元素

  21. 21

    使用jQuery选择具有至少2个子元素的所有元素

  22. 22

    使用XPath获取子元素值,其中date是元素值

  23. 23

    使用xpath和xslt测试兄弟元素的数字属性值

  24. 24

    使用XSLT移动元素

  25. 25

    使用 jQuery 检查 li 元素是否有任何具有值的子元素

  26. 26

    使用XSLT访问子节点并检索元素值

  27. 27

    使用XSLT访问子节点并检索元素值

  28. 28

    使用Xpath提取具有属性的元素

  29. 29

    使用XSLT查找具有可变/变化位置的XML元素

热门标签

归档