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

XSL在最后一个元素出现时将一个级别的元素移到另一个级别的元素中

樊桐
2023-03-14

给定输入的XML数据:

<Report_Entry>
    <Time_Off_Type_Group>
        <Time_Off_Type Descriptor="Sickness Full" />
    </Time_Off_Type_Group>
    <Time_Off_Type_Group>
        <Time_Off_Type Descriptor="Sickness Part" />
    </Time_Off_Type_Group>
    <Time_Off_Entry_ID>2d90199913fa9fae8</Time_Off_Entry_ID>
    <Request_or_Correction>Time Off Request</Request_or_Correction>
</Report_Entry>

因此,我期望通过以下条件输出数据:“for-eachTime_Off_Type_GroupTime_Off_Entry_IDRequest_or_CorrectionTime_Off_Type_Group”

输出示例:

<Report_Entry>
    <Time_Off_Type_Group>
        <Time_Off_Type Descriptor="Sickness Full" />
        <Time_Off_Entry_ID>2d90199913fa9fae8</Time_Off_Entry_ID>
        <Request_or_Correction>Time Off Request</Request_or_Correction>
    </Time_Off_Type_Group>
    <Time_Off_Type_Group>
        <Time_Off_Type Descriptor="Sickness Part" />
        <Time_Off_Entry_ID>2d90199913fa9fae8</Time_Off_Entry_ID>
        <Request_or_Correction>Time Off Request</Request_or_Correction>
    </Time_Off_Type_Group>
</Report_Entry>

共有2个答案

田焕
2023-03-14

或简短地:

<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:template match="/Report_Entry">
    <xsl:variable name="common" select="Time_Off_Entry_ID | Request_or_Correction" />
    <xsl:copy>
        <xsl:for-each select="Time_Off_Type_Group">
            <xsl:copy>
                <xsl:copy-of select="* | $common"/>
            </xsl:copy>
        </xsl:for-each>
    </xsl:copy>
</xsl:template>

</xsl:stylesheet>
糜凯泽
2023-03-14

认为模板不适用于每个,因此为将同级复制为子级的Time\u Off\u Type\u组元素编写一个模板,并确保默认的idendity复制不适用于这些同级:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="2.0">

  <xsl:output indent="yes"/>

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

  <xsl:template match="Time_Off_Type_Group">
      <xsl:copy>
          <xsl:copy-of select="*, ../(* except Time_Off_Type_Group)"/>
      </xsl:copy>
  </xsl:template>

  <xsl:template match="Report_Entry/*[not(self::Time_Off_Type_Group)]"/>

</xsl:stylesheet>

https://xsltfiddle.liberty-development.net/bEzkTcn

 类似资料:
  • 问题内容: 我想将一个DIV元素移到另一个元素中。例如,我要移动此对象(包括所有子对象): 到这个: 这样我有: 问题答案: 曾经尝试过普通的JavaScript … 吗?

  • 问题内容: 我想将一个DIV元素移到另一个元素中。例如,我要移动此对象(包括所有子对象): 到这个: 这样我有: 问题答案: 曾经尝试过普通的JavaScript … 吗?

  • 问题内容: 我在页面上有以下HTML代码: 在我中,我有以下选择器来设置元素的样式。上面的HTML代码只是整个代码的一小部分;有更多的包裹属于一个shadowbox: 因此,我的元素样式正确,但是我也想在HTML中设置标签样式。 CSS选择器可能吗?如果是的话,我该怎么做? 问题答案: 这称为相邻的兄弟选择器。

  • 问题内容: 我已经看过其他几个问题,但似乎无法弄清楚它们中的任何一个,所以这是我的问题,我想要一个div或span,当您将鼠标悬停在它上面时,就会出现一个区域,就像是一滴水下。 例如我有一个div,我想将鼠标悬停在上面,并让它显示有关我悬停的项目的一些信息 但这似乎不起作用,我不知道为什么…,如果有办法在CSS中做到这一点,我想知道,但是我想要任何和所有建议。 问题答案: 仅当隐藏的div是用于悬

  • 本文向大家介绍JavaScript数组中的第一个元素和最后一个元素?,包括了JavaScript数组中的第一个元素和最后一个元素?的使用技巧和注意事项,需要的朋友参考一下 数组是一组元素。每个元素都有其自己的 索引值。我们可以使用这些索引访问任何元素。但是,对于最后一个元素,直到知道数组中存在的元素数量,我们才知道索引。在这种情况下,我们必须使用逻辑。让我们简要地讨论这些细节。 访问第一个元素 因

  • 问题内容: 是否可以在CSS中选择多个具有某个特定类,id等父的元素?例如: 如果不是,是否有办法选择该元素的所有子元素? 问题答案: 是否可以在CSS中选择多个具有某个特定类,id等父的元素? 当前,不幸的是,并非没有复制整个父选择器并指定所有后代,而是1: 直到选择器3最终确定后,他们才提出了伪类表示法来进行此操作,直到最近,基本实现才开始出现。 简而言之,现在已成为标准的伪类称为。在遥远的将