ISO/IEC 23001-1:2006/Amd 2:2008
(Amendment)Information technology — MPEG systems technologies — Part 1: Binary MPEG format for XML — Amendment 2: Conservation of prefixes and extensions on encoding of wild cards
Information technology — MPEG systems technologies — Part 1: Binary MPEG format for XML — Amendment 2: Conservation of prefixes and extensions on encoding of wild cards
Technologies de l'information — Technologies des systèmes MPEG — Partie 1: Format binaire de MPEG pour XML — Amendement 2: Conservation des préfixes et des extensions pour l'encodage des caractères de remplacement
General Information
Relations
Standards Content (Sample)
INTERNATIONAL ISO/IEC
STANDARD 23001-1
First edition
2006-04-01
AMENDMENT 2
2008-02-15
Information technology — MPEG systems
technologies —
Part 1:
Binary MPEG format for XML
AMENDMENT 2: Conservation of prefixes
and extensions on encoding of wild cards
Technologies de l'information — Technologies des systèmes MPEG —
Partie 1: Format binaire de MPEG pour XML
AMENDEMENT 2: Conservation des préfixes et des extensions pour
l'encodage des caractères de remplacement
Reference number
ISO/IEC 23001-1:2006/Amd.2:2008(E)
©
ISO/IEC 2008
---------------------- Page: 1 ----------------------
ISO/IEC 23001-1:2006/Amd.2:2008(E)
PDF disclaimer
This PDF file may contain embedded typefaces. In accordance with Adobe's licensing policy, this file may be printed or viewed but
shall not be edited unless the typefaces which are embedded are licensed to and installed on the computer performing the editing. In
downloading this file, parties accept therein the responsibility of not infringing Adobe's licensing policy. The ISO Central Secretariat
accepts no liability in this area.
Adobe is a trademark of Adobe Systems Incorporated.
Details of the software products used to create this PDF file can be found in the General Info relative to the file; the PDF-creation
parameters were optimized for printing. Every care has been taken to ensure that the file is suitable for use by ISO member bodies. In
the unlikely event that a problem relating to it is found, please inform the Central Secretariat at the address given below.
COPYRIGHT PROTECTED DOCUMENT
© ISO/IEC 2008
All rights reserved. Unless otherwise specified, no part of this publication may be reproduced or utilized in any form or by any means,
electronic or mechanical, including photocopying and microfilm, without permission in writing from either ISO at the address below or
ISO's member body in the country of the requester.
ISO copyright office
Case postale 56 • CH-1211 Geneva 20
Tel. + 41 22 749 01 11
Fax + 41 22 749 09 47
E-mail copyright@iso.org
Web www.iso.org
Published in Switzerland
ii © ISO/IEC 2008 – All rights reserved
---------------------- Page: 2 ----------------------
ISO/IEC 23001-1:2006/Amd.2:2008(E)
Foreword
ISO (the International Organization for Standardization) and IEC (the International Electrotechnical
Commission) form the specialized system for worldwide standardization. National bodies that are members of
ISO or IEC participate in the development of International Standards through technical committees
established by the respective organization to deal with particular fields of technical activity. ISO and IEC
technical committees collaborate in fields of mutual interest. Other international organizations, governmental
and non-governmental, in liaison with ISO and IEC, also take part in the work. In the field of information
technology, ISO and IEC have established a joint technical committee, ISO/IEC JTC 1.
International Standards are drafted in accordance with the rules given in the ISO/IEC Directives, Part 2.
The main task of the joint technical committee is to prepare International Standards. Draft International
Standards adopted by the joint technical committee are circulated to national bodies for voting. Publication as
an International Standard requires approval by at least 75 % of the national bodies casting a vote.
Attention is drawn to the possibility that some of the elements of this document may be the subject of patent
rights. ISO and IEC shall not be held responsible for identifying any or all such patent rights.
Amendment 2 to ISO/IEC 23001-1:2006 was prepared by Joint Technical Committee ISO/IEC JTC 1,
Information technology, Subcommittee SC 29, Coding of audio, picture, multimedia and hypermedia
information.
© ISO/IEC 2008 – All rights reserved iii
---------------------- Page: 3 ----------------------
ISO/IEC 23001-1:2006/Amd.2:2008(E)
Information technology — MPEG systems technologies —
Part 1:
Binary MPEG format for XML
AMENDMENT 2: Conservation of prefixes and extensions on
encoding of wild cards
In 6.2.2, replace:
Number of Mnemonic
DecoderInit () {
bits
8+ vluimsbf8
SystemsProfileLevelIndication
…
with:
Number of bits Mnemonic
DecoderInit () {
8+ vluimsbf8
SystemsProfileLevelIndication
3 bslbf
UnitSizeCode
1 bslbf
NoAdvancedFeatures
4 bslbf
ReservedBits
If (! NoAdvancedFeatures) {
8+ vluimsbf8
AdvancedFeatureFlags_Length
/** FeatureFlags **/
1 bslbf
InsertFlag
1 bslbf
AdvancedOptimisedDecodersFlag
1 bslbf
AdditionalSchemaFlag
1 bslbf
AdditionalSchemaUpdatesOnlyFlag
1 bslbf
FragmentReferenceFlag
1 bslbf
MPCOnlyFlag
1 bslbf
HierarchyBasedSubstitutionCodingFlag
1 bslbf
ContextPathTableFlag
1 bslbf
PrefixTableFlag
24 bslbf
ReservedBitsZero /**for additional Flags **/
If (PrefixTableFlag) {
PrefixTable ()
}
AdvancedFeatureFlags_Lent
ReservedBitsZero
© ISO/IEC 2008 – All rights reserved 1
---------------------- Page: 4 ----------------------
ISO/IEC 23001-1:2006/Amd.2:2008(E)
h*8-33-PrefixTable_length*8
}/** FeatureFlags end **/
/** Start FUUConfig **/
If (! AdditionalSchemaUpdatesOnlyFlag) {
8+ vluimsbf8
NumberOfSchemas
for (k=0; k< NumberOfSchemas; k++) {
8+ vluimsbf8
SchemaURI_Length[k]
8* SchemaURI_Length[k] bslbf
SchemaURI[k]
8+ vluimsbf8
LocationHint_Length[k]
8* LocationHint_Length[k] bslbf
LocationHint[k]
8+ vluimsbf8
NumberOfTypeCodecs[k]
for (i=0; i< NumberOfTypeCodecs[k]; i++) {
8+ vluimsbf8
TypeCodecURI_Length[k][i]
8* bslbf
TypeCodecURI[k][i]
TypeCodecURI _Length[k][i]
8+ vluimsbf8
NumberOfTypes[k][i]
for (j=0; j< NumberOfTypes[k][i]; j++) {
8+ vluimsbf8
TypeIdentificationCode[k][i][j]
}
}
}
If (ContextPathTableFlag) {
ContextPathTable()
}
/** FUUConfig - Advanced optimised decoder
framework **/
If (AdvancedOptimisedDecodersFlag) {
8+ vluimsbf8
NumOfAdvancedOptimisedDecoderTypes
for (i=0; i<
NumOfAdvancedOptimisedDecoderTypes; i++) {
8+ vluimsbf8
AdvancedOptimisedDecoderTypeURI_Length[i]
8* bslbf
AdvancedOptimisedDecoderTypeURI[i]
AdvancedOptimisedDecoder
TypeURI_Length[i]
}
AdvancedOptimisedDecodersConfig ()
}
/** FUUConfig - Fragment reference framework **/
If (FragmentReferenceFlag) {
8 uimsbf
NumOfSupportedFragmentReferenceFormat
for (i=0;i<
NumOfSupportedFragmentReferenceFormat;i++) {
8 blsbf
SupportedFragmentReferenceFormat[i]
}
2 © ISO/IEC 2008 – All rights reserved
---------------------- Page: 5 ----------------------
ISO/IEC 23001-1:2006/Amd.2:2008(E)
}
}
/** end FUUConfig **/
If (AdditionalSchemaFlag) {
AdditionalSchemaConfig ()
}
/** Initial document **/
If (!AdditionalSchemaUpdateOnlyFlag) {
8+ vluimsbf8
InitialDocument_Length
InitialDocument()
}
}
Add the following paragraph:
PrefixTable {
8+ vluimsbf8
NumberofPrefixes
for (k=0; k< NumberOfPrefixes; k++) {
8+ vluimsbf8
SchemaURI_Length[k]
8* bslbf
SchemaURI[k]
SchemaURI_Lengt
h[k]
8+ vluimsbf8
Prefix_Length[k]
8* bslbf
Prefix[k]
[Prefix_Length[k]]
}
}
Add the following paragraph:
Semantics
Name Definition
PrefixTable_length Indicates length in Bytes of PrefixTable.
PrefixTableFlag Indicates whether a prefix table is given in the decoderInit.
NumberofPrefixes Specifies the number of prefixes defined in the PrefixTable.
Prefix_Length[k] Indicates the size in bytes of the Prefix[k]. A value of zero is forbidden.
Prefix[k] This is the UTF-8 representation of the prefix associated to SchemaURI[k]
in the PrefixTable. The decoder SHOULD bind the namespace names
in the current document to the prefixes given in the PrefixTable if
present. The default namespace, used to construct unprefixed elements,
will be declared as a null string “”.
If different prefixes are associated to a same namespace name in the
© ISO/IEC 2008 – All rights reserved 3
---------------------- Page: 6 ----------------------
ISO/IEC 23001-1:2006/Amd.2:2008(E)
PrefixTable, or a given namespace name is associated to different
prefixes, the decoder should only use the first defined prefix/namespace
binding in the output document.
NOTE A document author wishing to use prefix conservation in order to
maintain, after decoding, the validity of QNames/XPath expressions in the content
of an element should only use one global prefix/namespace name mapping for
those prefix and namespace names that are used in the QNames/XPath
expressions. However, in order to ensure in all cases the validity of those
expressions after decoding, the optimized decoder for QName expressions
specified in subclause 8.8 should be used.
In 6.2.2, replace:
Table 1 — Index Table for SystemsProfileLevelIndication
Index Systems Profile and Level
0 no profile specified
1 – 127 Reserved for ISO Use
with:
Table 1 — Index Table for SystemsProfileLevelIndication
Index Systems Profile and Level
0 no profile specified
1 – 124 Reserved for ISO Use
125 ETSI TS 102 323/102 529
(DVB GBS TV-A and DVB IPTV
BCG)
126 ETSI TS 102 034
(DVB IPTV SD&S)
127 ETSI TS 102 471
(DVB IPDC ESG)
128- User specific
In 7.5.2.4.5.2 (AnyElementDecoding Syntax), replace:
Number of bits Mnemonic
AnyElementDecoding() {
GlobalElementSchemaID ceil( log2( NumberOfSchemas + uimsbf
NumberOfAdditionalSchemas) )
AnyElement_Length 5+ vluimsbf
Any_SBC_Operand_Selector 5+ vluimsbf
If (inPayloadDecoding()) {
Element(ChildrenSchemaMode, theAnyType)
}
}
with:
4 © ISO/IEC 2008 – All rights reserved
---------------------- Page: 7 ----------------------
ISO/IEC 23001-1:2006/Amd.2:2008(E)
Number of bits Mnemonic
AnyElementDecoding() {
GlobalElementSchemaID ceil( log2( uimsbf
NumberOfSchemas +
NumberOfAdditionalSch
emas) )
AnyElement_Length 5+ vluimsbf
if (GlobalElementSchemaID == LAXSchemaID) {
//lax encoding
AnyElementLaxDecoding();
} else {
Any_SBC_Operand_Selector 5+ vluimsbf
If (inPayloadDecoding()) {
Element(ChildrenSchemaMode,
theAnyType)
}
}
}
In 7.5.2.4.5.3 (AnyElementDecoding Semantics), replace:
Name Definition
GlobalElementSchemaID The schema in which the global element is defined. Its value is the index of
the URI in the SchemaURI array defined in 6.2 (optionally extended with the
list of additional schemas).
AnyElement_Length
Indicates the length in bits of the remainder of this AnyElementDecoding.
Any_SBC_Operand_Selector Selects one global element of the schema referenced by
GlobalElementSchemaID using the OperandTBC table for
Extended_SBC_Operand_Selector as specified in 6.6.5.2.3. Therefore,
Any_SBC_Operand_Selector is equivalent to the
Extended_SBC_Operand_Selector but with a bit representation in vluimsbf5.
inPayloadDecoding() Returns true if the AnyElementDecoding procedure has been triggered from
a payload decoding procedure.
Element() See 7.4.1.
theAnyType The type of the element identified by the
SBC_GlobalElement_SelectorCode as defined in the schema identified
by the GlobalElementSchemaID.
with:
© ISO/IEC 2008 – All rights reserved 5
---------------------- Page: 8 ----------------------
ISO/IEC 23001-1:2006/Amd.2:2008(E)
Name Definition
GlobalElementSchemaID The schema in which the global element is defined. Its value is the index of
the URI in the SchemaURI array defined in 6.2 (optionally extended with the
list of additional schemas).
If GlobalElementSchemaID is equal to the ID of the virtual lax schema
urn:mpeg:mpegb:bim:laxencoding:2007 specified in the decoderInit
(i.e., GlobalElementSchemaID == LAXSchemaID), the lax decoding
procedure AnyElementLaxDecoding() is called.
AnyElement_Length Indicates the length in bits of the remainder of this AnyElementDecoding.
Any_SBC_Operand_Selector Selects one global element of the schema referenced by
GlobalElementSchemaID using the OperandTBC table for
Extended_SBC_Operand_Selector as specified in 6.6.5.2.3. Therefore,
Any_SBC_Operand_Selector is equivalent to the
Extended_SBC_Operand_Selector but with a bit representation in vluimsbf5.
inPayloadDecoding() Returns true if the AnyElementDecoding procedure has been triggered from
a payload decoding procedure.
Element() See 7.4.1.
theAnyType The type of the element identified by the
SBC_GlobalElement_SelectorCode as defined in the schema identified
by the GlobalElementSchemaID.
AnyElementLaxDecoding() See 7.5.2.4.5.4.
In 7.5.2.4.5 (Wildcard transition behavior), add:
7.5.2.4.5.4 AnyElementLaxDecoding procedure
7.5.2.4.5.4.1 AnyElementLaxDecoding
Number of bits Mnemonic
AnyElementLaxDecoding() {
ReservedBits 4 bmsbf
AnyElementLaxCompressionScheme 4 bmsbf
AnyElementLaxDecodingContent()
}
Name Definition
ReservedBits Reserved bits for future use.
AnyElementLaxCompressionScheme Indicates the compression scheme used in the
AnyElementLaxDecoding() procedure. Table AMD2.1 gives
the possible values.
AnyElementLaxDecodingContent See 7.5.2.4.5.4.2.
Table AMD2.1 — Compression methods
6 © ISO/IEC 2008 – All rights reserved
---------------------- Page: 9 ----------------------
ISO/IEC 23001-1:2006/Amd.2:2008(E)
AnyElementLaxCom Definition
pressionScheme
0 No compression
1 Compression method
described in 7.5.2.4.5.4.2
2-10 ISO reserved
11-16 Private use
7.5.2.4.5.4.2 AnyElementLaxDecodingContent
7.5.2.4.5.4.2.1 Overview
The AnyElementLaxDecodingContent function contains the decoding of lax format syntax. This is a byte-
aligned SAX tokenized events stream, which is decoded by a large switch statement.
Three dynamic dictionaries are used to store the XML structural items names: namespaces, elements names
and attributes names. These strings dictionaries are dynamic and can grow during the encoding process, with
the help of the ADD_NS, ADD_ENAME and ADD_ANAME special events, discussed below. By default, these
dictionaries are initialized as empty ones.
Currently understood events are described in Table AMD2.2. All SAX events are defined by a corresponding
SAX event callback and three special events are used to dynamically add a namespace, an element name or
an attribute name in the corresponding dictionary. The first event with zero UID triggers decoding according to
the general BiM syntax.
The UID is a fixed numerical ID able to unambiguously define an event, but this is not the value used to
encode an event, as explained in 7.5.2.4.5.4.3. An event can carry zero, one or several parameters, which
can be strings or numerical IDs, which point to the corresponding dynamic strings dictionary. Strings are
encoded in UTF-8 format, with a terminating zero.
© ISO/IEC 2008 – All rights reserved 7
---------------------- Page: 10 ----------------------
ISO/IEC 23001-1:2006/Amd.2:2008(E)
Table AMD2.2 — Event table
Event name UID Parameters Semantics
BiM Encoding 0 Ø Fragment update payload syntax
defined in subclause 7.3.
ADD_NS 1 ns Adds a new namespace in the
namespace table.
ADD_ENAME 2 nsid, elt Adds a new element in the
element table.
ADD_ANAME 3 nsid, att Adds a new attribute in the
attribute table.
END_ELEMENT 4 Ø SAX — ContentHandler callback
START_PFX_MAPPING 5 nsid, pfx SAX — ContentHandler callback
CHARACTERS 6 value SAX — ContentHandler callback
END_DOCUMENT 7 Ø SAX — ContentHandler callback
PI 8 target, data SAX — ContentHandler callback
SKIPPED_ENTITY 9 name SAX — ContentHandler callback
NOTATION_DECL 10 name, pid, sid SAX — DTDHandler callback
UNPARSED_ENTITY_DECL 11 name, pid, sid, not SAX — DTDHandler callback
ATTRIBUTE_DECL 12 el, at, type, mode, SAX — DeclHandler callback
value
ELEMENT_DECL 13 name, model SAX — DeclHandler callback
EXT_ENTITY_DECL 14 name, pid, sid SAX — DeclHandler callback
INT_ENTITY_DECL 15 name, value SAX — DeclHandler callback
COMMENT 16 value SAX — LexicalHandler callback
START_CDATA 17 Ø SAX — LexicalHandler callback
END_CDATA 18 Ø SAX — LexicalHandler callback
START_DTD 19 name, pid, sid SAX — LexicalHandler callback
END_DTD 20 Ø SAX — LexicalHandler callback
START_ENTITY 21 name SAX — LexicalHandler callback
END_ENTITY 22 name SAX — LexicalHandler callback
Reserved 23-24 — Reserved
START_ELEMENT_eltid 23+2*eltid Ø SAX — ContentHandler callback
ATTRIBUTE_attid 24+2*attid value SAX — ContentHandler callback
8 © ISO/IEC 2008 – All rights reserved
---------------------- Page: 11 ----------------------
ISO/IEC 23001-1:2006/Amd.2:2008(E)
Note that there is no START_ELEMENT generic event. Instead, the SAX START_ELEMENT event is split into
specific ATTRIBUTE_#att events and a specific START_ELEMENT_#elt event. Therefore, an infinite number
of ATTRIBUTE_#att events and START_ELEMENT_#elt virtually belongs to the table of events.
7.5.2.4.5.4.2.2 Syntax
AnyElementLaxDecodingContent() { Number of bits Mnemonic
ReservedBits 6 bmsbf
Agglutinated 1 bmsbf
zlib 1 bmsbf
do {
event = readEvent();
switch (event) {
case ADD_NS:
NamespaceName 8+ string
addNamespace(NamespaceName);
break;
case ADD_ENAME:
NSID 8 uimsbf8
ElementName 8+ string
addElement(NSID,ElementName);
break;
case ADD_ANAME:
NSID 8 uimsbf8
AttributeName 8+ string
addAttribute(NSID, AttributeName);
break;
case END_ELEMENT:
sax_endElement();
break;
case START_PFX_MAPPING:
NSID 8 uimsbf8
...
Questions, Comments and Discussion
Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.