当前位置: 首页 > 知识库问答 >
问题:

通过XSL向现有节点添加新节点

郑理
2023-03-14

我需要在XML中保留很少的值,并且需要通过XSLT添加新的节点。

价值需要保留,新的选项需要添加。

如何实现这一点。下面是我的代码

<?xml version="1.0" encoding="utf-8"?>
<datas>
  <data key="key1">    
    <value>a</value>
    <options>
      <option>a</option>
      <option>b</option>
      <option>c</option>
    </options>
  </data>
  <data key="key2">    
    <value>z</value>
    <options>
      <option>x</option>
      <option>y</option>
      <option>z</option>
    </options>
  </data>
</datas>
<?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"/>
  <xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
  </xsl:template>
  <xsl:template match="datas">
    <datas>
      <data key="key1">        
        <value>
          <xsl:value-of select="/datas/data[key = 'key1']/value" />
        </value>
        <options>
          <option>a</option>
          <option>b</option>
          <option>c</option>
          <option>d</option>
        </options>
      </data>
      <data key="key2">       
        <value>
          <xsl:value-of select="/datas/data[key = 'key2']/value" />
        </value>
        <options>
          <option>x</option>
          <option>y</option>
          <option>z</option>
        </options>
      </data>
    </datas>    
  </xsl:template>
</xsl:stylesheet>

有人能帮忙吗?

谢谢

共有1个答案

逄兴昌
2023-03-14

>

  • 而不是:

    <xsl:value-of select="/datas/data[key = 'key1']/value" />
    

    您需要:

    <xsl:value-of select="/datas/data[@key = 'key1']/value" />
    

    未添加

    <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="data[@key='key1']/options">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
            <option>d</option>
        </xsl:copy>
    </xsl:template>
    
    </xsl:stylesheet>
    

  •  类似资料:
    • 问题内容: 我想向现有的xml节点添加属性。我不想向xml文件添加新元素(新节点),我只想添加新属性。我怎样才能做到这一点? 特别是我尝试了以下代码行: 但是我得到以下异常: 问题答案: 在DOM解析器中,这非常容易。获取您的节点,只需使用此功能。 然后最后更新您的文档。像这样..

    • 我第一次试用Neo4j。我正在使用2.0-RC1社区版。 我已经创建了一些节点: 现在我想在节点之间添加关系。但是,我不想清除使用上面的脚本创建的现有数据库,添加语句并再次运行它。我想向现有节点添加关系。谷歌帮我找到了这个: 这工作得很好(尽管我不理解所有的语法)。但是,我知道这将查找具有用户名属性的任何节点和具有名称属性的任何节点,而不是使用标签来检查它是否具有正确类型的节点。 如何使用标签进行

    • 问题内容: 按照标题,在Jenkins中,如何使用CLI将新的从属节点添加到构建集群中,或者如果没有CLI选项,是否可以使用另一种脚本化方法? 问题答案: 许多人使用Swarm插件来消除实际手动添加从站的需要。当然,您将需要编写swarm代理的安装脚本,但这应该很简单。

    • 我已经创建了一个XSLT,我想知道如何在一组标记之间复制所有节点,并在底部添加另一个标记。我创建了XSLT,它具有确定要添加哪个标记以及应该调用什么的所有逻辑。然而,我现在遇到的问题是,我不能复制所有其他标签了。以下是有关文件: XSLT 输入 电流输出 期望的产出

    • 我正在玩一个链接列表类项目的指针,我不知道如何创建到新节点的链接。我有一个类,它包含像这样的方法来操作数据结构。我希望这些节点是从csv文件中读取的出价。 当我从CSV加载所有数据时,我想 创建一个新的出价 将新的出价传递给函数 设置Bid对象的nextBid指针,并更新链接列表的尾部 我将不胜感激为每个出价对象创建新地址的任何指针,因为现在尾节点只'记得'第一个出价的地址。 我复制了下面的代码,

    • 我正在将XML返回到一个jsp页面。 最终的XML结构如下所示: 的根节点作为向量返回,我使用xtream将其别名为“tasks”,如上图所示。 如何使用XStream实现这一点?我需要使用XSLT文件来转换XML输出吗?完成这一点的最佳方法是什么?