<?xml version="1.0" encoding="utf-8"?> <Section number="1" type="Part"> <Event sense="Visual" type="Graphics"> <Content displayName="Title Sequence" renderValue="<span style='text-transform: uppercase'>TITLE SEQUENCE</span>" startOffset="900000" endOffset="0" ownRow="1" col="2"/> </Event> <Event sense="Visual" type="Graphics"> <Content displayName="Caption" renderValue="<span style='font-weight: bold; text-transform: uppercase'>CAPTION</span>" speakerName="" startTC="GR1" type="Caption" startOffset="900587" col="1"> <Fragment>GRAPHIC 1 AFTER TS and BEFORE AUDIO NOT OWN</Fragment> </Content> </Event> <Event sense="Audio" type="PostEditDialogue"> <Content displayName="After Filming" renderValue="After Filming" speakerName="<span style='font-weight: bold; text-transform: uppercase'>Narrator</span>" speakerRole="Narrator" startOffset="908000"> <Fragment>DIALOGUE 1 AFTER GRAPHIC 1 BEFORE GRAPHIC 2</Fragment> </Content> </Event> <Event sense="Visual" type="Graphics"> <Content displayName="Caption" renderValue="<span style='font-weight: bold; text-transform: uppercase'>CAPTION</span>" speakerName="" startTC="GR2" type="Caption" startOffset="909999" col="1" prime="yes"> <Fragment>GRAPHIC 2 AFTER DIALOGUE 1 and BEFORE GRAPHIC 3 NOT OWN</Fragment> </Content> </Event> <Event sense="Visual" type="Graphics"> <Content displayName="Caption" renderValue="<span style='font-weight: bold; text-transform: uppercase'>CAPTION</span>" speakerName="" startTC="GR3" type="Caption" startOffset="910000" col="1"> <Fragment>GRAPHIC 3 AFTER GRAPHIC 2 and BEFORE GRAPHIC 3A NOT OWN</Fragment> </Content> </Event> <Event sense="Visual" type="Graphics"> <Content displayName="Caption" renderValue="<span style='font-weight: bold; text-transform: uppercase'>CAPTION</span>" speakerName="" startTC="GR3" type="Caption" startOffset="910500" col="1"> <Fragment>GRAPHIC 3A AFTER GRAPHIC 3 and BEFORE GRAPHIC DIALOGUE 2 NOT OWN</Fragment> </Content> </Event> <Event sense="Audio" type="PostEditDialogue"> <Content displayName="After Filming" renderValue="After Filming" speakerName="<span style='font-weight: bold; text-transform: uppercase'>Narrator</span>" startTC="D2" type="AfterFilming" startOffset="911000"> <Fragment>DIALOGUE 2 AFTER GRAPHIC 3 BEFORE AUDIO 3</Fragment> </Content> </Event> <Event sense="Audio" type="PostEditDialogue"> <Content displayName="After Filming" renderValue="After Filming" speakerName="<span style='font-weight: bold; text-transform: uppercase'>Narrator</span>" startTC="D3" type="AfterFilming" startOffset="912000"> <Fragment>DIALOGUE 3 AFTER DIALOGUE 2 BEFORE GRAPHIC 4</Fragment> </Content> </Event> <Event sense="Visual" type="Graphics"> <Content displayName="Caption" renderValue="<span style='font-weight: bold; text-transform: uppercase'>Narrator</span>" speakerName="" startTC="GR2" type="Caption" startOffset="913000" col="1"> <Fragment>GRAPHIC 4 AFTER DIALOGUE 3 and BEFORE GRAPHIC 5 NOT OWN</Fragment> </Content> </Event> <Event sense="Visual" type="Graphics"> <Content displayName="Caption" renderValue="<span style='font-weight: bold; text-transform: uppercase'>CAPTION</span>" speakerName="" startTC="GR5" type="Caption" startOffset="914000" col="1" ownRow="1"> <Fragment>GRAPHIC 5 AFTER GRAPHIC 4 LAST -- **OWN**</Fragment> </Content> </Event> </Section> 
I am already looping through this XML at the level of /Section/Event/Content. Using xpath for each Content event I need to select the all the successive (following) content elements until I meet an element that meets the following condition:
The element contains the attribute ownRow="1" or they are a descendant of an event with the attribute sense=Audio".
I have tried and tried without success... My closest attempt:
using ns1[count(.| ns2)=count(ns2)]
ns1 = following::Event
ns2 = following::Event/Content[not(@ownRow=1) and not(following::Event[1][@sense='Audio'])]/preceding::Event
Which makes this:
following::Event[count(.| following::Event/Content[not(@ownRow=1) and not(following::Event[1][@sense='Audio'])]/preceding::Event)=count(following::Event/Content[not(@ownRow=1) and not(following::Event[1][@sense='Audio'])]/preceding::Event)]/Content/@renderValue"/>"
But it does not pick up the 4th CAPTION - can't figure out why?
 
No comments:
Post a Comment