使用XSLT替换具有某些内部文本的节点的同级内部文本

初学者

我正在使用xml,并且尝试查找具有内部文本的节点,123然后找到其后继或先行同级duration,然后替换其值。

XML

<?xml version="1.0" encoding="utf-8" ?>
<classes>
<class>
  <id>123</id>
  <duration>100</duration>
  <price>price</price>
</class>
<class>
  <id>234</id>
  <duration>10</duration>
  <price>100</price>
</class>
<class>
  <id>123</id>
  <duration>120</duration>
  <price>price</price>
</class>
</classes>

XSLT

<xsl:template match="id[text()='123']">
    <xsl:copy>
        <xsl:if test="count(following-sibling::duration) or count(preceding-sibling::duration)">
            <xsl:text>abc</xsl:text>
        </xsl:if>
        <xsl:apply-templates select="@*|node()" />
    </xsl:copy>
</xsl:template>

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

输出

<?xml version="1.0" encoding="utf-8" ?>
<classes>
<class>
  <id>123</id>
  <duration>newValue</duration>
  <price>price</price>
</class>
<class>
  <id>234</id>
  <duration>10</duration>
  <price>100</price>
</class>
<class>
  <id>123</id>
  <duration>newValue</duration>
  <price>price</price>
</class>
</classes>

请帮忙。提前致谢。

michael.hor257k

尝试:

<xsl:template match="class[id='123']/duration">
    <xsl:copy>
        <xsl:text>abc</xsl:text>
    </xsl:copy>
</xsl:template>

或者:

<xsl:template match="duration[../id='123']">
    <xsl:copy>
        <xsl:text>abc</xsl:text>
    </xsl:copy>
</xsl:template>

代替:

<xsl:template match="id[text()='123']">
    <xsl:copy>
        <xsl:if test="count(following-sibling::duration) or count(preceding-sibling::duration)">
            <xsl:text>abc</xsl:text>
        </xsl:if>
        <xsl:apply-templates select="@*|node()" />
    </xsl:copy>
</xsl:template>

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

jQuery仅替换节点的文本,而忽略当前的内部节点

来自分类Dev

XPath:如何选择具有包含文本的同级节点?

来自分类Dev

XPath:如何选择具有包含文本的同级节点?

来自分类Dev

使用 XSLT 从任何 xml 中提取具有值的所有文本节点的 xpath

来自分类Dev

使用HTMLAgilityPack将节点附加到内部文本

来自分类Dev

使用HTML Agility Pack从特定节点捕获内部文本

来自分类Dev

作为字符串获取时,如何从具有'\'以及其他字符的xml节点中获取内部文本

来自分类Dev

SimpleFramework XML:具有内部文本和子元素的元素

来自分类Dev

具有多个内部文本的网页excel vba抓取数据

来自分类Dev

使用C#提取内部具有随机数的文本

来自分类Dev

XSLT替换属性值和文本节点中的文本

来自分类Dev

我想替换HTML标签的内部文本

来自分类Dev

XPath-选择具有内部文本甚至子元素文本的元素

来自分类Dev

选择“使用包含特定内部文本的子节点的单节点”。XML文档

来自分类Dev

选择“使用包含特定内部文本的子节点的单节点”。XML文档

来自分类Dev

使用Scrapy从具有多个后代的节点中擦除文本

来自分类Dev

XSLT-如何统一某些后续节点的文本内容?

来自分类Dev

使用XSLT XPATH根据内部节点值获取外部节点

来自分类Dev

XPath如何让节点内部的父母同级

来自分类Dev

XPath如何让节点内部的父母同级

来自分类Dev

C#Xml选择节点包含节点包含节点包含内部文本包含文本

来自分类Dev

C#Xml选择节点包含节点包含节点包含内部文本包含文本

来自分类Dev

使用Jsoup替换树中所有文本节点中的文本

来自分类Dev

使用Jsoup替换树中所有文本节点中的文本

来自分类Dev

用 XSLT 用文本节点替换 XML 标记

来自分类Dev

使用PowerShell替换XML节点文本

来自分类Dev

XSLT如果节点具有属性值,则将其放在同级节点中

来自分类Dev

XSLT如果节点具有属性值,则将其放在同级节点中

来自分类Dev

在 XSLT 中删除内部节点

Related 相关文章

  1. 1

    jQuery仅替换节点的文本,而忽略当前的内部节点

  2. 2

    XPath:如何选择具有包含文本的同级节点?

  3. 3

    XPath:如何选择具有包含文本的同级节点?

  4. 4

    使用 XSLT 从任何 xml 中提取具有值的所有文本节点的 xpath

  5. 5

    使用HTMLAgilityPack将节点附加到内部文本

  6. 6

    使用HTML Agility Pack从特定节点捕获内部文本

  7. 7

    作为字符串获取时,如何从具有'\'以及其他字符的xml节点中获取内部文本

  8. 8

    SimpleFramework XML:具有内部文本和子元素的元素

  9. 9

    具有多个内部文本的网页excel vba抓取数据

  10. 10

    使用C#提取内部具有随机数的文本

  11. 11

    XSLT替换属性值和文本节点中的文本

  12. 12

    我想替换HTML标签的内部文本

  13. 13

    XPath-选择具有内部文本甚至子元素文本的元素

  14. 14

    选择“使用包含特定内部文本的子节点的单节点”。XML文档

  15. 15

    选择“使用包含特定内部文本的子节点的单节点”。XML文档

  16. 16

    使用Scrapy从具有多个后代的节点中擦除文本

  17. 17

    XSLT-如何统一某些后续节点的文本内容?

  18. 18

    使用XSLT XPATH根据内部节点值获取外部节点

  19. 19

    XPath如何让节点内部的父母同级

  20. 20

    XPath如何让节点内部的父母同级

  21. 21

    C#Xml选择节点包含节点包含节点包含内部文本包含文本

  22. 22

    C#Xml选择节点包含节点包含节点包含内部文本包含文本

  23. 23

    使用Jsoup替换树中所有文本节点中的文本

  24. 24

    使用Jsoup替换树中所有文本节点中的文本

  25. 25

    用 XSLT 用文本节点替换 XML 标记

  26. 26

    使用PowerShell替换XML节点文本

  27. 27

    XSLT如果节点具有属性值,则将其放在同级节点中

  28. 28

    XSLT如果节点具有属性值,则将其放在同级节点中

  29. 29

    在 XSLT 中删除内部节点

热门标签

归档