MPEGGroup / DASHSchema

The XML schema and example XML files for DASH (ISO/IEC 23009-1)
Other
11 stars 16 forks source link

Whitespace is not permitted in separator for @profiles #86

Closed paulhiggs closed 3 years ago

paulhiggs commented 3 years ago

The <MPD@profiles> element is defined to be a comma separated list of URNs or URLs, and the evaluation pattern for this in DASH-MPD.xsd is defined in the ListOfProfilesType as <xs:pattern value="(&URN;|&URL;)(,(&URN;|&URL;))*"/> (note that neither the URN or URL entities permit whitespace).

Some manifests, such a those identified in DASH264 issue 47 include a reasonably harmless space after the comma - most likely for readability purposes. Comma separated lists are not the main format for lists in XML (xml list datatype).

The MPEG DASH schema could be revised in a backward compatible manner to permit certain whitespace characters before or after the commas, i.e. (&URN;|&URL;)(&wsp;*,&wsp;*(&URN;|&URL;))* where &wsp;* denotes zero or more whitespace sharacters and wsp is defined as <!ENTITY wsp "[&#x20;&#x9;]"> being "the set of characters which are space (&#x20;) and tab (&#x9;). Note that this whitespace definition differs from that typical regex value \s which includes space, tab, newline, carriage return, vertical tab

paulhiggs commented 3 years ago

Problematic DASH-IF test assets are identified in DASH-IF/Test-Vectors issue 134

paulhiggs commented 3 years ago

Test results

T:\> curl -L --retry 3 --connect-timeout 20 --silent https://dash.akamaized.net/dash264/TestCases/4c/1/dash.mpd | xmllint --noout --schema DASH-MPD.xsd -
- validates

T:\> curl -L --retry 3 --connect-timeout 20 --silent https://dash.akamaized.net/dash264/TestCasesNegative/2/1.mpd | xmllint --noout --schema DASH-MPD.xsd -
- validates

T:\> curl -L --retry 3 --connect-timeout 20 --silent https://dash.akamaized.net/dash264/TestCasesNegative/2/2.mpd | xmllint --noout --schema DASH-MPD.xsd -
- validates

T:\> curl -L --retry 3 --connect-timeout 20 --silent https://dash.akamaized.net/dash264/TestCasesNegative/1/1.mpd | xmllint --noout --schema DASH-MPD.xsd -
- validates

T:\> curl -L --retry 3 --connect-timeout 20 --silent https://dash.akamaized.net/dash264/TestCasesNegative/1/2.mpd | xmllint --noout --schema DASH-MPD.xsd -
- validates

T:\>xmllint --noout --schema DASH-MPD.xsd example_G19.mpd
example_G19.mpd validates