首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML:将所有值"-1“替换为数字"9”、"10“、"11”等。

XML:将所有值"-1“替换为数字"9”、"10“、"11”等。
EN

Stack Overflow用户
提问于 2022-06-19 20:46:45
回答 1查看 38关注 0票数 0

我有以下XML示例:

代码语言:javascript
复制
 <Song FilePath="D:\Sync\DJ\Library2\Rudimental, Ella Eyre - Waiting All Night (feat. Ella Eyre).mp3" FileSize="11720042" Flag="25165826">
  <Comment>(key shift) E7|Vm___|32b</Comment>
  <Poi Name="E6|Vm___|32b" Pos="0.831464" Num="1" Color="4280869396" Type="cue" />
  <Poi Name="E4|Vmk__|64b" Pos="28.259464" Num="2" Color="4280869396" Type="cue" />
  <Poi Name="E2|Vm___|64b" Pos="170.888464" Num="3" Color="4294840954" Type="cue" />
  <Poi Name="E7|Vm___|32b" Pos="280.602464" Num="4" Color="4294840954" Type="cue" />
  <Poi Pos="0.458594" Type="automix" Point="realStart" />
  <Poi Pos="11.80" Type="automix" Point="fadeStart" />
  <Poi Name="E6|Vmk__|32b" Pos="11.802812" Num="-1" Color="4294934272" Type="cue" />
  <Poi Pos="11.802812" Type="beatgrid" />
  <Poi Pos="50.202268" Type="automix" Point="cutStart" />
  <Poi Name="E7|VmKhb|96b" Pos="50.202813" Num="-1" Color="4294902015" Type="cue" />
  <Poi Name="E7|VmKhb|128b" Pos="83.202812" Num="-1" Color="4288020735" Type="cue" />
  <Poi Name="E7|VmKhb|128b" Pos="127.002812" Num="-1" Color="4294902015" Type="cue" />
  <Poi Name="Break 1" Pos="170.885805" Type="remix" />
  <Poi Name="E6|Vmk__|64b" Pos="192.831388" Num="-1" Color="4294934272" Type="cue" />
  <Poi Name="End Break 1" Pos="194.209524" Type="remix" />
  <Poi Name="E7|VmKhb|64b" Pos="214.774246" Num="-1" Color="4288020735" Type="cue" />
  <Poi Name="E7|VmKhb|128b" Pos="236.717103" Num="-1" Color="4294902015" Type="cue" />
  <Poi Pos="277.687438" Type="automix" Point="cutEnd" />
  <Poi Pos="289.90" Type="automix" Point="fadeEnd" />
  <Poi Pos="291.927075" Type="automix" Point="realEnd" />
 </Song>        
 <Song FilePath="D:\Sync\DJ\Library2\Dennis Ferrer - Hey Hey (Riva Starr Paradise Garage Remix).mp3" FileSize="6295140" Flag="25165824">
  <Poi Pos="0.011610" Type="automix" Point="realStart" />
  <Poi Pos="0.011610" Type="automix" Point="fadeStart" />
  <Poi Name="E6|_m_h_|16b" Pos="0.016599" Num="1" Color="4278255360" Type="cue" />
  <Poi Pos="7.635646" Type="beatgrid" />
  <Poi Name="E7|Vmkhb|64b" Pos="7.635646" Num="-1" Color="4288020735" Type="cue" />
  <Poi Pos="8.587029" Type="automix" Point="cutStart" />
  <Poi Pos="10.492608" Type="automix" Point="tempoStart" />
  <Poi Name="E7|Vmkhb|96b" Pos="38.111837" Num="-1" Color="4294902015" Type="cue" />
  <Poi Name="E7|_Mkhb|48b" Pos="83.826123" Num="-1" Color="4294934272" Type="cue" />
  <Poi Name="E7|Vmkhb|32b" Pos="106.683266" Num="-1" Color="4288020735" Type="cue" />
  <Poi Name="E7|Vmkh_|48b+E7|__kh_|16b" Pos="121.921361" Num="4" Color="4294901760" Type="cue" />
  <Poi Pos="150.015420" Type="automix" Point="cutEnd" />
  <Poi Pos="152.150" Type="automix" Point="fadeEnd" />
  <Poi Pos="153.332971" Type="automix" Point="realEnd" />
  <Poi Name="Break 1" Pos="121.444717" Type="remix" />
  <Poi Name="End Break 1" Pos="144.777868" Type="remix" />
 </Song>  

我想将Num="-1“的所有实例替换为从9开始的编号值,在每个宋体的实例中从9重新开始。因此,结果如下:

代码语言:javascript
复制
 <Song FilePath="D:\Sync\DJ\Library2\Rudimental, Ella Eyre - Waiting All Night (feat. Ella Eyre).mp3" FileSize="11720042" Flag="25165826">
  <Comment>(key shift) E7|Vm___|32b</Comment>
  <Poi Name="E6|Vm___|32b" Pos="0.831464" Num="1" Color="4280869396" Type="cue" />
  <Poi Name="E4|Vmk__|64b" Pos="28.259464" Num="2" Color="4280869396" Type="cue" />
  <Poi Name="E2|Vm___|64b" Pos="170.888464" Num="3" Color="4294840954" Type="cue" />
  <Poi Name="E7|Vm___|32b" Pos="280.602464" Num="4" Color="4294840954" Type="cue" />
  <Poi Pos="0.458594" Type="automix" Point="realStart" />
  <Poi Pos="11.80" Type="automix" Point="fadeStart" />
  <Poi Name="E6|Vmk__|32b" Pos="11.802812" Num="-1" Color="4294934272" Type="cue" />
  <Poi Pos="11.802812" Type="beatgrid" />
  <Poi Pos="50.202268" Type="automix" Point="cutStart" />
  <Poi Name="E7|VmKhb|96b" Pos="50.202813" Num="9" Color="4294902015" Type="cue" />
  <Poi Name="E7|VmKhb|128b" Pos="83.202812" Num="10" Color="4288020735" Type="cue" />
  <Poi Name="E7|VmKhb|128b" Pos="127.002812" Num="11" Color="4294902015" Type="cue" />
  <Poi Name="Break 1" Pos="170.885805" Type="remix" />
  <Poi Name="E6|Vmk__|64b" Pos="192.831388" Num="12" Color="4294934272" Type="cue" />
  <Poi Name="End Break 1" Pos="194.209524" Type="remix" />
  <Poi Name="E7|VmKhb|64b" Pos="214.774246" Num="13" Color="4288020735" Type="cue" />
  <Poi Name="E7|VmKhb|128b" Pos="236.717103" Num="14" Color="4294902015" Type="cue" />
  <Poi Pos="277.687438" Type="automix" Point="cutEnd" />
  <Poi Pos="289.90" Type="automix" Point="fadeEnd" />
  <Poi Pos="291.927075" Type="automix" Point="realEnd" />
 </Song>        
 <Song FilePath="D:\Sync\DJ\Library2\Dennis Ferrer - Hey Hey (Riva Starr Paradise Garage Remix).mp3" FileSize="6295140" Flag="25165824">
  <Poi Pos="0.011610" Type="automix" Point="realStart" />
  <Poi Pos="0.011610" Type="automix" Point="fadeStart" />
  <Poi Name="E6|_m_h_|16b" Pos="0.016599" Num="1" Color="4278255360" Type="cue" />
  <Poi Pos="7.635646" Type="beatgrid" />
  <Poi Name="E7|Vmkhb|64b" Pos="7.635646" Num="9" Color="4288020735" Type="cue" />
  <Poi Pos="8.587029" Type="automix" Point="cutStart" />
  <Poi Pos="10.492608" Type="automix" Point="tempoStart" />
  <Poi Name="E7|Vmkhb|96b" Pos="38.111837" Num="10" Color="4294902015" Type="cue" />
  <Poi Name="E7|_Mkhb|48b" Pos="83.826123" Num="11" Color="4294934272" Type="cue" />
  <Poi Name="E7|Vmkhb|32b" Pos="106.683266" Num="12" Color="4288020735" Type="cue" />
  <Poi Name="E7|Vmkh_|48b+E7|__kh_|16b" Pos="121.921361" Num="4" Color="4294901760" Type="cue" />
  <Poi Pos="150.015420" Type="automix" Point="cutEnd" />
  <Poi Pos="152.150" Type="automix" Point="fadeEnd" />
  <Poi Pos="153.332971" Type="automix" Point="realEnd" />
  <Poi Name="Break 1" Pos="121.444717" Type="remix" />
  <Poi Name="End Break 1" Pos="144.777868" Type="remix" />
 </Song>  

我不是开发人员,我更喜欢在Notepad++中使用Notepad++的解决方案

我能够使用Notepad++找到实例,但我不知道如何计数它们并通过增量值来替换它们。

非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2022-06-19 21:47:00

在XSLT3.0中:

代码语言:javascript
复制
<xsl:transform version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:mode on-no-match="shallow-copy"/>
  <xsl:template match="Poi/@Num[.='-1']">
    <xsl:attribute name="Num">
      <xsl:number select=".." level="single" count="Poi[@Num='-1']"
         start-at="9"/>
    </xsl:attribute>
  </xsl:template>
</xsl:transform>   

甚至不要考虑使用正则表达式。这份工作的工具不对。

若要与早期版本的XSLT一起使用:

(a)用标识模板规则替换xsl:mode声明

(b)修改xsl:number指令:(i)代替select属性,使用周围的xsl:for-each设置上下文项,(ii)代替start-at,在变量中捕获结果并向结果添加8。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72680243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档