我编写了一个需要拆分字符串的XSL,这很简单,但我发现那时使用XSL的系统只接受v1而我在v2中写了我的xsl。
有问题将其转换为v1。非常感谢任何帮助。
感谢
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:soa="urn:telestream.net:soa:core"
version="2.0">
<xsl:output method="xml" indent="yes" />
<xsl:template match="/">
<soa:Label identifier="5f01d03f-f867-4a57-92e0-19d239a3582d" name="Duration - Timecode to Frames pt2" description="" instance="dc07adf4-79e4-4d33-b740-ece5bc0af991" signature="00000000-0000-0000-0000-000000000000">
<soa:Parameter type="timecode" identifier="82795f2a-5a2e-41ca-b1da-0c35a9c584e4" bindable="True" name="Duration Timecode" enabled="true" disableable="false" optionseditable="false" row="-1" column="-1" columnspan="1">
<xsl:value-of select="normalize-space(/soa:Label/soa:Parameter[1]/text()[1])"/>
<soa:Default>00:00:00:00@29.97</soa:Default>
<soa:IsRequired>false</soa:IsRequired>
</soa:Parameter>
<xsl:variable name="total-frames">
<xsl:analyze-string select="normalize-space(/soa:Label/soa:Parameter[1]/text()[1])"
regex="^(\d+):(\d+):(\d+):(\d+)@(\d+)$">
<xsl:matching-substring>
<xsl:variable name="hours" select="xs:integer(regex-group(1))"/>
<xsl:variable name="minutes" select="xs:integer(regex-group(2))"/>
<xsl:variable name="seconds" select="xs:integer(regex-group(3))"/>
<xsl:variable name="frames" select="xs:integer(regex-group(4))"/>
<xsl:variable name="fps" select="xs:integer(regex-group(5))"/>
<xsl:value-of select="$hours * 60 * 60 * $fps + $minutes * 60 * $fps + $seconds * $frames + $frames"/>
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:variable>
<soa:Parameter type="int32" identifier="ca643595-6cbb-46b4-bf9b-da93c4348a4e" bindable="True" name="Duration Frames" enabled="true" disableable="false" optionseditable="false" row="-1" column="-1" columnspan="1">
<xsl:value-of select="$total-frames"/>
<soa:Default>0</soa:Default>
<soa:IsRequired>false</soa:IsRequired>
</soa:Parameter>
</soa:Label>
答案 0 :(得分:0)
我写了一个需要拆分字符串的XSL
分割字符串实际上非常简单:
给出输入:
<timecode>01:02:03:04@29.97</timecode>
你可以使用:
<xsl:variable name="hours" select="substring-before(timecode, ':')"/>
<xsl:variable name="minutes" select="substring-before(substring-after(timecode, ':'), ':')"/>
<xsl:variable name="seconds" select="substring-before(substring-after(substring-after(timecode, ':'), ':'), ':')"/>
<xsl:variable name="frames" select="substring-before(substring-after(substring-after(substring-after(timecode, ':'), ':'), ':'), '@')"/>
<xsl:variable name="fps" select="substring-after(timecode, '@')"/>
提取各个组件。