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

将具有X个元素的一个节点拆分为具有其中一个元素的X个节点

方野
2023-03-14
<Item>
  <stockcode>XXX1</stockcode>
  <vehicle>Bentley</vehicle>
  <model>Continental GT (2006-)</model>
  <model>Continental Flying Spur (2006-)</model>
  <width>9</width>
  <wheel_size>20</wheel_size>  
  <offset>40</offset>
  <bolt_pattermn>5x112</bolt_pattermn>
  <brand>AEZ</brand>
  <Velg_ID>AEZ Myta</Velg_ID>
  <kit1>DK-ZJAE x1</kit1>
</Item>
<Item>
  <stockcode>XXX1</stockcode>
  <vehicle>Bentley</vehicle>
  <model>Continental GT (2006-)</model>
  <width>9</width>
  <wheel_size>20</wheel_size>    
  <offset>40</offset>
  <bolt_pattermn>5x112</bolt_pattermn>
  <brand>AEZ</brand>
  <Velg_ID>AEZ Myta</Velg_ID>
  <kit1>DK-ZJAE x1</kit1>
  <qty_available>8.00000000</qty_available>
  <price>174.00</price>
  <picture>41010</picture>
  <pkpcena>195.4999</pkpcena>
</Item>
<Item>
  <stockcode>XXX1</stockcode>
  <vehicle>Bentley</vehicle>
  <model>Continental Flying Spur (2006-)</model>
</Item>

共有1个答案

楚俊逸
2023-03-14

这样就行了:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>
  <xsl:strip-space elements="*"/>

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

  <xsl:template match="/">
    <root>
      <xsl:apply-templates select="//model" mode="split" />
    </root>
  </xsl:template>

  <xsl:template match="model" mode="split">
    <xsl:apply-templates select="..">
      <xsl:with-param name="currentModel" select="." />
    </xsl:apply-templates>
  </xsl:template>

  <xsl:template match="Item">
    <xsl:param name="currentModel" />

    <xsl:copy>
      <xsl:apply-templates
         select="@* | node()[not(self::model)] | $currentModel" />
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>

应用于示例输入时,将产生:

<root>
  <Item>
    <stockcode>XXX1</stockcode>
    <vehicle>Bentley</vehicle>
    <model>Continental GT (2006-)</model>
    <width>9</width>
    <wheel_size>20</wheel_size>
    <offset>40</offset>
    <bolt_pattermn>5x112</bolt_pattermn>
    <brand>AEZ</brand>
    <Velg_ID>AEZ Myta</Velg_ID>
    <kit1>DK-ZJAE x1</kit1>
  </Item>
  <Item>
    <stockcode>XXX1</stockcode>
    <vehicle>Bentley</vehicle>
    <model>Continental Flying Spur (2006-)</model>
    <width>9</width>
    <wheel_size>20</wheel_size>
    <offset>40</offset>
    <bolt_pattermn>5x112</bolt_pattermn>
    <brand>AEZ</brand>
    <Velg_ID>AEZ Myta</Velg_ID>
    <kit1>DK-ZJAE x1</kit1>
  </Item>
</root>

下面是一个实现,我用Dimitre技术中的一些指针缩短了我的上述方法:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="model">
    <xsl:apply-templates select=".." mode="gen">
      <xsl:with-param name="currentModel" select="." />
    </xsl:apply-templates>
  </xsl:template>

  <xsl:template match="@* | node()" mode="gen">
    <xsl:param name="currentModel" select="/.." />

    <xsl:copy>
      <xsl:apply-templates
         select="@* | node()[not(self::model)] | $currentModel" 
         mode="gen" />
    </xsl:copy>
  </xsl:template>
  <xsl:template match="text()" />
</xsl:stylesheet>
 类似资料:
  • 我在Wordpress和Visual Composer一起工作,我有一个切换容器。基本上,我点击每个选项卡,下面的内容就会发生变化。我想通过CSS为每个选项卡分配一个不同的图像作为背景。但是,我已经实现了这一点,因为每个选项卡都有相同的类名(由visual composer赋予它),所以图像是相同的。我需要弄清楚如何给每个选项卡一个唯一的id,这样我就可以给每个选项卡一个自己的背景图像--但是由于

  • 在Java中,我们能否以某种方式将流分成不超过N个元素的子流?例如 按两个流拆分的解决方案仅对2个流是正确的,对于N个流也是如此,这将是非常丑陋和只写的。

  • 我成功地做到了这一点,但是以一种非常规的方式。在我的recyclerView适配器中,我对第一个元素使用了一个不同的viewHolder,一个更大的元素。这将是一个很好的解决方案,但第二个元素将低于第一个元素。所以我做了一个技巧,给recyclerView一个与第一个元素相同的固定高度,这样第一个元素和第二个元素就会重叠,我只需要让第二个元素的可见性消失。 但我并不特别喜欢这种方法。有人有更好的主

  • Spring能做那样的事吗?当它只映射一件事时,我让它很容易工作。例如: @RequestMapping(“Hello-World”) 工作并将匹配/hello-world.do,/anything/hello-world.do,但我的问题是,如果hello-world位于/blog路径中,我将只匹配hello-world,并且每当我使用类似: 这看起来应该可以工作(这是我唯一的请求映射),但是:

  • 如果你有一个列表=1,3,5,7,9,... 如果你试图找到列表中的前一个元素(即[t-1],第三个元素是3,即5之前的那个元素),那么这个符号与得到比该元素少一个l(即5-1=4)有什么不同 我有一个增长率的列表,我想要昨天的数据,但我得到的数据总是比今天的少 我认为最后一行的x-1才是问题所在。有什么想法吗?谢谢