CPL : Codes & Fichiers

Validation XML

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).

Récupération de l'identifiant (Id) d'une CPL

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]

Récupération ContentTitle d'une CPL

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']