Mein aktuelles Stylesheet ist unten. Es sucht nach allen Knoten von <IMFile>
und löscht diese untergeordneten Elemente. Ich würde gerne eine weitere Bedingung hinzufügen, aber ich bin mir nicht sicher, wie ich das machen soll.XSLT: Variable in XML speichern
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- Removes red boxes -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<!-- Strip IMFile elements -->
<xsl:template match="IMFile[@src='@variable']"/>
</xsl:stylesheet>
Also unten sind zwei Abschnitte, die ich betrachten muss. Hauptsächlich muss ich nur wissen, wie man eine Variable bekommt und benutzt. Ich würde gerne in diesem Quellbereich suchen und 1 ID speichern, die verweist, wenn die src="Red_Box.png"
. Und wenden Sie diese Variable auf meinen Code an (ersetzt die @ Variable). Diese ID gibt das @src
Attribut des Elements <IMFile>
wieder.
<SourceBin id="3" >
<Source id="4" src="something.trec" lastMod="20161202T191501" rect="(0,0,1920,1080)">
<SourceTrack range="(0,9463)" type="0" editRate="30/1" trackRect="(0,0,1920,1080)" sampleRate="0/1" bitDepth="0" numChannels="0" filename="something.trec.trec!Strack0.tsc2" metaData="something.trec;" />
</Source>
<Source id="5" src="screenshot_449.png" lastMod="20161202T191503" rect="(0,0,1912,1078)" >
<SourceTrack range="(0,1)" type="1" editRate="10000000/1" trackRect="(0,0,1912,1078)" sampleRate="0/1" bitDepth="24" numChannels="0" filename="" metaData="" />
</Source>
<Source id="6" src="Red-Box.png" lastMod="20161202T191503" rect="(0,0,1600,1200)" >
<SourceTrack range="(0,1)" type="1" editRate="10000000/1" trackRect="(0,0,1600,1200)" sampleRate="0/1" bitDepth="32" numChannels="0" filename="" metaData="" />
</Source>
</SourceBin>
<IMFile id="6907" start="754" duration="8" scalar="1/1" mediaStart="0/1" mediaDuration="1/1" trackNumber="0" src="5" trimStartSum="67/1" >
<IMFile id="6907" start="754" duration="8" scalar="1/1" mediaStart="0/1" mediaDuration="1/1" trackNumber="0" src="6" trimStartSum="67/1" >
<IMFile id="6907" start="754" duration="8" scalar="1/1" mediaStart="0/1" mediaDuration="1/1" trackNumber="0" src="6" trimStartSum="67/1" >
Wenn ich das über 3 IMFile ich es wollen würde, sehen, dass zwei von ihnen die src verwenden = „6“ (die die ID des Quell Kind ist, das Red_Box.png verwendet). Und führen sie in beiden Systemen gelöscht: (!)
<IMFile id="6907" start="754" duration="8" scalar="1/1" mediaStart="0/1" mediaDuration="1/1" trackNumber="0" src="5" trimStartSum="67/1" >
Was möchten Sie den gewünschten Ausgang aus? Und nebenbei, wo sind die 'Callout'-Elemente in Ihrem XML, die Sie herausfiltern möchten? A [mcve] wäre hilfreich (um Ihre Frage zu beantworten). – zx485