I'm having an issue extracting information from one XML and embedding it into another XML. The source XML comes from a Panasonic P2 video camera. Each clip shot on the camera produces an XML sidecar. I'd like to extract a few variables from the P2 XML and embed them into the destination XML - formatted for use with Telestream Vantage.
I've built a XSLT using the destination (Vantage) XML as the template, and am embedding my source variables using <xsl:value-of...
statements. This works fine in other instances of needing to build similar XSLTs, however fails with this particular source XML from Panasonic P2 cameras.
Here's the source "Panasonic P2" XML:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<P2Main xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:schemas-Professional-Plug-in:P2:ClipMetadata:v3.0">
<ClipContent>
<ClipName>0001Y1</ClipName>
<GlobalClipID>060A2B340101010501010D431300000021E314B9117805CB0080458250D62215</GlobalClipID>
<Duration>2148</Duration>
<EditUnit>1001/30000</EditUnit>
<Relation>
<OffsetInShot>93840</OffsetInShot>
<GlobalShotID>060A2B340101010501010D4313000000C1731FB0117805EC0080458250D62215</GlobalShotID>
<Connection>
<Top>
<ClipName>0005CE</ClipName>
<GlobalClipID>060A2B340101010501010D431300000069721FB0117805C70080458250D62215</GlobalClipID>
<P2SerialNo.>ACZ15I0318</P2SerialNo.>
</Top>
<Previous>
<ClipName>001555</ClipName>
<GlobalClipID>060A2B340101010501010D4313000000665D92B8117805DF0080458250D62215</GlobalClipID>
<P2SerialNo.>ACZ15I0318</P2SerialNo.>
</Previous>
</Connection>
</Relation>
<EssenceList>
<Video ValidAudioFlag="false">
<VideoFormat>MXF</VideoFormat>
<Codec>DV100_1080/59.94i</Codec>
<FrameRate DropFrameFlag="true">59.94i</FrameRate>
<StartTimecode>12:10:53:29</StartTimecode>
<StartBinaryGroup>230F6007</StartBinaryGroup>
<AspectRatio>16:9</AspectRatio>
<VideoIndex>
<StartByteOffset>32768</StartByteOffset>
<DataSize>1031040000</DataSize>
</VideoIndex>
</Video>
<Audio>
<AudioFormat>MXF</AudioFormat>
<SamplingRate>48000</SamplingRate>
<BitsPerSample>16</BitsPerSample>
<AudioIndex>
<StartByteOffset>32768</StartByteOffset>
<DataSize>6880472</DataSize>
</AudioIndex>
</Audio>
<Audio>
<AudioFormat>MXF</AudioFormat>
<SamplingRate>48000</SamplingRate>
<BitsPerSample>16</BitsPerSample>
<AudioIndex>
<StartByteOffset>32768</StartByteOffset>
<DataSize>6880472</DataSize>
</AudioIndex>
</Audio>
<Audio>
<AudioFormat>MXF</AudioFormat>
<SamplingRate>48000</SamplingRate>
<BitsPerSample>16</BitsPerSample>
<AudioIndex>
<StartByteOffset>32768</StartByteOffset>
<DataSize>6880472</DataSize>
</AudioIndex>
</Audio>
<Audio>
<AudioFormat>MXF</AudioFormat>
<SamplingRate>48000</SamplingRate>
<BitsPerSample>16</BitsPerSample>
<AudioIndex>
<StartByteOffset>32768</StartByteOffset>
<DataSize>6880472</DataSize>
</AudioIndex>
</Audio>
</EssenceList>
<ClipMetadata>
<UserClipName>060A2B340101010501010D431300000021E314B9117805CB0080458250D62215</UserClipName>
<DataSource>SHOOTING</DataSource>
<Access>
<CreationDate>2017-02-27T17:58:10+00:00</CreationDate>
<LastUpdateDate>2017-02-27T17:59:22+00:00</LastUpdateDate>
</Access>
<Device>
<Manufacturer>Panasonic</Manufacturer>
<SerialNo.>F8TS00022</SerialNo.>
<ModelName>AG-HPX500P</ModelName>
</Device>
<Shoot>
<StartDate>2017-02-27T17:58:11+00:00</StartDate>
<EndDate>2017-02-27T17:59:22+00:00</EndDate>
</Shoot>
<Thumbnail>
<FrameOffset>0</FrameOffset>
<ThumbnailFormat>BMP</ThumbnailFormat>
<Width>80</Width>
<Height>60</Height>
</Thumbnail>
</ClipMetadata>
</ClipContent>
</P2Main>
Here's my stylesheet.
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:soa="urn:telestream.net:soa:core" exclude-result-prefixes="soa" >
<xsl:output method="xml" indent="yes" encoding="utf-8" />
<xsl:template match="/">
<soa:Label>
<soa:Parameter type="string" identifier="089f7368-6930-47d6-9083-4344735249b9" bindable="True" name="P2 Clip Name" enabled="true" enabledinvariants="true" disableable="false" browsable="true" optionseditable="false" row="-1" column="-1" columnspan="1">
<xsl:value-of select="P2Main/ClipContent/ClipName/text()"/>
<soa:IsRequired>false</soa:IsRequired>
</soa:Parameter>
<soa:Parameter type="string" identifier="ac49728d-879d-4702-824e-2d33065e6e9f" bindable="True" name="P2 Offset" enabled="true" enabledinvariants="true" disableable="false" browsable="true" optionseditable="false" row="-1" column="-1" columnspan="1">
<xsl:value-of select="P2Main/ClipContent/Relation/OffsetInShot/text()"/>
<soa:IsRequired>false</soa:IsRequired>
</soa:Parameter>
<soa:Parameter type="string" identifier="68ef76d9-609f-4376-a5fe-ded6ff6c92de" bindable="True" name="P2 top clip" enabled="true" enabledinvariants="true" disableable="false" browsable="true" optionseditable="false" row="-1" column="-1" columnspan="1">
<xsl:value-of select="P2Main/ClipContent/Relation/Connection/Top/ClipName/text()"/>
<soa:IsRequired>false</soa:IsRequired>
</soa:Parameter>
<soa:Parameter type="string" identifier="0f33fea3-7807-4c8a-b70a-0be05900c74f" bindable="True" name="P2 next clip" enabled="true" enabledinvariants="true" disableable="false" browsable="true" optionseditable="false" row="-1" column="-1" columnspan="1">
<xsl:value-of select="P2Main/ClipContent/Relation/Connection/Next/ClipName/text()"/>
<soa:IsRequired>false</soa:IsRequired>
</soa:Parameter>
<soa:Parameter type="string" identifier="c4444524-189d-4117-9d53-a8ecd0518014" bindable="True" name="P2 previous clip" enabled="true" enabledinvariants="true" disableable="false" browsable="true" optionseditable="false" row="-1" column="-1" columnspan="1">
<xsl:value-of select="P2Main/ClipContent/Relation/Connection/Previous/ClipName/text()"/>
<soa:IsRequired>false</soa:IsRequired>
</soa:Parameter>
</soa:Label>
</xsl:template>
</xsl:stylesheet>
The only way make this parse correctly (so far) is if I remove xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:schemas-Professional-Plug-in:P2:ClipMetadata:v3.0" from the <P2Main>
header, but that won't work because I'd have to do this with every P2 XML file automatically.
Any ideas as to what I'm doing wrong/missing?
Thanks