gpt4 book ai didi

xslt - 使用 XSL/XPath 匹配具有给定属性和子节点的任何名称的节点

转载 作者:行者123 更新时间:2023-12-03 17:18:56 25 4
gpt4 key购买 nike

我正在尝试使用 XPath/XSLT 将节点添加到满足某些要求的现有节点:

  • 该节点有一个属性“id”
  • 该节点有一个名为“Type”的子节点,包含给定的文本,例如“标识符”

  • 在要匹配的 XML 中:
      <SomeRandomNode>
    <Type>SomeRandomType</Type>
    <Child>
    <Count type="int32">2</Count>
    <!-- This node should be matched -->
    <Key id="5">
    <Type>Identifier</Type>
    <SomeValue type="string">Hello</SomeValue>
    <SomeOtherValue type="string">World</SomeOtherValue>
    </Key>
    </Child>
    </SomeRandomNode>
    </Project>

    我很难为此编写匹配表达式,我的“最佳”尝试是:
    <xsl:template match="*[@id][.//Typename='Identifier']"> 
    <xsl:copy>
    <xsl:attribute name="id">
    <xsl:value-of select="@id"/>
    </xsl:attribute>

    <!-- Copy nodes -->
    <xsl:copy-of select="Type" />
    <xsl:copy-of select="SomeValue" />
    <xsl:copy-of select="SomeOtherValue" />
    <!-- Add new -->
    <NewValue type="string">This node was added</NewValue>
    </xsl:copy>
    </xsl:template>

    如果我用节点名替换 * 它工作正常,但我需要匹配任何名称的节点。

    最佳答案

    *应该可以正常工作。但是您正在匹配元素 Typename而不是 Type在您的示例中,请尝试以下操作:

    *[@id][Type='Identifier']

    或者:
    *[@id and (Type='Identifier')]

    关于xslt - 使用 XSL/XPath 匹配具有给定属性和子节点的任何名称的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5962921/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com