TVS Model


The TVS model is an approach to XML encoding of MARC data that distinguishes three different levels of goals: Transport, Validation and Services.

The theory behind this model is explained in a paper presented to the next IFLA conference in Glasgow, August 2002:

XML and bibliographic data: the TVS (Transport, Validation and Services) model, JOAQUIM DE CARVALHO (BookMARC/University of Coimbra, Coimbra, Portugal) and MARIA INÊS CORDEIRO (Art Library, Calouste Gulbenkian Foundation, Lisbon, Portugal)

The key point in this approach is that by specifying requirements for XML usage at these three levels, in an articulated but distinct way, a much needed clarification about the role of XML in bibliographic systems can be achieved.

Transport formats

By “transport format” we mean an XML format designed to take a role similar to that of ISO 2709. Its purpose is to allow the efficient transport of bibliographic data. Like ISO 2709 such a format contains the necessary information for representing the morphological structure of the MARC record, i. e. without aiming at validation of the complete syntax/semantics of the MARC format, but rather mapping directly to the MARC record main structural levels. ISO 2709 was modelled to the needs of the technological environment of its time; an XML equivalent for the current technological context must target the interoperability paradigms of today: Web services.

So far, most of the approaches to encoding bibliographic records in XML have been based on the assumption that the use of XML would imply the expression of the whole syntax/semantics of MARC, enforcing validation. Not only this approach has proved difficult (very complex and long DTDs or schema) but also it does not facilitate the transport and reuse of data in practical applications. This is because in such a way only valid records can be represented, and also because it is difficult to “rebuild” MARC data from the very complex MARC XML records generated in such a model.

BookMARC XML MARC for Services - XMS

The XML MARC for Services (XMS) schema addresses the issues of integrating MARC data in the software architecture of Web Services by providing a format that is automatically handled by frameworks like .NET or AXIS for Java. XMS allows these automatically frameworks to produce complex data strucutures representing bibliographic data, therefore simplifying greatly the programmers' work in building applications to access bibliographic databases.

The main difference from XMS to other transport formats is that is includes information about data types and follows the encoding rules of SOAP, the underlying protocol of Web Services. XMS is tested against the main Web Services frameworks.

A summary of XMS features:

XMS Schema
XMS Sample Record

Other transport formats

Other transport formats are available from several sources, including the Library of Congress. These formats are similar in philosophy to our XMS format. The main difference is that XMS is target to WSDL integration and to automatic serialization.


Transport formats conversion stylesheets

The new LoC XML "slim" format is a great improvement over the previous schema, which targeted a self-validating schema which would allow only valid records. However, the new LoC format does not fit easily with current Web services frameworks, mainly because of the usage of XML attributtes and NMTOKENS.

The following stylesheets convert to and from the LoC XMLMarc format and XMS.

XMS to LoC MARC conversion stylesheet
LoC MARC to XMS conversion stylesheet

Validation formats

A validation format is a schema for representing of the meta-information necessary to validate and document MARC records. You can see it as an XML version of the MARC or UNIMARC manual. In the TVS model the validation format has the central task of keeping the validation rules as data. This can be used for validation software, for the automatic production of documentation and for "explaining a record", decoding the meaning of a specific field, data element, etc. by looking it up automatically in the machine-readable manual.

BookMARC schema (still-in-progress) for meta-information, concerning the UNIMARC format.
UNIMARC Manual in XML (example)
An example of how the UNIMARC manual can be expressed in XML; this preliminary example shows Block 0 only.
UNIMARC Doc HTML Transformation Stylesheet
This stylesheet produces an HTML version of the XML UNIMARC manual. By applying this stylesheet to the XML metadata a readable version in HTML can be produced. Other stylesheets could be produced for other formats such as PDF.
An example of applying the previous stylesheet to the Block 0 part of the XML UNIMARC manual.
Explained Record Example
In this example a special stylesheet is applied to a given record in a transport format, merging it with the relevant information of the XML UNIMARC manual. The result is an "explained record", with field and subfield names and application rules, as well as relevant coded data information, explained in context.


The next generation of interoperability frameworks will use self-describing services. The Web Services Description Language (WSDL) allows a library to provide access to its information systems in an easy and mainstream way, greatly increasing the integration potential with other software systems.

The National Library of Portugal is prototyping this new approach using the XMS transport service for data exchange. See the next section on how the access these Web services.

National Library of Portugal web catalogue at http://sirius.bn.pt/sirius/sirius.exe/
This is the Web interface to the library catalog (over 1 million records) available for normal searches. By pointing to this same URL with Microsoft Visual Studio .NET a description of available web services can be reached, namely:
Get Record WSDL
A WSDL description for a simple service that fetches a record by ISBN or other unique attribute.
Search WSDL
A more complex Search Web Service, that allows the formulation of Boolean expressions and the scrolling through search results.

Consuming the services

If you are a programmer and want to test the above Web Services check this technotes on how to quickly produce your own client code.

Visual Studio .Net
Axis for Java

Sample clients

We provide sample clients with source code for tutorial purposes:

Visual BASIC .NET clients

The Visual Studio .NET client applications need the Microsoft .NET Framework, available at


How to run these clients:

  1. Download and install the Microsoft .NET Framework
  2. Download BookMARC's Visual Studio .NET Sample Client
  3. After downloading the client extract the zip file into a directory
  4. Double-click on the program files to execute them

Java/Axis Client

The Java/Axis client application uses the Axis package available at http://xml.apache.org/axis/index.html. We provide a copy of the necessary AXIS file here but you may want to check the Apache site for more update versions.

  1. Download Java/Axis Libraries
  2. Download the BookMARC's java client jar file
  3. Add to your class path the jars files downloaded above
  4. To execute them (adapt the %CP% token to the environment variable that contains your classpath):
    java -cp %CP% pt.bookmarc.client.GetRecordByISBNClient
    java -cp %CP% pt.bookmarc.client.SearchClient

Comments and requests for more information