XSLT:如果另一个属性匹配,则更改一个属性值

乔豪

请帮忙,我是XSLT的新手,对于抱歉的问题,我们深表歉意。

当/ Actor / Relative / Place / @ adj = / Actor / Context / ID / @时,我需要一种方法将数据从相应的/ Actor / Context / ID / card / @ val复制到/ Actor / Relative / SecPlace / @ val帐户

我想出了这个脚本,但它只更改/ Actor / Relative / Place / @ adj的值,而不是@val。非常感谢您的帮助。

XML:

<Actor>
    <Relative>
        <Place adj="12345"/>
        <SecPlace zok="abc"/>
    </Relative>
    <Context>
        <ID account="54321">
            <Card val="abb"/>
        </ID>
        <ID account="12345">
            <Card val="def"/>
       </ID>
    </Context>
</Actor>

XSLT:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:param name="id-to-change" select="/Actor/Context/ID/@account"/>
<xsl:param name="new-name" select="/Actor/Context/ID/Card/"/>

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

<xsl:template match="@adj">
  <xsl:choose>
     <xsl:when test=". = $id-to-change">
        <xsl:attribute name="adj">
           <xsl:value-of select="$new-name"/>
        </xsl:attribute>
     </xsl:when>
     <xsl:otherwise>
        <xsl:copy />
     </xsl:otherwise>
   </xsl:choose>
</xsl:template>

</xsl:stylesheet>
C队

考虑使用键通过ID元素的account属性查找元素

<xsl:key name="Context" match="Context/ID" use="@account" />

您说您想将属性复制到SecPlace元素,在这种情况下,您应该有一个与匹配的模板SecPlace,但是您可以添加一个条件以仅与关联Place元素具有匹配项的条件匹配Context/ID(使用键检查)

<xsl:template match="Relative[key('Context', Place/@adj)]/SecPlace">

然后,您可以使用该键复制该属性

<xsl:copy-of select="key('Context', ../Place/@adj)/Card/@val" />

试试这个XSLT

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml" indent="yes"/>
    <xsl:key name="Context" match="Context/ID" use="@account"/>

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

    <xsl:template match="Relative[key('Context', Place/@adj)]/SecPlace">
        <xsl:copy>
            <xsl:copy-of select="key('Context', ../Place/@adj)/Card/@val"/>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

这不是一个愚蠢的问题。确实,通过在XSLT中使用身份模板,您已经有了一个良好的开端。

编辑:在回答您的评论时,如果您实际上要替换zok属性的值,请更改第二个模板以匹配此属性(而不是匹配父SecPlace元素,然后用更新后的值替换为新属性

<xsl:template match="Relative[key('Context', Place/@adj)]/SecPlace/@zok">
    <xsl:attribute name="zok">
        <xsl:value-of select="key('Context', ../../Place/@adj)/Card/@val"/>
    </xsl:attribute>
</xsl:template>

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

XSLT:如果另一个属性匹配,则更改属性值

来自分类Dev

从 xslt/xpath 中的另一个属性值获取一个属性的值

来自分类Dev

XSLT用另一个按属性匹配的文件“替换”值

来自分类Dev

如果对象与另一个对象属性匹配,如何获取对象中的值

来自分类Dev

如何通过更改另一个属性的值来更改一个属性的值?(相关属性)

来自分类Dev

XSLT,当父节点属性与另一个节点的属性值匹配时,对子节点进行转换

来自分类Dev

JavaScript:如果另一个对象在另一个属性中具有相同的值,则更改对象的值

来自分类Dev

XSLT:使用另一个属性的值创建新属性

来自分类Dev

XSLT:使用另一个属性的值创建新属性

来自分类Dev

根据另一个属性约束属性值

来自分类Dev

根据表属性创建与另一个表属性匹配的值数组

来自分类Dev

蚂蚁,从一个属性值到另一个属性值

来自分类Dev

根据另一个属性的值验证一个属性的值

来自分类Dev

XSLT基于另一个值添加属性值

来自分类Dev

如何更改引用另一个对象属性的对象属性的值?

来自分类Dev

更改另一个页面的元素属性

来自分类Dev

从另一个线程更改kivy属性

来自分类Dev

如何从另一个类更改按钮的属性?

来自分类Dev

如何从另一个类更改按钮的属性?

来自分类Dev

从另一个xaml更改xaml按钮的属性

来自分类Dev

当另一个悬停时更改divs属性

来自分类Dev

从类的构造函数中的另一个属性引用一个属性的值

来自分类Dev

如何使用 XSLT 从另一个 XML 文档提供属性值?

来自分类Dev

如果属性已经具有另一个属性,则强制在属性上使用属性

来自分类常见问题

Python:如何根据同一个实例的另一个属性的布尔值自动更改一个实例的属性?

来自分类Dev

CSS将属性值与另一个

来自分类Dev

替换从另一个属性中获取的值

来自分类Dev

如果另一个模型中存在值,则更新模型的属性

来自分类Dev

如果值在另一个线程中,如何设置属性

Related 相关文章

  1. 1

    XSLT:如果另一个属性匹配,则更改属性值

  2. 2

    从 xslt/xpath 中的另一个属性值获取一个属性的值

  3. 3

    XSLT用另一个按属性匹配的文件“替换”值

  4. 4

    如果对象与另一个对象属性匹配,如何获取对象中的值

  5. 5

    如何通过更改另一个属性的值来更改一个属性的值?(相关属性)

  6. 6

    XSLT,当父节点属性与另一个节点的属性值匹配时,对子节点进行转换

  7. 7

    JavaScript:如果另一个对象在另一个属性中具有相同的值,则更改对象的值

  8. 8

    XSLT:使用另一个属性的值创建新属性

  9. 9

    XSLT:使用另一个属性的值创建新属性

  10. 10

    根据另一个属性约束属性值

  11. 11

    根据表属性创建与另一个表属性匹配的值数组

  12. 12

    蚂蚁,从一个属性值到另一个属性值

  13. 13

    根据另一个属性的值验证一个属性的值

  14. 14

    XSLT基于另一个值添加属性值

  15. 15

    如何更改引用另一个对象属性的对象属性的值?

  16. 16

    更改另一个页面的元素属性

  17. 17

    从另一个线程更改kivy属性

  18. 18

    如何从另一个类更改按钮的属性?

  19. 19

    如何从另一个类更改按钮的属性?

  20. 20

    从另一个xaml更改xaml按钮的属性

  21. 21

    当另一个悬停时更改divs属性

  22. 22

    从类的构造函数中的另一个属性引用一个属性的值

  23. 23

    如何使用 XSLT 从另一个 XML 文档提供属性值?

  24. 24

    如果属性已经具有另一个属性,则强制在属性上使用属性

  25. 25

    Python:如何根据同一个实例的另一个属性的布尔值自动更改一个实例的属性?

  26. 26

    CSS将属性值与另一个

  27. 27

    替换从另一个属性中获取的值

  28. 28

    如果另一个模型中存在值,则更新模型的属性

  29. 29

    如果值在另一个线程中,如何设置属性

热门标签

归档