# Appendix A: Common Types

Common and supporting types referenced in this specification are included here as a reference.

## A.1 AbstractContentElementType

`AbstractContentPackageType` used as an element rather than an object, omitting `RefId`, `SIF_Metadata` and `SIF_ExtendedElements`.

Figure A.1-1: AbstractContentElementType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| AbstractContentElementType |  | `AbstractContentPackageType` used as an element rather than an object, omitting `RefId`, `SIF_Metadata` and `SIF_ExtendedElements`. |
| XMLData | C | Contains an arbitary XML element, encoded in UTF-8. | <xs:any processContents="lax" />
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). Contents may be mandated in instances of this type, or types that follow the `AbstractContentPackageType` pattern. | xs:token
| TextData | C | Contains arbitrary text, encoded in UTF-8. | xs:string
@ | MIMEType | O | Optional MIME type to specifically indicate the text type. Otherwise `text/plain` can be assumed. | xs:token
@ | FileName | O | Optional file name to indicate the file from which the content originated, or to suggest a name to use when saving the content. | xs:token
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). Contents may be mandated in instances of this type, or types that follow the `AbstractContentPackageType` pattern. | xs:token
| BinaryData | C | Contains the base64Binary encoding of binary or text data not encoded in UTF-8. | xs:base64Binary
@ | MIMEType | M | MIME type to indicate the content type. | xs:token
@ | FileName | O | Optional file name to indicate the file from which the content originated, or to suggest a name to use when saving the content. | xs:token
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). Contents may be mandated in instances of this type, or types that follow the `AbstractContentPackageType` pattern. | xs:token
| Reference | C | References external content via a URL. |
@ | MIMEType | M | MIME type to indicate the content type to be expected when retrieving the external content. | xs:token
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). Contents may be mandated in instances of this type, or types that follow the `AbstractContentPackageType` pattern. | xs:token
| Reference/URL | M | Location of external content. | xs:anyURI

Table A.1-1: AbstractContentElementType

## A.2 AbstractContentPackageType

An abstract type for derived content package types, elements and objects. This structure may be used verbatim, optionally extending with additional attributes, or may be redefined to include only a subset of child elements and/or to add validation to XML contained in `XMLData`. Only one instance of `XMLData`, `TextData`, `BinaryData` or `Reference` can occur in a single instance.

Figure A.2-1: AbstractContentPackageType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| AbstractContentPackageType |  | An abstract type for derived content package types, elements and objects. This structure may be used verbatim, optionally extending with additional attributes, or may be redefined to include only a subset of child elements and/or to add validation to XML contained in `XMLData`. Only one instance of `XMLData`, `TextData`, `BinaryData` or `Reference` can occur in a single instance. |
@ | RefId | M | The GUID that uniquely identifies an instance of the package. | RefIdType
| XMLData | C | Contains an arbitary XML element, encoded in UTF-8. | <xs:any processContents="lax" />
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). Contents may be mandated in instances of this type, or types that follow the `AbstractContentPackageType` pattern. | xs:token
| TextData | C | Contains arbitrary text, encoded in UTF-8. | xs:string
@ | MIMEType | O | Optional MIME type to specifically indicate the text type. Otherwise `text/plain` can be assumed. | xs:token
@ | FileName | O | Optional file name to indicate the file from which the content originated, or to suggest a name to use when saving the content. | xs:token
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). Contents may be mandated in instances of this type, or types that follow the `AbstractContentPackageType` pattern. | xs:token
| BinaryData | C | Contains the base64Binary encoding of binary or text data not encoded in UTF-8. | xs:base64Binary
@ | MIMEType | M | MIME type to indicate the content type. | xs:token
@ | FileName | O | Optional file name to indicate the file from which the content originated, or to suggest a name to use when saving the content. | xs:token
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). Contents may be mandated in instances of this type, or types that follow the `AbstractContentPackageType` pattern. | xs:token
| Reference | C | References external content via a URL. |
@ | MIMEType | M | MIME type to indicate the content type to be expected when retrieving the external content. | xs:token
@ | Description | O | Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD). Contents may be mandated in instances of this type, or types that follow the `AbstractContentPackageType` pattern. | xs:token
| Reference/URL | M | Location of external content. | xs:anyURI

Table A.2-1: AbstractContentPackageType

## A.3 DefinedProtocolsType

The transport protocols defined in SIF.
Figure A.3-1: DefinedProtocolsType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| DefinedProtocolsType |  | The transport protocols defined in SIF. | values: HTTPS HTTP

Table A.3-1: DefinedProtocolsType

## A.4 ExtendedContentType

Allows for any mixed XML in an element.
Figure A.4-1: ExtendedContentType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| ExtendedContentType |  | Allows for any mixed XML in an element. | <xs:complexContent mixed="true"> <xs:restriction base="xs:anyType"> <xs:sequence> <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:restriction> </xs:complexContent>

Table A.4-1: ExtendedContentType

## A.5 GUIDType

SIF format for a GUID.
Figure A.5-1: GUIDType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| GUIDType |  | SIF format for a GUID. | xs:token
xs:pattern | [0-9A-F]{32}

Table A.5-1: GUIDType

## A.6 IdRefType

A reference to a RefId.
Figure A.6-1: IdRefType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| IdRefType |  | A reference to a RefId. | RefIdType

Table A.6-1: IdRefType

## A.7 MsgIdType

A message identifier.
Figure A.7-1: MsgIdType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| MsgIdType |  | A message identifier. | GUIDType

Table A.7-1: MsgIdType

## A.8 ObjectNameType

An unenumerated SIF object name.

Figure A.8-1: ObjectNameType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| ObjectNameType |  | An unenumerated SIF object name. | xs:NCName
xs:maxLength | 64

Table A.8-1: ObjectNameType

## A.9 ObjectType

A SIF XML object.

Figure A.9-1: ObjectType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| ObjectType |  | A SIF XML object. | <xs:sequence> <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" namespace="##any" /> </xs:sequence>

Table A.9-1: ObjectType

## A.10 RefIdType

An object or element identifier.
Figure A.10-1: RefIdType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| RefIdType |  | An object or element identifier. | GUIDType

Table A.10-1: RefIdType

## A.11 ReportDataObjectType

A SIF XML object.

Figure A.11-1: ReportDataObjectType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| ReportDataObjectType |  | A SIF XML object. | <xs:sequence> <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence>

Table A.11-1: ReportDataObjectType

## A.12 ReportPackageType

This package has exactly the same structure as `AbstractContentPackageType`. `ReportPackage` can be used in addition to SIF objects specifically in reporting situations within `SIF_ReportObject`. At this time, it is not a SIF object. It cannot be requested via `SIF_Query` or `SIF_ExtendedQuery` in a `ReportManifest`. It may be included in `SIF_ReportObject` as part of an external report definition.
Figure A.12-1: ReportPackageType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| ReportPackageType |  | This package has exactly the same structure as `AbstractContentPackageType`. `ReportPackage` can be used in addition to SIF objects specifically in reporting situations within `SIF_ReportObject`. At this time, it is not a SIF object. It cannot be requested via `SIF_Query` or `SIF_ExtendedQuery` in a `ReportManifest`. It may be included in `SIF_ReportObject` as part of an external report definition. | AbstractContentPackageType

Table A.12-1: ReportPackageType

## A.13 SelectedContentType

Allows an XML fragment selected from an object to be used in an element with XML validation skipped.
Figure A.13-1: SelectedContentType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| SelectedContentType |  | Allows an XML fragment selected from an object to be used in an element with XML validation skipped. | <xs:complexContent mixed="true"> <xs:restriction base="xs:anyType"> <xs:sequence> <xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:restriction> </xs:complexContent>

Table A.13-1: SelectedContentType

## A.14 ServiceNameType

An unenumerated SIF object name.

Figure A.14-1: ServiceNameType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| ServiceNameType |  | An unenumerated SIF object name. | xs:NCName

Table A.14-1: ServiceNameType

## A.15 URIOrBinaryType

Allows for a URL or a Base-64 encoding.
Figure A.15-1: URIOrBinaryType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| URIOrBinaryType |  | Allows for a URL or a Base-64 encoding. | union of: xs:anyURI xs:base64Binary

Table A.15-1: URIOrBinaryType

## A.16 VersionType

A SIF version number.
Figure A.16-1: VersionType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| VersionType |  | A SIF version number. | xs:token
xs:pattern | [0-9]+[.][0-9]+(r[0-9]+)?
xs:maxLength | 12

Table A.16-1: VersionType

## A.17 VersionWithWildcardsType

A SIF version number, with wildcards for matching multiple versions.
Figure A.17-1: VersionWithWildcardsType

| Element/@Attribute | Char | Description | Type
--- | --- | --- | --- | ---
| VersionWithWildcardsType |  | A SIF version number, with wildcards for matching multiple versions. | xs:token
xs:pattern | \*|([0-9]+[.]\*)|([0-9]+[.][0-9]+r\*)|([0-9]+[.][0-9]+(r[0-9]+)?)
xs:maxLength | 12

Table A.17-1: VersionWithWildcardsType