Schéma XML de référence pour la CPL : CPL-ST429-7-CompositionPlaylistType.xsd
$ xmllint --noout --schema CPL-ST429-7-CompositionPlaylistType.xsd CPL.xml
CPL.xml validates
Comme pour la PKL, CPL va intégrer les deux imports XSD de base (XML et Signature).
Avec xmllint :
$ xmllint --xpath '//*[local-name()="CompositionPlaylist"]/*[local-name()="Id"]/text()' CPL.xml
urn:uuid:d2e32d20-1f85-4d86-b09f-2ee40ac097a0
Avec du shell - version courte :
$ grep -oE '<Id>urn:uuid:[A-Za-z0-9-]+</Id>' CPL.xml | head -n1 | awk -F'<|>' '{ print $3 }'
urn:uuid:d2e32d20-1f85-4d86-b09f-2ee40ac097a0
Avec du shell - version longue :
$ grep -oE '<Id>urn:uuid:[A-Za-z0-9]{8}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{12}</Id>' CPL.xml | head -n1 | awk -F'<|>' '{ print $3 }'
urn:uuid:d2e32d20-1f85-4d86-b09f-2ee40ac097a0
Avec Python :
>>> from lxml import etree
>>> with open("CPL.xml", "rb") as xml:
tree = etree.fromstring(
text = xml.read()
)
tree.xpath("/*[local-name()='CompositionPlaylist']/*[local-name()='Id']/text()")
[urn:uuid:d2e32d20-1f85-4d86-b09f-2ee40ac097a0]
Avec xmllint :
xmllint --xpath '//*[local-name()="CompositionPlaylist"]/*[local-name()="ContentTitleText"]/text()' CPL.xml
DCP-INSIDE-CRYPTE_TST-2D-24_C_FR-XX_51_4K_20220102_SMPTE_OV
Avec shell (strict) :
grep -oE "<ContentTitleText>[A-Za-z0-9_\-]+</ContentTitleText>" CPL.xml | head -n1 | awk -F'<|>' '{ print $3 }'
DCP-INSIDE-CRYPTE_TST-2D-24_C_FR-XX_51_4K_20220102_SMPTE_OV
Avec shell (mode rien-à-foutre)
grep -oE "<ContentTitleText>.*</ContentTitleText>" CPL.xml | head -n1 | awk -F'<|>' '{ print $3 }'
DCP-INSIDE-CRYPTE_TST-2D-24_C_FR-XX_51_4K_20220102_SMPTE_OV
Avec Python :
>>> from lxml import etree
>>> with open("CPL.xml", "rb") as xml:
tree = etree.fromstring(
text = xml.read()
)
tree.xpath("/*[local-name()='CompositionPlaylist']/*[local-name()='ContentTitleText']/text()")
['DCP-INSIDE-CRYPTE_TST-2D-24_C_FR-XX_51_4K_20220102_SMPTE_OV']