<?xml version='1.0' encoding='UTF-8' ?>

<!--Generated by Turbo XML 2.3.0.100.-->

<!-- ........................................... -->
<!-- NISO Circulation Interchange Protocol ..... -->
<!-- ........................................... -->
<!--
Typical invocation:
  <!DOCTYPE NCIPMessage PUBLIC "-//NISO//NCIP DTD Version 1.0//EN" "http://www.niso.org/ncip/v1_0/imp1/dtd/ncip_v1_0.dtd">

Purpose:
  This file defines the DTD for the initiation & response messages which comprise the NISO Circulation Interchange Protocol.

Dependencies:
  None.

Change history:
    Version 1.0 - approved version (16th August 2002)
    	1) Restructured AuthenticationPrompt to be:-
		<!ELEMENT AuthenticationPrompt (PromptOutput , PromptInput)>
		<!ELEMENT PromptOutput (AuthenticationPromptData , AuthenticationPromptType)>
		<!ELEMENT PromptInput (AuthenticationInputType , AuthenticationDataFormatType , SensitiveDataFlag?)>
		<!ELEMENT SensitiveDataFlag EMPTY>
	2) Restructured ElectronicResource to be:-
		<!ELEMENT ElectronicResource ((ElectronicDataFormatType , ActualResource) | ReferenceToResource)>
		<!ELEMENT ElectronicDataFormatType (Scheme , Value)>
		<!ELEMENT ActualResource (#PCDATA)>		
		<!ELEMENT ReferenceToResource (#PCDATA)>
	3) Restructured NameInformation to be:-
		<!ELEMENT NameInformation (PersonalNameInformation | OrganizationNameInformation+)>
	4) Restructured StructuredAddress to be:-
		<!ELEMENT StructuredAddress (((LocationWithinBuilding?, HouseName?, (District | (PostOfficeBox, District?) | (Street, PostOfficeBox?, District?))) | (Line1 , Line2?)) , Locality? , Region? , Country? , PostalCode? , CareOf?)> 
	5) Restructured VisibleUserId to be:-
		<!ELEMENT VisibleUserId (UniqueAgencyId? , VisibleUserIdentifierType , VisibleUserIdentifier)>
	6) Added VisibleUserId to LookupUser as an alternative to UniqueUserId/AuthenticationInput
	7) Made VisibleUserId repeatable in CreateUser, UserCreated, AddUserFields, DeleteUserFields, and UserOptionalFields
	8) Removed DateCheckedIn from DTD
	9) Removed CopySupplyPermitted from DTD
	10) Renamed RenewalPermittedFlag to RenewalNotPermitted
	11) Modified all elements with boolean attributes to instead have EMPTY content model
	12) Removed boolean attribute from DTD
	13) Added IndeterminateLoanPeriodFlag to AcceptItem as an alternative to DateForReturn/NonReturnableFlag

    Version 1.0 - ballot version (14th April 2002)
	1) Added required attribute "version" to NCIPMessage
	2) Modified DOCTYPE statement to make use of proposed naming conventions
	3) Added ElementName in place of Value within MessagingErrorElement and ProcessingErrorElement

    Version 0.2d (29th March 2002)
	1) Renamed BehavioralProfileType to ApplicationProfileType
	2) Renamed BehavioralProfileSupportedType to ApplicationProfileSupportedType
	3) Made DateDue optional in ItemDetails
	4) Added IndeterminateLoanPeriodFlag & NonReturnableFlag as alternatives to DateDue in ItemDetails
	5) Added optional DateCheckedOut to ItemDetails
	6) Made DateReturned optional in ItemDetails
	7) Made DateRenewed optional/repeatable in ItemDetails
	8) Replaced contents of AccountDetails (except AccrualDate) with FiscalTransactionInformation
	9) Removed AmountAccrued from the DTD
	10) Made FiscalTransactionReferenceId optional in FiscalTransactionInformation
	11) Added FiscalTransactionInformation to CreateUserFiscalTransaction
	12) Removed elements from CreateUserFiscalTransaction which already occur in FiscalTransactionInformation
	13) Made DateDue/IndeterminateLoanPeriodFlag/NonReturnableFlag mandatory in CheckoutItemResponse
	14) Added ElectronicResource to ItemOptionalFields
	15) Added SensitizationFlag to CreateItem, ItemCreated, AddItemFields and DeleteItemFields
	16) Added new optional element UserFiscalAccountDesired to LookupUser
	17) Added new optional element OnBehalfOfAgency to InitiationHeader for all initiation messages

    Version 0.2c (15th March 2002)
	1) Removed UpdateUserFiscalTransaction message & response
	2) Removed UserFiscalTransactionUpdated message & response
	3) Renamed DateDueDesired to DesiredDateDue
	4) Renamed DateForReturnDesired to DesiredDateForReturn
	5) Corrected DesiredDateForReturn attribute to %dateTime
	6) Renamed OverdueItem to NoticeItem
	7) Made Amount optional within NoticeItem
	8) Added optional PaymentMethodType to CreateUserFiscalTransaction
	9) Added optional PaymentMethodType to FiscalTransactionInformation
	10) Added optional PaymentMethodType to AccountDetails

    Version 0.2b (26th February 2002)
	1) Replaced ShippingAddress with ShippingInformation in ItemShipped
	2) Removed ShippingInstructions and ShippingNote from ItemShipped
	3) Replaced ShippingAddress with (PhysicalAddress | ElectronicAddress) in ShippingInformation
	4) Removed ShippingAddress from the DTD
	5) Modified (DateReturned? | DateRenewed?) structure in ItemDetails to be (DateReturned | DateRenewed)? Instead
	6) Added new optional element DateForReturnDesired to RenewItem
	7) Added optional DateForReturn to RenewItemResponse
	8) Added optional UniqueItemId to AcceptItemResponse
	9) Renamed ExistingFiscalTransaction to FiscalTransactionInformation
	10) Promoted contents to replace NewFiscalTransaction in CreateUserFiscalTransaction
	11) Replaced all other occurrences of NewFiscalTransaction with FiscalTransactionInformation
	12) Removed NewFiscalTransaction from the DTD
	13) Made Amount and FiscalTransactionType mandatory in FiscalTransactionInformation
	14) Replaced FiscalAccountUpdateDetails with FiscalTransactionInformation in UpdateRequestItemResponse
	15) Removed FiscalAccountUpdateDetails from the DTD
	16) Added optional/repeatable RelatedFiscalTransactionReferenceId to CreateUserFiscalTransaction, FiscalTransactionInformation and AccountDetails
	17) Removed AuthenticationInput from SendUserNotice

    Version 0.2a (18th February 2002)
	1) Renamed BehavioralModelType to BehavioralProfileType
	2) Renamed BehavioralModelSupportedType to BehavioralProfileSupportedType
	3) Modified BibliographicRecordId to include a choice between UniqueAgencyId OR BibliographicRecordIdentifierCode
	4) Added optional RequestType and UniqueUserId to RoutingInformation
	5) Made LocationName element into a wrapper for new repeatable element LocationNameInstance, containing LocationNameValue and LocationNameLevel
	6) Modified Destination element to contain Location and BinNumber as an either/or choice.
	7) Added new AcceptItem/AcceptItemResponse messages

    Version 0.2 (12th December 2001)
	1) Added new UpdateCirculationStatus/UpdateCirculationStatusResponse messages (same basics as existing notification message) 
	2) Added RequestStatusType to Add/DeleteRequestFields
	3) Added optional UniqueRequestId to ItemCreated 
	4) Replaced occurrences of ItemUsePolicies with optional/repeatable ItemUseRestrictionType
	5) Removed ItemUsePolicies from the DTD 
	6) Added VisibleItemId to LookupItem, as an alternative lookup key to UniqueItem/RequestId 
	7) Added optional/repeatable AcknowledgedItemUseRestrictionType to CheckOutItem, RenewItem and RequestItem messages 
	8) Added optional/repeatable RequiredItemUseRestrictionType to CheckOutItemResponse, RenewItemResponse and RequestItemResponse 	messages 
	9) Added optional BehavioralModelType element to InitiationHeader
	10) Renamed CIPRolesSupportedType to BehavioralModelSupportedType
	11) Made Surname required and GivenName optional in PersonalUserNameStructured
	12) Removed NCIP messages AuthorizeUserAccess and AuthorizeUserAccessResponse from the DTD
	13) Removed elements AuthorizationRequest, AuthorizationRequestTypeScheme, AdditionalInfo, AdditionalInfoValue, 	AuthorizationResponse, AuthorizationResponseType, AccessType & AccessFee from the DTD
	14) Moved the child elements ElectronicDataFormatType, Language and MediumType from ItemDescription to BibliographicDescription
	15) Renamed various elements in line with Data Dictionary:-
		a. AuthenticationDataType -> AuthenticationDataFormatType
		b. BibliographicTitle -> Title
		c. UnlimitedLoanFlag -> IndeterminateLoanPeriodFlag
		d. BibliographicDescriptionLevel -> ItemDescriptionLevel
		e. PersonalUserNameStructured -> StructuredPersonalUserName
		f. PersonalUserCommonName -> UnstructuredPersonalUserName
		g. FormattedAddress -> UnstructuredAddress
		h. FormattedAddressData -> UnstructuredAddressData 
		i. FormattedAddressType -> UnstructuredAddressType 
		j. DesensitizationFlag -> SensitizationFlag 
	16) Added MandatedAction and DateEventOccurred elements, used by all 'update' type messages.
	17) Reversed order of child elements within ComponentId and RoutingInformation
	18) Added repeatable ChronologyLevelInstance element to HoldingsChronology
	19) Added repeatable EnumerationLevelInstance element to HoldingsEnumeration
	20) Dropped "Holdings" prefix from elements ChronologyCaption, ChronologyLevel, ChronologyValue, EnumerationCaption, EnumerationLevel 	and EnumerationValue
	21) Split UpdateUserFiscalAccount message into two alternatives: CreateUserFiscalTransaction and UpdateUserFiscalTransaction
	22) Split  UserFiscalAccountUpdated message into two alternatives: UserFiscalTransactionCreated and UserFiscalTransactionUpdated
	23) Moved FiscalActionType from FiscalAccountUpdateDetails into NewFiscalTransaction and ExistingFiscalTransaction
	24) Replaced FiscalAccountUpdateDetails with NewFiscalTransaction in the following messages:-
		a. CreateUserFiscalTransaction
		b. UserFiscalTransactionCreated
		c. CheckInItemResponse
		d. CheckOutItemResponse
		e. CirculationStatusChangeReported
		f. ItemCheckedIn
		g. ItemCheckedOut
		h. ItemRenewed
		i. RecallItemResponse
		j. RenewItemResponse
		k. RequestItemResponse
	25) Replaced FiscalAccountUpdateDetails with ExistingFiscalTransaction in the following messages:-
		a. UpdateUserFiscalTransaction
		b. UserFiscalTransactionUpdated
		c. CancelRecallItemResponse
		d. CancelRequestItemResponse
		e. ItemRecallCancelled
		f. UndoCheckOutItemResponse
	26) Added ExistingFiscalTransaction to ItemRequestCancelled message
	27) Removed unused orphan elements Hold/Loan/Renewal/StackRetrievalPermitted
	28) Removed AcknowledgedFeeAmount from ItemRequested notification message

  Version 0.1d (19th August 2001)
  1)	Renamed ProcessingFailure to ProcessingError.
  2)	Corrected ProcessingError (& child elements) syntax to match that of MessagingError.
  3)	Renamed FailureElement/FailureType/FailureValue to ProcessingErrorElement/ProcessingErrorType/ProcessingErrorValue.
  4)	Prefixed ErrorElement/ErrorType/ErrorValue with "Messaging", to distinguish from ProcessingError.
  5)	Modified ItemShipped message to contain commonly used syntax for inclusion of UniqueItemId AND/OR UniqueRequestId.
  6)	Tidied up SendUserNoticeResponse syntax.
  7)	Renamed ClaimItemReturned -> ReportCirculationStatusChange.
  8)	Renamed ItemClaimedReturned -> CirculationStatusChangeReported.
  9)	Added new optional alternative elements ItemReportedLost and ItemReportedReturned to above two messages.
  10)	Renamed DateClaimedReturned to DateReportedReturned and made a child element of ReportedReturned.
  11)	Added new HoldingsInformation wrapper element to ItemDescription.
  12)	Removed VolumeIssue from BibliographicDescription and from DTD.
  13)	Removed SerialHoldings from ItemDescription and from DTD.
  14)	Added new AuthorizeUserAccess/AuthorizeUserAccessResponse messages for RUA profile.
  15)	Added new element for VisibleUserId, to parallel current usage of VisibleItemId element.
  16)	Made FromSystemId & ToSystemId optional for all message headers.
  17)	Revised AccessFee to contain only CurrencyCode and MonetaryValue.
  18)	Removed AccessAllFlag element from AuthorizationRequest/Response and from DTD.
  19)	Removed ValidFromDate from AuthorizationResponse.
  20)	Renamed AuthorizationTypeResponse to AuthorizationResponseType.
  21)	Renamed AuthorizationTypeRequest to AuthorizationRequestTypeScheme, and removed Scheme/Value child elements.
  22)	Added new optional PickupExpiryDate element to ItemRequested, RequestItem, AddRequestFields and DeleteRequestFields.
  23)	Renamed CirculationCategoryType to ItemUseRestrictionType.
  24)	Added ItemReportedMissing & ItemReportedNeverBorrowed options to ReportCirculationStatusChange & CirculationStatusChangeReported messages.
  25)	Removed redundant UniqueUserId & UniqueAgencyId elements from UserAddressInformation & AgencyAddressInformation.
  26)	ItemUseRestrictionType now contained within new ItemUsePolicies wrapper element.
  27)	Added new boolean elements Hold/Loan/Renewal/CopySupply/StackRetrievalPermitted to ItemUsePolicies.
  28)	Added RequestType, RequestStatusType, PickupDate & PickupExpiryDate elements to RequestedItem.
  29)	HoldQueuePosition & ReminderLevel made optional within RequestedItem.
  30)	Added RequestType to RequestedItemsCount as an alternative to CirculationStatus & ItemUseRestrictionType.

  Version 0.1c (20th April 2001)
  1)	Removed DesensitizationFlag from CheckOutItem and CheckOutItemResponse.
  2)	Added DesensitizationFlag to ItemOptionalFields.
  3)	AmountAccrued redefined to contain only CurrencyCode and MonetaryValue.
  4)	In all notification responses: Replaced Problem with optional/repeatable MessagingError.
  5)	Wherever the following two fields appear in the kind of structure indicated, made the element order consistent as follows: (UniqueItemId | (UniqueRequestId , UniqueItemId?)).
  6)	Added %string datatype attribute to RequestIdentifierValue.
  7)	Changed timeInstant attribute to now be dateTime instead.
  8)	Removed Agency/Item/UserLookupType from the DTD.
  9)	Replaced Agency/Item/UserElementId occurrences with Agency/Item/UserElementType.
  10)	Added optional UniqueRequestId to CreateItem.
  11)	Removed AddressInformation from ItemReceived.
  12)	Split AddressRoleType into AgencyAddressRoleType and UserAddressRoleType.
  13)	Split AddressInformation into AgencyAddressInformation and UserAddressInformation.
  14)	Modified all parent elements, which previously contained AddressInformation, to now use either AgencyAddressInformation or UserAddressInformation depending on which of the two objects was being referenced in each instance.

  Version 0.1b (15th February 2001)
  1)	Removed SuccessFlag from DTD.
  2)	Removed FailureFlag from DTD.
  3)	Removed MessageResult from DTD.
  4)	Renamed 'Failure' element to 'Problem' and enhanced to differentiate between messaging errors and processing failures, adding new child elements ProcessingFailure, FailureType, FailureElement & FailureValue in the process.
  5)	Renamed 'Error' element to MessagingError.
  6)	Revised ErrorElement definition to prevent infinite recursion problem.
  7)	Made ToAgencyId mandatory in InitiationHeader.
  8)	Added CirculationStatus to ItemOptionalFields.
  9)	Replaced majority of references to SecurityMarker (plus other item related fields) with ItemOptionalFields wrapper, the only exceptions being the CreateItem/ItemCreated messages.
  10)	Replaced majority of references to DateOfBirth (plus other user related fields) with UserOptionalFields wrapper, the only exceptions being the CreateUser/UserCreated messages.
  11)	Corrected NameInformation to be optional but not repeatable in Add/DeleteUserFields.
  12)	Added ValidFromDate & ValidToDate to Location element.
  13)	Replaced all occurrences of StartDate & EndDate with ValidFromDate & ValidToDate.
  14)	Removed StartDate & EndDate from DTD.
-->
<!ENTITY % dateTime " datatype CDATA  #FIXED 'dateTime'">

<!ENTITY % string " datatype CDATA  #FIXED 'string'">

<!ENTITY % positiveInteger " datatype CDATA  #FIXED 'positiveInteger'">

<!ENTITY % nonNegativeInteger " datatype CDATA  #FIXED 'nonNegativeInteger'">

<!ENTITY % integer " datatype CDATA  #FIXED 'integer'">

<!ELEMENT NCIPMessage (AcceptItem | AcceptItemResponse | AgencyCreated | AgencyCreatedResponse | AgencyUpdated | AgencyUpdatedResponse | AuthenticateUser | AuthenticateUserResponse | CancelRecallItem | CancelRecallItemResponse | CancelRequestItem | CancelRequestItemResponse | CheckInItem | CheckInItemResponse | CheckOutItem | CheckOutItemResponse | CirculationStatusChangeReported | CirculationStatusChangeReportedResponse | CirculationStatusUpdated | CirculationStatusUpdatedResponse | CreateAgency | CreateAgencyResponse | CreateItem | CreateItemResponse | CreateUser | CreateUserResponse | CreateUserFiscalTransaction | CreateUserFiscalTransactionResponse | ItemCheckedIn | ItemCheckedInResponse | ItemCheckedOut | ItemCheckedOutResponse | ItemCreated | ItemCreatedResponse | ItemRecallCancelled | ItemRecallCancelledResponse | ItemRecalled | ItemRecalledResponse | ItemReceived | ItemReceivedResponse | ItemRenewed | ItemRenewedResponse | ItemRequestCancelled | ItemRequestCancelledResponse | ItemRequestUpdated | ItemRequestUpdatedResponse | ItemRequested | ItemRequestedResponse | ItemShipped | ItemShippedResponse | ItemUpdated | ItemUpdatedResponse | LookupAgency | LookupAgencyResponse | LookupItem | LookupItemResponse | LookupUser | LookupUserResponse | RecallItem | RecallItemResponse | RenewItem | RenewItemResponse | ReportCirculationStatusChange | ReportCirculationStatusChangeResponse | RequestItem | RequestItemResponse | SendUserNotice | SendUserNoticeResponse | UndoCheckOutItem | UndoCheckOutItemResponse | UpdateAgency | UpdateAgencyResponse | UpdateCirculationStatus | UpdateCirculationStatusResponse | UpdateItem | UpdateItemResponse | UpdateRequestItem | UpdateRequestItemResponse | UpdateUser | UpdateUserResponse | UserCreated | UserCreatedResponse | UserFiscalTransactionCreated | UserFiscalTransactionCreatedResponse | UserNoticeSent | UserNoticeSentResponse | UserUpdated | UserUpdatedResponse)>

<!ATTLIST NCIPMessage  version CDATA  #REQUIRED >
<!ELEMENT AcceptItem (InitiationHeader , MandatedAction? , UniqueRequestId , RequestedActionType , UniqueUserId? , UniqueItemId? , (DateForReturn | IndeterminateLoanPeriodFlag | NonReturnableFlag)? , RenewalNotPermitted? , FiscalTransactionInformation? , ItemOptionalFields? , UserOptionalFields?)>

<!ELEMENT AcceptItemResponse (ResponseHeader , (Problem | (UniqueRequestId , UniqueItemId?)))>

<!ELEMENT AgencyCreated (InitiationHeader , UniqueAgencyId , OrganizationNameInformation+ , AgencyAddressInformation* , AuthenticationPrompt* , ApplicationProfileSupportedType* , ConsortiumAgreement* , AgencyUserPrivilegeType*)>

<!ELEMENT AgencyCreatedResponse (ResponseHeader , MessagingError*)>

<!ELEMENT AgencyUpdated (InitiationHeader , UniqueAgencyId , DeleteAgencyFields? , AddAgencyFields?)>

<!ELEMENT AgencyUpdatedResponse (ResponseHeader , MessagingError*)>

<!ELEMENT AuthenticateUser (InitiationHeader , AuthenticationInput+)>

<!ELEMENT AuthenticateUserResponse (ResponseHeader , (Problem | UniqueUserId))>

<!ELEMENT CancelRecallItem (InitiationHeader , MandatedAction? , UniqueItemId , ItemElementType* , UserElementType*)>

<!ELEMENT CancelRecallItemResponse (ResponseHeader , (Problem | (UniqueItemId , UniqueUserId? , FiscalTransactionInformation? , ItemOptionalFields? , UserOptionalFields?)))>

<!ELEMENT CancelRequestItem (InitiationHeader , MandatedAction? , (UniqueUserId | AuthenticationInput+) , (UniqueItemId | (UniqueRequestId , UniqueItemId?)) , RequestType , RequestScopeType? , ItemElementType* , UserElementType*)>

<!ELEMENT CancelRequestItemResponse (ResponseHeader , (Problem | ((UniqueItemId | (UniqueRequestId , UniqueItemId?)) , UniqueUserId , FiscalTransactionInformation? , ItemOptionalFields? , UserOptionalFields?)))>

<!ELEMENT CheckInItem (InitiationHeader , MandatedAction? , UniqueItemId , ItemElementType* , UserElementType*)>

<!ELEMENT CheckInItemResponse (ResponseHeader , (Problem | (UniqueItemId , UniqueUserId? , RoutingInformation? , FiscalTransactionInformation? , ItemOptionalFields? , UserOptionalFields?)))>

<!ELEMENT CheckOutItem (InitiationHeader , MandatedAction? , (UniqueUserId | AuthenticationInput+) , UniqueItemId , UniqueRequestId? , AcknowledgedFeeAmount? , AcknowledgedItemUseRestrictionType* , ShippingInformation? , ResourceDesired? , DesiredDateDue? , ItemElementType* , UserElementType*)>

<!ELEMENT CheckOutItemResponse (ResponseHeader , ((Problem , RequiredFeeAmount? , RequiredItemUseRestrictionType*) | (UniqueItemId , UniqueUserId , (DateDue | IndeterminateLoanPeriodFlag | NonReturnableFlag) , RenewalCount? , ElectronicResource? , FiscalTransactionInformation? , ItemOptionalFields? , UserOptionalFields?)))>

<!ELEMENT CirculationStatusChangeReported (InitiationHeader , UniqueItemId , UniqueUserId , (ItemReportedReturned | ItemReportedNeverBorrowed | ItemReportedLost | ItemReportedMissing) , ItemOptionalFields? , UserOptionalFields? , FiscalTransactionInformation?)>

<!ELEMENT CirculationStatusChangeReportedResponse (ResponseHeader , MessagingError*)>

<!ELEMENT CirculationStatusUpdated (InitiationHeader , UniqueItemId , CirculationStatus)>

<!ELEMENT CirculationStatusUpdatedResponse (ResponseHeader , MessagingError*)>

<!ELEMENT CreateAgency (InitiationHeader , MandatedAction? , UniqueAgencyId? , OrganizationNameInformation+ , AgencyAddressInformation* , AuthenticationPrompt* , ApplicationProfileSupportedType* , ConsortiumAgreement* , AgencyUserPrivilegeType*)>

<!ELEMENT CreateAgencyResponse (ResponseHeader , (Problem | UniqueAgencyId))>

<!ELEMENT CreateItem (InitiationHeader , MandatedAction? , UniqueItemId? , UniqueRequestId? , BibliographicDescription , ItemUseRestrictionType* , CirculationStatus? , ItemDescription? , Location* , PhysicalCondition? , SecurityMarker? , SensitizationFlag?)>

<!ELEMENT CreateItemResponse (ResponseHeader , (Problem | UniqueItemId))>

<!ELEMENT CreateUser (InitiationHeader , MandatedAction? , (UniqueUserId | AuthenticationInput+)? , VisibleUserId* , NameInformation , UserAddressInformation* , DateOfBirth? , UserLanguage* , UserPrivilege* , BlockOrTrap*)>

<!ELEMENT CreateUserResponse (ResponseHeader , (Problem | UniqueUserId))>

<!ELEMENT CreateUserFiscalTransaction (InitiationHeader , MandatedAction? , (UniqueUserId | AuthenticationInput+) , FiscalTransactionInformation)>

<!ELEMENT CreateUserFiscalTransactionResponse (ResponseHeader , (Problem | (UniqueUserId , FiscalTransactionReferenceId)))>

<!ELEMENT InitiationHeader (FromSystemId? , FromSystemAuthentication? , FromAgencyId , FromAgencyAuthentication? , OnBehalfOfAgency? , ToSystemId? , ToAgencyId , ApplicationProfileType?)>

<!ELEMENT ItemCheckedIn (InitiationHeader , UniqueUserId? , UniqueItemId , RoutingInformation? , FiscalTransactionInformation? , ItemOptionalFields? , UserOptionalFields?)>

<!ELEMENT ItemCheckedInResponse (ResponseHeader , MessagingError*)>

<!ELEMENT ItemCheckedOut (InitiationHeader , UniqueUserId , UniqueItemId , UniqueRequestId? , (DateDue | IndeterminateLoanPeriodFlag | NonReturnableFlag) , ElectronicResourceProvidedFlag? , RenewalCount? , FiscalTransactionInformation? , ShippingInformation? , ItemOptionalFields? , UserOptionalFields?)>

<!ELEMENT ItemCheckedOutResponse (ResponseHeader , MessagingError*)>

<!ELEMENT ItemCreated (InitiationHeader , UniqueItemId , UniqueRequestId? , BibliographicDescription , ItemUseRestrictionType* , CirculationStatus? , ItemDescription? , Location* , PhysicalCondition? , SecurityMarker? , SensitizationFlag?)>

<!ELEMENT ItemCreatedResponse (ResponseHeader , MessagingError*)>

<!ELEMENT ItemRecallCancelled (InitiationHeader , UniqueUserId? , UniqueItemId , FiscalTransactionInformation? , ItemOptionalFields? , UserOptionalFields?)>

<!ELEMENT ItemRecallCancelledResponse (ResponseHeader , MessagingError*)>

<!ELEMENT ItemRecalled (InitiationHeader , UniqueUserId? , UniqueItemId , DateDue , ShippingInformation? , ItemOptionalFields? , UserOptionalFields?)>

<!ELEMENT ItemRecalledResponse (ResponseHeader , MessagingError*)>

<!ELEMENT ItemReceived (InitiationHeader , UniqueItemId , UniqueUserId? , UniqueRequestId? , DateReceived , ItemOptionalFields? , UserOptionalFields?)>

<!ELEMENT ItemReceivedResponse (ResponseHeader , MessagingError*)>

<!ELEMENT ItemRenewed (InitiationHeader , UniqueUserId? , UniqueItemId , DateDue , RenewalCount? , FiscalTransactionInformation? , ItemOptionalFields? , UserOptionalFields?)>

<!ELEMENT ItemRenewedResponse (ResponseHeader , MessagingError*)>

<!ELEMENT ItemRequestCancelled (InitiationHeader , UniqueUserId , (UniqueItemId | (UniqueRequestId , UniqueItemId?)) , RequestType , RequestScopeType? , FiscalTransactionInformation? , ItemOptionalFields? , UserOptionalFields?)>

<!ELEMENT ItemRequestCancelledResponse (ResponseHeader , MessagingError*)>

<!ELEMENT ItemRequestUpdated (InitiationHeader , ((UniqueUserId , UniqueItemId , RequestType) | UniqueRequestId) , DeleteRequestFields? , AddRequestFields? , ItemOptionalFields? , UserOptionalFields?)>

<!ELEMENT ItemRequestUpdatedResponse (ResponseHeader , MessagingError*)>

<!ELEMENT ItemRequested (InitiationHeader , UniqueUserId , (UniqueItemId | (UniqueBibliographicId , UniqueRequestId)) , RequestType , RequestScopeType , ShippingInformation? , EarliestDateNeeded? , NeedBeforeDate? , PickupExpiryDate? , DateOfUserRequest? , DateAvailable? , ItemOptionalFields? , UserOptionalFields?)>

<!ELEMENT ItemRequestedResponse (ResponseHeader , MessagingError*)>

<!ELEMENT ItemShipped (InitiationHeader , (UniqueItemId | (UniqueRequestId , UniqueItemId?)) , UniqueUserId? , DateShipped , ShippingInformation , ItemOptionalFields? , UserOptionalFields?)>

<!ELEMENT ItemShippedResponse (ResponseHeader , MessagingError*)>

<!ELEMENT ItemUpdated (InitiationHeader , UniqueItemId , DeleteItemFields? , AddItemFields?)>

<!ELEMENT ItemUpdatedResponse (ResponseHeader , MessagingError*)>

<!ELEMENT LookupAgency (InitiationHeader , UniqueAgencyId , AgencyElementType+)>

<!ELEMENT LookupAgencyResponse (ResponseHeader , (Problem | (UniqueAgencyId , OrganizationNameInformation* , AgencyAddressInformation* , AuthenticationPrompt* , ApplicationProfileSupportedType* , ConsortiumAgreement* , AgencyUserPrivilegeType*)))>

<!ELEMENT LookupItem (InitiationHeader , (UniqueItemId | VisibleItemId | UniqueRequestId) , ItemElementType+ , CurrentBorrowerDesired? , CurrentRequestersDesired?)>

<!ELEMENT LookupItemResponse (ResponseHeader , (Problem | ((UniqueItemId | (UniqueRequestId , UniqueItemId?)) , HoldPickupDate? , DateRecalled? , ItemTransaction? , ItemOptionalFields?)))>

<!ELEMENT LookupUser (InitiationHeader , (UniqueUserId | VisibleUserId | AuthenticationInput+) , UserElementType+ , LoanedItemsDesired? , RequestedItemsDesired? , UserFiscalAccountDesired?)>

<!ELEMENT LookupUserResponse (ResponseHeader , (Problem | (UniqueUserId , UserFiscalAccount* , LoanedItemsCount* , RequestedItemsCount* , UserTransaction? , UserOptionalFields?)))>

<!ELEMENT RecallItem (InitiationHeader , MandatedAction? , UniqueItemId , DesiredDateDue? , ShippingInformation? , ItemElementType* , UserElementType*)>

<!ELEMENT RecallItemResponse (ResponseHeader , (Problem | (UniqueItemId , UniqueUserId? , DateDue? , FiscalTransactionInformation? , ItemOptionalFields? , UserOptionalFields?)))>

<!ELEMENT RenewItem (InitiationHeader , MandatedAction? , (UniqueUserId | AuthenticationInput+) , UniqueItemId , ItemElementType* , UserElementType* , DesiredDateDue? , DesiredDateForReturn? , AcknowledgedFeeAmount? , AcknowledgedItemUseRestrictionType*)>

<!ELEMENT RenewItemResponse (ResponseHeader , ((Problem , RequiredFeeAmount? , RequiredItemUseRestrictionType*) | Pending | (UniqueItemId , UniqueUserId? , DateDue? , DateForReturn? , RenewalCount? , FiscalTransactionInformation? , ItemOptionalFields? , UserOptionalFields?)))>

<!ELEMENT ReportCirculationStatusChange (InitiationHeader , MandatedAction? , UniqueItemId , (UniqueUserId | AuthenticationInput+) , (ItemReportedReturned | ItemReportedNeverBorrowed | ItemReportedLost | ItemReportedMissing) , ItemElementType* , UserElementType*)>

<!ELEMENT ReportCirculationStatusChangeResponse (ResponseHeader , (Problem | (UniqueItemId , UniqueUserId? , ItemOptionalFields? , UserOptionalFields?)))>

<!ELEMENT RequestItem (InitiationHeader , MandatedAction? , (UniqueUserId | AuthenticationInput+) , (UniqueItemId | UniqueBibliographicId) , UniqueRequestId? , RequestType , RequestScopeType , ShippingInformation? , EarliestDateNeeded? , NeedBeforeDate? , PickupExpiryDate? , AcknowledgedFeeAmount? , AcknowledgedItemUseRestrictionType* , ItemElementType* , UserElementType*)>

<!ELEMENT RequestItemResponse (ResponseHeader , ((Problem , RequiredFeeAmount? , RequiredItemUseRestrictionType*) | ((UniqueItemId | (UniqueRequestId , UniqueItemId?)) , UniqueUserId , RequestType , RequestScopeType , ShippingInformation? , DateAvailable? , HoldPickupDate? , FiscalTransactionInformation? , ItemOptionalFields? , UserOptionalFields?)))>

<!ELEMENT ResponseHeader (FromSystemId? , FromSystemAuthentication? , FromAgencyId , FromAgencyAuthentication? , ToSystemId? , ToAgencyId)>

<!ELEMENT SendUserNotice (InitiationHeader , MandatedAction? , UniqueUserId , DateToSend? , UserNoticeDetails)>

<!ELEMENT SendUserNoticeResponse (ResponseHeader , (Problem | (UniqueUserId , (DateSent | DateWillSend)?)))>

<!ELEMENT UndoCheckOutItem (InitiationHeader , MandatedAction? , UniqueItemId , (UniqueUserId | AuthenticationInput+)? , UniqueRequestId?)>

<!ELEMENT UndoCheckOutItemResponse (ResponseHeader , (Problem | (UniqueItemId , UniqueUserId? , FiscalTransactionInformation?)))>

<!ELEMENT UpdateAgency (InitiationHeader , MandatedAction? , UniqueAgencyId , DeleteAgencyFields? , AddAgencyFields?)>

<!ELEMENT UpdateAgencyResponse (ResponseHeader , (Problem | UniqueAgencyId))>

<!ELEMENT UpdateCirculationStatus (InitiationHeader , MandatedAction? , UniqueItemId , CirculationStatus)>

<!ELEMENT UpdateCirculationStatusResponse (ResponseHeader , (Problem | UniqueItemId))>

<!ELEMENT UpdateItem (InitiationHeader , MandatedAction? , UniqueItemId , DeleteItemFields? , AddItemFields?)>

<!ELEMENT UpdateItemResponse (ResponseHeader , (Problem | UniqueItemId))>

<!ELEMENT UpdateRequestItem (InitiationHeader , MandatedAction? , (((UniqueUserId | AuthenticationInput+) , UniqueItemId , RequestType) | UniqueRequestId) , DeleteRequestFields? , AddRequestFields? , ItemElementType* , UserElementType*)>

<!ELEMENT UpdateRequestItemResponse (ResponseHeader , ((Problem , RequiredFeeAmount?) | (UniqueItemId , UniqueUserId , RequestType , RequestScopeType , DateAvailable? , HoldPickupDate? , FiscalTransactionInformation? , ItemOptionalFields? , UserOptionalFields?)))>

<!ELEMENT UpdateUser (InitiationHeader , MandatedAction? , (UniqueUserId | AuthenticationInput+) , DeleteUserFields? , AddUserFields?)>

<!ELEMENT UpdateUserResponse (ResponseHeader , (Problem | UniqueUserId))>

<!ELEMENT UserCreated (InitiationHeader , UniqueUserId , VisibleUserId* , NameInformation , UserAddressInformation* , DateOfBirth? , UserLanguage* , UserPrivilege* , BlockOrTrap*)>

<!ELEMENT UserCreatedResponse (ResponseHeader , MessagingError*)>

<!ELEMENT UserFiscalTransactionCreated (InitiationHeader , UniqueUserId , FiscalTransactionInformation)>

<!ELEMENT UserFiscalTransactionCreatedResponse (ResponseHeader , MessagingError*)>

<!ELEMENT UserNoticeSent (InitiationHeader , UniqueUserId , DateSent , UserNoticeDetails)>

<!ELEMENT UserNoticeSentResponse (ResponseHeader , MessagingError*)>

<!ELEMENT UserUpdated (InitiationHeader , UniqueUserId , DeleteUserFields? , AddUserFields?)>

<!ELEMENT UserUpdatedResponse (ResponseHeader , MessagingError*)>

<!ELEMENT AccountBalance (CurrencyCode , MonetaryValue)>

<!ELEMENT AccountDetails (AccrualDate , FiscalTransactionInformation)>

<!ELEMENT AccrualDate (#PCDATA)>

<!ATTLIST AccrualDate  %dateTime; >
<!ELEMENT AcknowledgedFeeAmount (CurrencyCode , MonetaryValue)>

<!ELEMENT AcknowledgedItemUseRestrictionType (Scheme , Value)>

<!ELEMENT ActualResource (#PCDATA)>

<!ATTLIST ActualResource  %string; >
<!ELEMENT AddAgencyFields (OrganizationNameInformation* , AgencyAddressInformation* , AuthenticationPrompt* , ApplicationProfileSupportedType* , ConsortiumAgreement* , AgencyUserPrivilegeType*)>

<!ELEMENT AddItemFields (BibliographicDescription? , ItemUseRestrictionType* , ItemDescription? , Location* , PhysicalCondition? , SecurityMarker? , SensitizationFlag?)>

<!ELEMENT AddRequestFields (UniqueUserId? , UniqueItemId? , RequestType? , RequestScopeType? , RequestStatusType? , ShippingInformation? , EarliestDateNeeded? , NeedBeforeDate? , PickupExpiryDate? , DateOfUserRequest? , DateAvailable? , AcknowledgedFeeAmount?)>

<!ELEMENT AddUserFields (VisibleUserId* , AuthenticationInput* , NameInformation? , UserAddressInformation* , DateOfBirth? , UserLanguage* , UserPrivilege* , BlockOrTrap*)>

<!ELEMENT AgencyAddressInformation (AgencyAddressRoleType , ValidFromDate? , ValidToDate? , (PhysicalAddress | ElectronicAddress))>

<!ELEMENT AgencyAddressRoleType (Scheme , Value)>

<!ELEMENT AgencyElementType (Scheme , Value)>

<!ELEMENT AgencyUserPrivilegeType (Scheme , Value)>

<!ELEMENT Amount (CurrencyCode , MonetaryValue)>

<!ELEMENT ApplicationProfileType (Scheme , Value)>

<!ELEMENT ApplicationProfileSupportedType (Scheme , Value)>

<!ELEMENT AuthenticationDataFormatType (Scheme , Value)>

<!ELEMENT AuthenticationInput (AuthenticationInputData , AuthenticationDataFormatType , AuthenticationInputType)>

<!ELEMENT AuthenticationInputData (#PCDATA)>

<!ATTLIST AuthenticationInputData  %string; >
<!ELEMENT AuthenticationInputType (Scheme , Value)>

<!ELEMENT AuthenticationPrompt (PromptOutput , PromptInput)>

<!ELEMENT AuthenticationPromptData (#PCDATA)>

<!ATTLIST AuthenticationPromptData  %string; >
<!ELEMENT AuthenticationPromptType (Scheme , Value)>

<!ELEMENT Author (#PCDATA)>

<!ATTLIST Author  %string; >
<!ELEMENT AuthorOfComponent (#PCDATA)>

<!ATTLIST AuthorOfComponent  %string; >
<!ELEMENT BibliographicDescription (Author? , AuthorOfComponent? , BibliographicItemId? , BibliographicRecordId? , ComponentId? , Edition? , Pagination? , PlaceOfPublication? , PublicationDate? , PublicationDateOfComponent? , Publisher? , SeriesTitleNumber? , Title? , TitleOfComponent? , BibliographicLevel? , SponsoringBody? , ElectronicDataFormatType? , Language? , MediumType?)>

<!ELEMENT BibliographicItemId (BibliographicItemIdentifier , BibliographicItemIdentifierCode?)>

<!ELEMENT BibliographicItemIdentifier (#PCDATA)>

<!ATTLIST BibliographicItemIdentifier  %string; >
<!ELEMENT BibliographicItemIdentifierCode (Scheme , Value)>

<!ELEMENT BibliographicLevel (Scheme , Value)>

<!ELEMENT BibliographicRecordId (BibliographicRecordIdentifier , (UniqueAgencyId | BibliographicRecordIdentifierCode))>

<!ELEMENT BibliographicRecordIdentifier (#PCDATA)>

<!ATTLIST BibliographicRecordIdentifier  %string; >
<!ELEMENT BibliographicRecordIdentifierCode (Scheme , Value)>

<!ELEMENT BinNumber (#PCDATA)>

<!ATTLIST BinNumber  %string; >
<!ELEMENT BlockOrTrap (UniqueAgencyId , BlockOrTrapType , ValidFromDate? , ValidToDate?)>

<!ELEMENT BlockOrTrapType (Scheme , Value)>

<!ELEMENT CallNumber (#PCDATA)>

<!ATTLIST CallNumber  %string; >
<!ELEMENT CareOf (#PCDATA)>

<!ATTLIST CareOf  %string; >
<!ELEMENT ChronologyLevelInstance ((ChronologyCaption | (ChronologyLevel , ChronologyCaption?)) , ChronologyValue)>

<!ELEMENT ChronologyCaption (#PCDATA)>

<!ATTLIST ChronologyCaption  %string; >
<!ELEMENT ChronologyLevel (#PCDATA)>

<!ATTLIST ChronologyLevel  %positiveInteger; >
<!ELEMENT ChronologyValue (#PCDATA)>

<!ATTLIST ChronologyValue  %string; >
<!ELEMENT CirculationStatus (Scheme , Value)>

<!ELEMENT ComponentId (ComponentIdentifierType , ComponentIdentifier)>

<!ELEMENT ComponentIdentifier (#PCDATA)>

<!ATTLIST ComponentIdentifier  %string; >
<!ELEMENT ComponentIdentifierType (Scheme , Value)>

<!ELEMENT ConsortiumAgreement (Scheme , Value)>

<!ELEMENT CopyNumber (#PCDATA)>

<!ATTLIST CopyNumber  %string; >
<!ELEMENT Country (#PCDATA)>

<!ATTLIST Country  %string; >
<!ELEMENT CurrencyCode (Scheme , Value)>

<!ELEMENT CurrentBorrower (UniqueUserId)>

<!ELEMENT CurrentBorrowerDesired EMPTY>

<!ELEMENT CurrentRequester (UniqueUserId)>

<!ELEMENT CurrentRequestersDesired EMPTY>

<!ELEMENT DateAvailable (#PCDATA)>

<!ATTLIST DateAvailable  %dateTime; >
<!ELEMENT DateCheckedOut (#PCDATA)>

<!ATTLIST DateCheckedOut  %dateTime; >
<!ELEMENT DateReportedReturned (#PCDATA)>

<!ATTLIST DateReportedReturned  %dateTime; >
<!ELEMENT DateDue (#PCDATA)>

<!ATTLIST DateDue  %dateTime; >
<!ELEMENT DateEventOccurred (#PCDATA)>

<!ATTLIST DateEventOccurred  %dateTime; >
<!ELEMENT DateForReturn (#PCDATA)>

<!ATTLIST DateForReturn  %dateTime; >
<!ELEMENT DateOfBirth (#PCDATA)>

<!ATTLIST DateOfBirth  %dateTime; >
<!ELEMENT DateOfExpectedReply (#PCDATA)>

<!ATTLIST DateOfExpectedReply  %dateTime; >
<!ELEMENT DateOfUserPrivilegeStatus (#PCDATA)>

<!ATTLIST DateOfUserPrivilegeStatus  %dateTime; >
<!ELEMENT DateOfUserRequest (#PCDATA)>

<!ATTLIST DateOfUserRequest  %dateTime; >
<!ELEMENT DatePlaced (#PCDATA)>

<!ATTLIST DatePlaced  %dateTime; >
<!ELEMENT DateRecalled (#PCDATA)>

<!ATTLIST DateRecalled  %dateTime; >
<!ELEMENT DateReceived (#PCDATA)>

<!ATTLIST DateReceived  %dateTime; >
<!ELEMENT DateRenewed (#PCDATA)>

<!ATTLIST DateRenewed  %dateTime; >
<!ELEMENT DateReturned (#PCDATA)>

<!ATTLIST DateReturned  %dateTime; >
<!ELEMENT DateSent (#PCDATA)>

<!ATTLIST DateSent  %dateTime; >
<!ELEMENT DateShipped (#PCDATA)>

<!ATTLIST DateShipped  %dateTime; >
<!ELEMENT DateToSend (#PCDATA)>

<!ATTLIST DateToSend  %dateTime; >
<!ELEMENT DateWillSend (#PCDATA)>

<!ATTLIST DateWillSend  %dateTime; >
<!ELEMENT DeleteAgencyFields (OrganizationNameInformation* , AgencyAddressInformation* , AuthenticationPrompt* , ApplicationProfileSupportedType* , ConsortiumAgreement* , AgencyUserPrivilegeType*)>

<!ELEMENT DeleteItemFields (BibliographicDescription? , ItemUseRestrictionType* , ItemDescription? , Location* , PhysicalCondition? , SecurityMarker? , SensitizationFlag?)>

<!ELEMENT DeleteRequestFields (UniqueUserId? , UniqueItemId? , RequestType? , RequestScopeType? , RequestStatusType? , ShippingInformation? , EarliestDateNeeded? , NeedBeforeDate? , PickupExpiryDate? , DateOfUserRequest? , DateAvailable? , AcknowledgedFeeAmount?)>

<!ELEMENT DeleteUserFields (VisibleUserId* , AuthenticationInput* , NameInformation? , UserAddressInformation* , DateOfBirth? , UserLanguage* , UserPrivilege* , BlockOrTrap*)>

<!ELEMENT DesiredDateDue (#PCDATA)>

<!ATTLIST DesiredDateDue  %dateTime; >
<!ELEMENT DesiredDateForReturn (#PCDATA)>

<!ATTLIST DesiredDateForReturn  %dateTime; >
<!ELEMENT Destination (Location | (BinNumber , Location?))>

<!ELEMENT District (#PCDATA)>

<!ATTLIST District  %string; >
<!ELEMENT EarliestDateNeeded (#PCDATA)>

<!ATTLIST EarliestDateNeeded  %dateTime; >
<!ELEMENT Edition (#PCDATA)>

<!ATTLIST Edition  %string; >
<!ELEMENT ElectronicAddress (ElectronicAddressType , ElectronicAddressData)>

<!ELEMENT ElectronicAddressData (#PCDATA)>

<!ATTLIST ElectronicAddressData  %string; >
<!ELEMENT ElectronicAddressType (Scheme , Value)>

<!ELEMENT ElectronicDataFormatType (Scheme , Value)>

<!ELEMENT ElectronicResource ((ElectronicDataFormatType , ActualResource) | ReferenceToResource)>

<!ELEMENT ElectronicResourceProvidedFlag EMPTY>

<!ELEMENT ElementName (#PCDATA)>

<!ATTLIST ElementName  %string; >
<!ELEMENT EnumerationLevelInstance ((EnumerationCaption | (EnumerationLevel , EnumerationCaption?)) , EnumerationValue)>

<!ELEMENT EnumerationCaption (#PCDATA)>

<!ATTLIST EnumerationCaption  %string; >
<!ELEMENT EnumerationLevel (#PCDATA)>

<!ATTLIST EnumerationLevel  %positiveInteger; >
<!ELEMENT EnumerationValue (#PCDATA)>

<!ATTLIST EnumerationValue  %string; >
<!ELEMENT FiscalActionType (Scheme , Value)>

<!ELEMENT FiscalTransactionDescription (#PCDATA)>

<!ATTLIST FiscalTransactionDescription  %string; >
<!ELEMENT FiscalTransactionIdentifierValue (#PCDATA)>

<!ATTLIST FiscalTransactionIdentifierValue  %string; >
<!ELEMENT FiscalTransactionInformation (FiscalActionType , FiscalTransactionReferenceId? , RelatedFiscalTransactionReferenceId* , FiscalTransactionType , ValidFromDate? , ValidToDate? , Amount , PaymentMethodType? , FiscalTransactionDescription? , UniqueRequestId? , ItemDetails?)>

<!ELEMENT FiscalTransactionReferenceId (UniqueAgencyId , FiscalTransactionIdentifierValue)>

<!ELEMENT FiscalTransactionType (Scheme , Value)>

<!ELEMENT FromAgencyAuthentication (#PCDATA)>

<!ATTLIST FromAgencyAuthentication  %string; >
<!ELEMENT FromAgencyId (UniqueAgencyId)>

<!ELEMENT FromSystemAuthentication (#PCDATA)>

<!ATTLIST FromSystemAuthentication  %string; >
<!ELEMENT FromSystemId (Scheme , Value)>

<!ELEMENT GivenName (#PCDATA)>

<!ATTLIST GivenName  %string; >
<!ELEMENT HoldingsChronology (ChronologyLevelInstance+)>

<!ELEMENT HoldingsEnumeration (EnumerationLevelInstance+)>

<!ELEMENT HoldingsInformation (StructuredHoldingsData+ | UnstructuredHoldingsData)>

<!ELEMENT HoldPickupDate (#PCDATA)>

<!ATTLIST HoldPickupDate  %dateTime; >
<!ELEMENT HoldQueueLength (#PCDATA)>

<!ATTLIST HoldQueueLength  %nonNegativeInteger; >
<!ELEMENT HoldQueuePosition (#PCDATA)>

<!ATTLIST HoldQueuePosition  %positiveInteger; >
<!ELEMENT HouseName (#PCDATA)>

<!ATTLIST HouseName  %string; >
<!ELEMENT IndeterminateLoanPeriodFlag EMPTY>

<!ELEMENT Initials (#PCDATA)>

<!ATTLIST Initials  %string; >
<!ELEMENT ItemDescription (VisibleItemId? , CallNumber? , CopyNumber? , ItemDescriptionLevel? , HoldingsInformation?)>

<!ELEMENT ItemDescriptionLevel (Scheme , Value)>

<!ELEMENT ItemDetails (UniqueItemId , BibliographicDescription , DateCheckedOut? , DateRenewed* , (DateDue | IndeterminateLoanPeriodFlag | NonReturnableFlag)? , DateReturned?)>

<!ELEMENT ItemElementType (Scheme , Value)>

<!ELEMENT ItemIdentifierValue (#PCDATA)>

<!ATTLIST ItemIdentifierValue  %string; >
<!ELEMENT ItemOptionalFields (BibliographicDescription? , ItemUseRestrictionType* , CirculationStatus? , HoldQueueLength? , ItemDescription? , Location* , PhysicalCondition? , ElectronicResource? , SecurityMarker? , SensitizationFlag?)>

<!ELEMENT ItemReportedLost EMPTY>

<!ELEMENT ItemReportedMissing EMPTY>

<!ELEMENT ItemReportedNeverBorrowed EMPTY>

<!ELEMENT ItemReportedReturned (DateReportedReturned)>

<!ELEMENT ItemTransaction (CurrentBorrower? , CurrentRequester*)>

<!ELEMENT ItemUseRestrictionType (Scheme , Value)>

<!ELEMENT Language (Scheme , Value)>

<!ELEMENT Line1 (#PCDATA)>

<!ATTLIST Line1  %string; >
<!ELEMENT Line2 (#PCDATA)>

<!ATTLIST Line2  %string; >
<!ELEMENT LoanedItem (UniqueItemId , ReminderLevel , (DateDue | IndeterminateLoanPeriodFlag) , Amount)>

<!ELEMENT LoanedItemCountValue (#PCDATA)>

<!ATTLIST LoanedItemCountValue  %nonNegativeInteger; >
<!ELEMENT LoanedItemsCount ((CirculationStatus | ItemUseRestrictionType) , LoanedItemCountValue)>

<!ELEMENT LoanedItemsDesired EMPTY>

<!ELEMENT Locality (#PCDATA)>

<!ATTLIST Locality  %string; >
<!ELEMENT Location (LocationType , LocationName , ValidFromDate? , ValidToDate?)>

<!ELEMENT LocationName (LocationNameInstance+)>

<!ELEMENT LocationNameInstance (LocationNameLevel , LocationNameValue)>

<!ELEMENT LocationNameLevel (#PCDATA)>

<!ATTLIST LocationNameLevel  %positiveInteger; >
<!ELEMENT LocationNameValue (#PCDATA)>

<!ATTLIST LocationNameValue  %string; >
<!ELEMENT LocationType (Scheme , Value)>

<!ELEMENT LocationWithinBuilding (#PCDATA)>

<!ATTLIST LocationWithinBuilding  %string; >
<!ELEMENT MandatedAction (DateEventOccurred)>

<!ELEMENT MediumType (Scheme , Value)>

<!ELEMENT MessagingError (MessagingErrorType , MessagingErrorElement)>

<!ELEMENT MessagingErrorElement (ElementName , (MessagingErrorElement | MessagingErrorValue)?)>

<!ELEMENT MessagingErrorType (Scheme , Value)>

<!ELEMENT MessagingErrorValue (#PCDATA)>

<!ATTLIST MessagingErrorValue  %string; >
<!ELEMENT MonetaryValue (#PCDATA)>

<!ATTLIST MonetaryValue  %integer; >
<!ELEMENT NameInformation (PersonalNameInformation | OrganizationNameInformation+)>

<!ELEMENT NeedBeforeDate (#PCDATA)>

<!ATTLIST NeedBeforeDate  %dateTime; >
<!ELEMENT NonReturnableFlag EMPTY>

<!ELEMENT NoticeContent (#PCDATA)>

<!ATTLIST NoticeContent  %string; >
<!ELEMENT NoticeItem (ItemDetails , Amount?)>

<!ELEMENT NoticeType (Scheme , Value)>

<!ELEMENT OnBehalfOfAgency (UniqueAgencyId)>

<!ELEMENT OrganizationName (#PCDATA)>

<!ATTLIST OrganizationName  %string; >
<!ELEMENT OrganizationNameInformation (OrganizationNameType , OrganizationName)>

<!ELEMENT OrganizationNameType (Scheme , Value)>

<!ELEMENT Pagination (#PCDATA)>

<!ATTLIST Pagination  %string; >
<!ELEMENT PaymentMethodType (Scheme , Value)>

<!ELEMENT Pending (DateOfExpectedReply?)>

<!ELEMENT PersonalNameInformation (UnstructuredPersonalUserName | (StructuredPersonalUserName , UnstructuredPersonalUserName?))>

<!ELEMENT PhysicalAddress ((StructuredAddress | UnstructuredAddress) , PhysicalAddressType)>

<!ELEMENT PhysicalAddressType (Scheme , Value)>

<!ELEMENT PhysicalCondition (PhysicalConditionType , PhysicalConditionDetails?)>

<!ELEMENT PhysicalConditionDetails (#PCDATA)>

<!ATTLIST PhysicalConditionDetails  %string; >
<!ELEMENT PhysicalConditionType (Scheme , Value)>

<!ELEMENT PickupDate (#PCDATA)>

<!ATTLIST PickupDate  %dateTime; >
<!ELEMENT PickupExpiryDate (#PCDATA)>

<!ATTLIST PickupExpiryDate  %dateTime; >
<!ELEMENT PlaceOfPublication (#PCDATA)>

<!ATTLIST PlaceOfPublication  %string; >
<!ELEMENT PostOfficeBox (#PCDATA)>

<!ATTLIST PostOfficeBox  %string; >
<!ELEMENT PostalCode (#PCDATA)>

<!ATTLIST PostalCode  %string; >
<!ELEMENT Prefix (#PCDATA)>

<!ATTLIST Prefix  %string; >
<!ELEMENT Problem (MessagingError+ | ProcessingError+)>

<!ELEMENT ProcessingError (ProcessingErrorType , ProcessingErrorElement)>

<!ELEMENT ProcessingErrorElement (ElementName , (ProcessingErrorElement | ProcessingErrorValue)?)>

<!ELEMENT ProcessingErrorType (Scheme , Value)>

<!ELEMENT ProcessingErrorValue (#PCDATA)>

<!ATTLIST ProcessingErrorValue  %string; >
<!ELEMENT PromptInput (AuthenticationInputType , AuthenticationDataFormatType , SensitiveDataFlag?)>

<!ELEMENT PromptOutput (AuthenticationPromptData , AuthenticationPromptType)>

<!ELEMENT PublicationDate (#PCDATA)>

<!ATTLIST PublicationDate  %string; >
<!ELEMENT PublicationDateOfComponent (#PCDATA)>

<!ATTLIST PublicationDateOfComponent  %string; >
<!ELEMENT Publisher (#PCDATA)>

<!ATTLIST Publisher  %string; >
<!ELEMENT ReferenceToResource (#PCDATA)>

<!ATTLIST ReferenceToResource  %string; >
<!ELEMENT Region (#PCDATA)>

<!ATTLIST Region  %string; >
<!ELEMENT RelatedFiscalTransactionReferenceId (UniqueAgencyId , FiscalTransactionIdentifierValue)>

<!ELEMENT ReminderLevel (#PCDATA)>

<!ATTLIST ReminderLevel  %positiveInteger; >
<!ELEMENT RenewalCount (#PCDATA)>

<!ATTLIST RenewalCount  %nonNegativeInteger; >
<!ELEMENT RenewalNotPermitted EMPTY>

<!ELEMENT RequestedActionType (Scheme , Value)>

<!ELEMENT RequestIdentifierValue (#PCDATA)>

<!ATTLIST RequestIdentifierValue  %string; >
<!ELEMENT RequestScopeType (Scheme , Value)>

<!ELEMENT RequestStatusType (Scheme , Value)>

<!ELEMENT RequestType (Scheme , Value)>

<!ELEMENT RequestedItem ((UniqueItemId | (UniqueRequestId , UniqueItemId?)) , RequestType , RequestStatusType , DatePlaced , PickupDate? , PickupExpiryDate? , ReminderLevel? , HoldQueuePosition?)>

<!ELEMENT RequestedItemCountValue (#PCDATA)>

<!ATTLIST RequestedItemCountValue  %nonNegativeInteger; >
<!ELEMENT RequestedItemsCount ((RequestType | CirculationStatus | ItemUseRestrictionType) , RequestedItemCountValue)>

<!ELEMENT RequestedItemsDesired EMPTY>

<!ELEMENT RequiredFeeAmount (CurrencyCode , MonetaryValue)>

<!ELEMENT RequiredItemUseRestrictionType (Scheme , Value)>

<!ELEMENT ResourceDesired EMPTY>

<!ELEMENT RoutingInformation (RoutingInstructions , Destination , RequestType? , UniqueUserId?)>

<!ELEMENT RoutingInstructions (#PCDATA)>

<!ATTLIST RoutingInstructions  %string; >
<!ELEMENT Scheme (#PCDATA)>

<!ATTLIST Scheme  %string; >
<!ELEMENT SecurityMarker (Scheme , Value)>

<!ELEMENT SensitiveDataFlag EMPTY>

<!ELEMENT SensitizationFlag EMPTY>

<!ELEMENT SeriesTitleNumber (#PCDATA)>

<!ATTLIST SeriesTitleNumber  %string; >
<!ELEMENT ShippingInformation (ShippingInstructions? , ShippingNote? , (PhysicalAddress | ElectronicAddress))>

<!ELEMENT ShippingInstructions (#PCDATA)>

<!ATTLIST ShippingInstructions  %string; >
<!ELEMENT ShippingNote (#PCDATA)>

<!ATTLIST ShippingNote  %string; >
<!ELEMENT SponsoringBody (#PCDATA)>

<!ATTLIST SponsoringBody  %string; >
<!ELEMENT Street (#PCDATA)>

<!ATTLIST Street  %string; >
<!ELEMENT StructuredAddress (((LocationWithinBuilding? , HouseName? , (District | (PostOfficeBox , District?) | (Street , PostOfficeBox? , District?))) | (Line1 , Line2?)) , Locality? , Region? , Country? , PostalCode? , CareOf?)>

<!ELEMENT StructuredHoldingsData (HoldingsChronology | (HoldingsEnumeration , HoldingsChronology?))>

<!ELEMENT StructuredPersonalUserName (Prefix? , GivenName? , Initials? , Surname , Suffix?)>

<!ELEMENT Suffix (#PCDATA)>

<!ATTLIST Suffix  %string; >
<!ELEMENT Surname (#PCDATA)>

<!ATTLIST Surname  %string; >
<!ELEMENT Title (#PCDATA)>

<!ATTLIST Title  %string; >
<!ELEMENT TitleOfComponent (#PCDATA)>

<!ATTLIST TitleOfComponent  %string; >
<!ELEMENT ToAgencyId (UniqueAgencyId)>

<!ELEMENT ToSystemId (Scheme , Value)>

<!ELEMENT UniqueAgencyId (Scheme , Value)>

<!ELEMENT UniqueBibliographicId (BibliographicItemId | BibliographicRecordId)>

<!ELEMENT UniqueItemId (UniqueAgencyId , ItemIdentifierValue)>

<!ELEMENT UniqueRequestId (UniqueAgencyId , RequestIdentifierValue)>

<!ELEMENT UniqueUserId (UniqueAgencyId , UserIdentifierValue)>

<!ELEMENT UnstructuredAddress (UnstructuredAddressType , UnstructuredAddressData)>

<!ELEMENT UnstructuredAddressData (#PCDATA)>

<!ATTLIST UnstructuredAddressData  %string; >
<!ELEMENT UnstructuredAddressType (Scheme , Value)>

<!ELEMENT UnstructuredHoldingsData (#PCDATA)>

<!ATTLIST UnstructuredHoldingsData  %string; >
<!ELEMENT UnstructuredPersonalUserName (#PCDATA)>

<!ATTLIST UnstructuredPersonalUserName  %string; >
<!ELEMENT UserAddressInformation (UserAddressRoleType , ValidFromDate? , ValidToDate? , (PhysicalAddress | ElectronicAddress))>

<!ELEMENT UserAddressRoleType (Scheme , Value)>

<!ELEMENT UserElementType (Scheme , Value)>

<!ELEMENT UserFiscalAccount (AccountBalance , AccountDetails*)>

<!ELEMENT UserFiscalAccountDesired EMPTY>

<!ELEMENT UserIdentifierValue (#PCDATA)>

<!ATTLIST UserIdentifierValue  %string; >
<!ELEMENT UserLanguage (Scheme , Value)>

<!ELEMENT UserNoticeDetails (NoticeType , NoticeContent? , (NoticeItem+ | UserFiscalAccount | UserPrivilege))>

<!ELEMENT UserOptionalFields (VisibleUserId* , NameInformation? , UserAddressInformation* , DateOfBirth? , UserLanguage* , UserPrivilege* , BlockOrTrap*)>

<!ELEMENT UserPrivilege (UniqueAgencyId , AgencyUserPrivilegeType , ValidFromDate? , ValidToDate? , UserPrivilegeFee? , UserPrivilegeStatus? , UserPrivilegeDescription?)>

<!ELEMENT UserPrivilegeDescription (#PCDATA)>

<!ATTLIST UserPrivilegeDescription  %string; >
<!ELEMENT UserPrivilegeFee (Amount , PaymentMethodType?)>

<!ELEMENT UserPrivilegeStatus (UserPrivilegeStatusType , DateOfUserPrivilegeStatus?)>

<!ELEMENT UserPrivilegeStatusType (Scheme , Value)>

<!ELEMENT UserTransaction (RequestedItem* , LoanedItem*)>

<!ELEMENT ValidFromDate (#PCDATA)>

<!ATTLIST ValidFromDate  %dateTime; >
<!ELEMENT ValidToDate (#PCDATA)>

<!ATTLIST ValidToDate  %dateTime; >
<!ELEMENT Value (#PCDATA)>

<!ATTLIST Value  %string; >
<!ELEMENT VisibleItemId (VisibleItemIdentifierType , VisibleItemIdentifier)>

<!ELEMENT VisibleItemIdentifier (#PCDATA)>

<!ATTLIST VisibleItemIdentifier  %string; >
<!ELEMENT VisibleItemIdentifierType (Scheme , Value)>

<!ELEMENT VisibleUserId (UniqueAgencyId? , VisibleUserIdentifierType , VisibleUserIdentifier)>

<!ELEMENT VisibleUserIdentifier (#PCDATA)>

<!ATTLIST VisibleUserIdentifier  %string; >
<!ELEMENT VisibleUserIdentifierType (Scheme , Value)>




