XML Application 6.5 Development Guide
XML Application 6.5 Development Guide
XML Application 6.5 Development Guide
XML Applications
Version 6.5
Development Guide
P/N 300007228 A01
EMC Corporation
Corporate Headquarters:
Hopkinton, MA 01748‑9103
1‑508‑435‑1000
www.EMC.com
Copyright © 2003 ‑ 2008 EMC Corporation. All rights reserved.
Published July 2008
EMC believes the information in this publication is accurate as of its publication date. The information is subject to change
without notice.
THE INFORMATION IN THIS PUBLICATION IS PROVIDED AS IS. EMC CORPORATION MAKES NO REPRESENTATIONS
OR WARRANTIES OF ANY KIND WITH RESPECT TO THE INFORMATION IN THIS PUBLICATION, AND SPECIFICALLY
DISCLAIMS IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Use, copying, and distribution of any EMC software described in this publication requires an applicable software license.
For the most up‑to‑date listing of EMC product names, see EMC Corporation Trademarks on EMC.com.
All other trademarks used herein are the property of their respective owners.
Table of Contents
Preface ........................................................................................................................... 9
List of Figures
List of Tables
This manual applies to XML applications that will run on client applications that use Documentum
Foundation Classes (DFC) 6.5. The manual describes how to create and use Documentum XML
applications to chunk and store XML documents in a Documentum repository, and how to publish
chunks of XML content from a repository.
This manual is written for application developers and system administrators who are implementing
XML management processes within their enterprise using Documentum.
To design, develop, and install an XML application in the repository, the following knowledge
is required:
• XML
• DTD or W3C schema
• Documentum object model and core capabilities
For publishing XML content, the following knowledge and skills may be required:
• XSL
• DQL (Documentum Query Language)
• Upon checkin, the document is once again chunked (accounting for any changes to
the document) and appears again as a virtual document in the repository.
• If the DTD or W3C Schema is managed by the XML application, the user does not
have to worry about associating a checked‑out document with a DTD or W3C
Schema, since it will download to the user’s system along with the document, and
the document’s declaration will be patched to point to that location.
• Users can share XML content by viewing or checking out the chunks or linked files
(such as a graphic) they want to share and copying them into their documents, or by
using one of the Documentum integrations with Arbortext Epic or Corel XMetal.
Upon import or checkin of the document, the content is automatically shared.
XML applications store chunked XML documents as virtual documents in the repository,
which offer the following advantages:
• Users can check out either an entire XML document or individual virtual document
components (corresponding to chunked XML objects).
• Individual components of virtual documents can be linked to other locations or
shared by other virtual documents. Content updated once appears everywhere.
• Components in the same virtual document can have different permissions and
metadata.
• You can attach a document lifecycle to a virtual document or any of its components.
• An entire virtual document or any individual component can be inserted as a
package in a workflow.
• If you do not want content of a component to be updated in a particular virtual
document, you can set a binding rule, which controls the version of the component
that is used within that virtual document.
For more technical information about virtual documents, see Documentum Content Server
Fundamentals Guide.
During checkin, the XML application applies and rechunks the document according
to the rules in the XML application configuration file. However, the Documentum
attributes override any configuration file settings. Chunks marked read‑only by the
Documentum attributes are not checked in. Chunks are checked in to the same location
from where they were checked out, even if the configuration file specifies a different
location for that chunk. Any binding rules set in a Documentum attribute will override
any binding rules set in the configuration file.
Note: Application support documents and the DTD or W3C schema are downloaded
only for export and checkout.
The concepts of import and checkin become blurred when you work with XML
documents that contain a mixture of checked‑out and new chunks. For example,
suppose you check out an entire document and add a new element that has an associated
chunking rule in the XML application. When the document is checked in and rechunked,
the new chunks, identified by the fact that they have no Documentum attributes, will
be imported. The checked‑out chunks will be checked in, as long as they were marked
editable in the Documentum attributes. Any chunks that were marked read‑only will
be discarded. If you use an editor that makes use of a Documentum integration, such
as Arbortext Epic or Corel XMetal, any chunks marked with a read‑only Documentum
attribute will not be editable.
Cancel checkout does not read the content of an XML document and thus ignores the
information in the Documentum attributes, so cancelling checkout of an entire document
will cancel the checkout for every single component of the virtual document.
Note: If any of the chunks were previously checked out to the same user, either alone
or as part of another document, checkout will be cancelled for those chunks also.
Superusers performing a cancel checkout will break all locks on chunks, even those
checked out to other users.
If validation is turned on in the XML application (see <validation>, page 211), the
document is validated during all inbound operations, unless the XML application
configuration file allows work in progress (through use of the <work_in_progress>
element) or unless a processing instruction is used to ignore the XML application entirely
(<?dctm xml_app=ʺignoreʺ?>).
On the output side, you can return XML data through the use of XDQL. You can use XSLT
stylesheets to run XDQL queries and transform the resulting content to another format
such as HTML or plain text. For more information, see Chapter 6, Transformations.
many custom object types you create, and which custom properties you create for those
types, depends on your business and data models.
Determining ACLs
ACLs define which roles of users can access an object and what level of access the users
have. For any chunk that is created, you can specify a particular ACL name and domain,
or you can specify one of the Documentum default ACLs. The values can be hard‑coded
in the XML application configuration file, they can come from external variables, XPath
expressions, or Java classes, or they can be extracted from the XML document in the
same way that repository properties are assigned. You can also use a document lifecycle
to set permissions.
For information about ACLs and how they are implemented in the repository, refer
to Documentum Content Server Fundamentals Guide and the Documentum Content Server
Administration Guide.
The chunked object must be easy to find in the repository. Creating a repository property
for the root element of each chunk will aid in search, XDQL aggregation, and publishing.
Content within a chunked content boundary that distinguishes the content should
be mapped to repository properties for the chunked object. Although full‑text zone
searching is possible, the best search results occur when the repository properties set for
chunks carry values that can be used in a query.
The granularity of chunking directly impacts server performance and scalability. Empty
content reuse will degrade performance of all XML content management processes.
User groups, permission sets, document lifecycles, and workflows should be named and
structured to reflect the mapped properties and scope of managed XML content.
Because the XML documents will be stored as a set of chunked objects, it is helpful
to apply a standard document lifecycle template to uniformly update the individual
chunked objects, such as applying a version label. If possible, create a single document
lifecycle template that adapts its actions based on the mapped properties that distinguish
each chunked object. It is also safer to automate the document lifecycle (for example,
from within a workflow) rather than relying on users to promote or demote objects.
The XML application has an optional Application Support Documents folder for files
related to the XML application such as schemas, FOSI, XSLT stylesheets, and modular
components of DTDs. This folder is downloaded every time an XML document is
imported, checked in, exported, or checked out. When this folder contains a large
number of files, upload and download of XML documents may become very slow,
especially over a WAN connection.
If you experience slowness, one solution is to prevent download of this folder during
checkout and export. For more information, see Prohibiting download of application
support documents, page 25. A second solution is to include only files in this folder that
are needed on local systems. Other supporting files can be put in another folder in the
XML application folder. For more information on setting up the Application Support
Documents folder and related folders for supporting files, see Chapter 3, Creating the
XML Application.
To specify that files in the Application Support Documents folder should not be
downloaded, set the following methods to ʺfalseʺ for export and checkout operations:
IDfExportOperation:enableManageApplicationSupportDocuments(boolean flag)
IDfCheckoutOperation:enableManageApplicationSupportDocuments(boolean flag)
This can speed up performance when downloading XML documents from the repository,
especially when users have a remote connection. This will also block download of the
application support documents when viewing or exporting a PDF rendition of an XML
document.
Note:
• Setting these methods to ʺfalseʺ will prohibit download of your DTD, even if the root
DTD is contained in the XML application folder. DTDs or schemas will be patched
as the object name only, unless setXMLSystemID is used), and the caller will be
responsible for managing the DTD on the local system.
• The Application Support Documents folder will continue to download when
XML documents are imported or checked in. If this leads to unacceptably slow
performance for inbound operations, you may prefer to keep only files required by
your DTD (external parameter entity files) in that folder.
In some circumstances, it is necessary to patch the XML files so that references to external
files mirror the repository path on the local system (necessary for Site Caching Services),
or the repository paths are appended to a URL. By default, when an XML document is
checked out or exported, external files are downloaded, and the references to those files
in the XML document are patched to point to the locations of those files on the user’s
local system.
The following method can be used to patch external references using the repository path:
IDfExportOperation:setBaseFolder(String cabinetFolderPath,
String linkBase)
XML content may be created from scratch or updated in an authoring client, aggregated
from existing content, transformed from content in another format, or provided by
an outside vendor. This analysis should elaborate upon all means in which your
organization currently creates, modifies, generates or receives content. The analysis
should also consider whether there is a more optimal means of content acquisition.
The following should also be considered:
• How validity can be enforced on all content acquisition processes
• How user roles are defined in content acquisition processes
• How to deal with redundancy of content, created or obtained
In most cases, once content has been acquired or updated it must undergo review
and approval before release. This analysis should focus on the current and desired
review and approval processes. The objective is to standardize document lifecycles and
workflows by analyzing the following areas:
Efficient reuse of XML content and proper language attributing can reduce the frequency
and amount of translation and localization. This analysis should consider how content is
currently translated and localized, with the objective of defining ways in which it can be
integrated with document lifecycles and workflows. It may also have a bearing on how
information is chunked and assigned repository properties.
Content publishing
Content publishing involves creation of the final output content and exporting that
content to a publishing venue. There are many reasons for creating published content,
including the following:
• The incorporation of dynamic content (such as price)
• The amalgamation of content managed by separate departments (such as
pharmaceutical labeling)
• Subscription to published content
• The need for multiple, varying transformations of content for multiple output formats
Transformation of XDQL‑aggregated content from a repository can create consumable
content in a streamlined manner. For more information on publishing content from the
repository, see Chapter 5, Queries and Chapter 6, Transformations.
Content archiving is the process of moving the XML content to secondary storage and
is part of a document’s lifecycle. Content end‑of‑life implies the business conditions in
which the content can be fully removed (both content and metadata) from the repository.
This analysis should include both existing and desired business processes.
The first purpose of a data model analysis is to summarize and explain the scope of
content encapsulated by your data model. This analysis should explain the data model
entities, including their content, cardinality and dependencies, and how they relate to
the business process requirements. You should use different data models to facilitate
different business practices.
The XML data model should reflect the purpose and meaning of the content
encapsulated. Elements and attributes should be clearly named and reflect the
components of content requiring chunking reuse, review, aggregation, transformation,
and publishing. The elements that will be chunked in your XML application must exist
in your data model.
Common, reusable constructs and nesting of encapsulated content in the data model
assists in content transformation and content chunking. As a result, the data model
analysis should evaluate how well common constructs are reused and whether the
data model is excessively flat or nested. Whenever possible, you should use common
constructs that can be defined once and used in multiple locations. This will simply
XSL transformation that are required for content aggregation, workflow review, and
content publishing.
Many data models implement a means to categorize their content with XML elements
and/or attributes. This section of the data model analysis should summarize how all
content conforming to the data model is categorized. The objective is to gauge the
uniformity and granularity of categorization implemented by the data model, and
the cohesiveness of the XML content with its associated categorization. This analysis
has an important bearing on how metadata will be assigned to chunked XML objects
created in the repository, and which repository properties are necessary for accurately
querying XML content.
Data models are free to enforce varying degrees of validity. These enforcements can
include required content, cardinality, format, enumeration, sequencing, patterns and
syntax, character length, and fixed and default values. Some enforcement is only
available when you utilize a W3C schema rather than a DTD or when you work on
a more restrictive extension of an industry standard. There is a trade‑off in enforced
validity on the input and output end. Greater enforced validity may make authoring
more difficult, or it may make the data model less flexible in accommodating new types
of content, but automating data publication becomes easier.
• Create any additional ACLs that are used in the XML application configuration
file but do not yet exist.
• If you are validating the objects against the data dictionary, you may also need to
define data dictionary information. See Documentum Content Server Fundamentals
Guide for more information.
The following two sections provide procedures for creating the required Documentum
namespace and attribute declarations in your DTD or schema.
The easiest way to add the Documentum namespace declaration and Documentum
attributes to a DTD is to declare two internal parameter entities in your DTD, then add
one entity reference in the ATTLIST declaration for each element that will be chunked,
and the other entity reference for each element that will be linked.
4. For each element that has a link rule in your XML application configuration file (as
determined by the element specified in the first <element_selection_pattern> nested
under <link_rule>), add the following parameter entity reference to the <!ATTLIST>
declaration for that element:
<!ATTLIST element_name
%dctmlinkatts
>
Note: Do not add the link attributes when the <link_rule> element in your XML
application configuration file has the attribute value peer_or_child=ʺpeerʺ.
When a file is downloaded, these attributes are patched into the files with the appropriate
values for that object from the repository. If the values are changed by the author when
editing the file, the new values will populate the associated repository properties for
that chunked element or the external file.
For an example of adding these attributes to the NewsML DTD, see The NewsML DTD,
page 255.
With schemas, you have many options on how to add the Documentum attributes and
also have schema validation.
Option 1
Option 1 allows only attributes of a different namespace. You can declare on your
elements that are chunked elements that any attributes from a different namespace are
allowed. It does not matter if they are not declared.
To do this you use the anyAttribute definition with namespace=ʺ##otherʺ and
processcontents=ʺskipʺ.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" >
<xs:element name="chunk">
<xs:complexType>
<xs:anyAttribute namespace="##other" processContents="skip"/>
</xs:complexType>
</xs:element>
</xs:schema>
Option 2
Option 3
Option 3 allows either any attributes from the Documentum namespace or another
namespace (use other) and validates if a definition is available To do this, change the
definition of processContents=ʺlaxʺ.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" >
<xs:element name="root">
<xs:complexType>
<xs:anyAttribute namespace="http://www.documentum.com"
processContents="lax"/>
</xs:complexType>
</xs:element>
</xs:schema>
To make the Documentum attributes definitions available you can optionally create
this Documentum schema:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:attribute name="obj_id" type="xs:string"/>
<xs:attribute name="obj_status" type="xs:string"/>
<xs:attribute name="version_label" type="xs:string"/>
<xs:attribute name="link_obj_id" type="xs:string"/>
<xs:attribute name="link_obj_status" type="xs:string"/>
<xs:attribute name="link_version_label" type="xs:string"/>
</xs:schema>
Option 4
Option 4 allows either any attributes from the Documentum namespace or another
namespace (use other) but the definitions must exist and they must be valid. To do this,
change the definition of processContents=ʺstrictʺ and import Documentum schema.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:anyAttribute namespace="http://www.documentum.com"
processContents="strict"/>
</xs:complexType>
</xs:element>
</xs:schema>
To make the Documentum attributes definitions available you must create this
Documentum schema:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:attribute name="obj_id" type="xs:string"/>
<xs:attribute name="obj_status" type="xs:string"/>
<xs:attribute name="version_label" type="xs:string"/>
<xs:attribute name="link_obj_id" type="xs:string"/>
<xs:attribute name="link_obj_status" type="xs:string"/>
<xs:attribute name="link_version_label" type="xs:string"/>
</xs:schema>
For instructions on creating an XML application using Webtop, see Creating an XML
application using Webtop, page 42.
You must create a folder that will contain all of the files and folders pertinent to your
XML application. This folder must be the same name as the XML application and must
be a special object type, as detailed in the procedure below.
You should create an Application Support Documents folder that will hold any
supporting documents that you want to be downloaded to local systems during checkin,
checkout, import, and export. This would include files such as the DTD, schema, modular
components of the DTD or schema, CSS, XSL stylesheets, FOSI, and any other files.
You can create any additional folders (of type dm_folder) within the XML application
folder to hold any supporting documents that you do not wish downloaded to local
systems during checkin, checkout, import, and export of XML documents, For example,
you might not want your XSLT stylesheets downloaded to every local system if they are
only used in a specialized publishing context.
Only the Application Support Documents folder and the DTD stored in the XML
application folder are downloaded to local systems during inbound and outbound
operations involving XML applications.
You must import the XML application configuration file into the XML application folder
and assign it the object type XML Configuration, as described in the procedure below.
Importing a DTD
The following procedure is necessary if the XML application will be managing your
DTD. For more information, see DTD and schema management, page 20.
The name of the DTD file must match the value of the <sys_id> element in the XML
application configuration file, if specified.
Importing a schema
The following procedure is only necessary if you want the schema to be downloaded
to users’ local systems.
In the current release, document patching of schemas does not occur, so validation of
XML documents against schemas can only occur if the parser can find the schema on
the local system in the location specified in the schema URI. If the URI is set to point
to the Application Support Documents folder, and all users have exactly the same
Documentum user directory on their systems, then validation will be successful. For
more information, see DTD and schema management, page 20.
The name of the schema file should match the value of the <schema> element in the XML
application configuration file, if specified.
To import a schema
1. Drag the schema file on your local system (and any other module components) into
the Application Support Documents folder in the repository.
2. For object type, select dm_document.
3. For file format, select XML Schema.
4. Click Import.
5. Check to make sure the file name as it appears in the repository has the extension
.xsd. If it does not, right‑click the file, select Properties, and add the .xsd extension
in the Name field.
Use the following procedure if you have any supporting documents that you want to
download to users’ local systems when documents are transferred into and out of the
repository.
If you have any supporting documents that you do not wish to be downloaded, import
them to the other folders that you created in Creating folders for non‑download
supporting documents, page 43.
Tip: Make sure your XML file is well‑formed and valid before you attempt to import it.
After you have imported your XML document into the repository, check the following:
• If you chunked the file, do the chunks appear in the right locations?
• Do the chunks appear as expected when you view the document in a client such
as Virtual Document Manager?
• Are repository properties on individual objects set as expected?
• Does the document check out and check in properly?
• If you assigned ACLs, are those permissions correctly set on the objects in the
repository?
• If the XML application is managing your DTD or schema, does the document open
properly in an XML editor, with no errors that it cannot find the DTD or schema
or any component files?
Tip: If a document fails to import, and the error message is not helpful, try opening
your XML document in Internet Explorer. Internet Explorer checks for well‑formedness
and validity, it provides very specific error messages, and it is more strict than some of
the authoring tools.
By default, Arbortext Epic does not add a path to its system identifier, resulting in a
DOCTYPE declaration like the following:
<!DOCTYPE book PUBLIC "//Arbortext//DTD DocBook XML V4.0//EN"
"axdocbook.dtd"
Epic knows where to look to find the DTD, but other applications do not. If your XML
application is managing your DTD, Webtop does download this DTD for import, so you
must add the correct path to the DTD on the local system for Webtop import to work
correctly in Webtop. Failing to do so will result in an error message such as the following:
Content transfer: path/filename.dtd (The system cannot find
the file specified)
If the <validation> element is not present in the XML application configuration file,
the parser will check only well‑formedness during inbound and outbound repository
operations, but it will still look for a DTD or schema if it is mentioned in the <!DOCTYPE>
declaration in the XML document.
If the DTD file name is stored in the DTD System ID property of the XML application
folder, then the DTD stored in the application folder will be used. If the DTD System ID
property is not specified, then the DTD must be in the location on the local system that is
specified by the <!DOCTYPE> declaration in the XML document.
If your DTD defines text entities and those entities are referenced in any of your
documents, you must set up your XML application to manage the DTD. The Xerces
parser will not allow import or checkin of documents that reference a text entity that
it cannot find a declaration for.
When the <metadata> element is used to populate repository properties with date/time
information, use the <date_format> element and make sure your XML data that will be
extracted as date metadata fits this format. Without the <date_format> element present,
or if the data do not match the specified format, the date will be set using the date format
of the locale of the machine on which DFC is processing the XML document. This would
cause a problem, for example, if the XML application were being processed by several
application servers using different locales.
If you are having problems with the correct XML application being detected for your
XML documents, it may be helpful to understand the algorithm by which application
detection occurs.
When an XML document is imported or checked in to the repository, there is an
algorithm used to determine which XML applications can apply. This algorithm occurs
in the sequence specified here.
3. If not, information is extracted from the XML document, as shown in Table 3, page
49, and used to construct a query that searches the properties of the repository
object type called XML Application (the object type used for the XML application
folder) for a match.
If there is a match between all of the information extracted and the corresponding
XML application folder properties, and if the query returns only one XML
application that matches, then this XML application is automatically selected. If
more than one application is detected, then the first one applies, or, in clients that
allow it, the choices appear in a list box.
Note: The Default XML Application has a special status and will always appear in
this list box.
4. If none of the above apply, then the Default XML Application will apply.
If the extension of the document is XML, then the Default XML Application
provided with the Content Server applies. If you have added other extensions to
the format_class attribute of dm_format, then you must provide your own default
application and store it in the /System/Applications folder in the repository.
If the XML application is managing your DTD and you encounter DTD‑related errors
when you open your XML document in an editing application, there is more than one
possible reason.
If the file name of your DTD is not stored as the DTD System ID property of your XML
application folder in the repository, then the parser will download the DTD but will not
patch the system identifier in the <!DOCTYPE> declaration in the XML document, and
your XML editor will look for the DTD in that location on the local system.
If your DTD contains external parameter entity declarations that include a path name,
this may cause an error, since the DTD and its referenced files are all downloaded to the
Application Support Documents folder on the local system. Modify the DTD in the XML
application so that the external parameter entity declarations contain only the name
of the file, not the path.
If the DTD System ID property of your XML application folder contains the name of
your DTD, but your DTD is not stored either in that folder or the Application Support
Documents folder in the repository, then the system identifier in the XML document will
be patched to point to the Application Support Documents folder that downloads to the
local system, but the DTD file will not be there.
This chapter provides an overview of XML application configuration file, shows the most common
features of rules and the elements that are used to configure those features, and provides general
information about working with rules.
This chapter contains the following sections:
• Creating an XML application configuration file, page 53
• Anatomy of an XML application configuration file, page 54
For detailed reference information on the elements that can be used in your XML application
configuration file and how they must be structured, see Appendix A, Reference Information and
Examples for Config_6.5.dtd.
For an annotated sample of an entire XML application configuration file based on the NewsML
industry standard, see Appendix D, Sample XML Application Configuration File for NewsML.
Caution: Never modify the Default XML Application configuration file or the
config_6.5.dtd. Instead, use the Default XML Application as a template to create
your own XML application.
You can create an XML application configuration file either before or after you create
the XML application. There are different advantages to each method. If you create the
configuration file ahead of time and you use Documentum Application Builder (DAB)
to create the XML application, some of the fields on the creation tabs will be populated
for you once you add the configuration file. If you use DAB to create the application
before you have created a configuration file, you are presented with options to create a
configuration file based on the Default XML application, or to copy a configuration file
stored in the repository or on your local system.
You can use the XML Configuration File Editor that is provided with DAB or any
other XML editor. The XML Configuration File Editor provides lists of rules organized
into type and allows you to base rules on element in your XML sample document. If
you use the XML Configuration File Editor, refer to the online help in the File Editor
for assistance.
If you do not use the XML Configuration File Editor, it is a good idea to develop your
XML application configuration file with an XML editor that will validate dynamically
against the appropriate configuration DTD. Since the XML application configuration file
is validated against config.dtd the first time an XML document is imported with a new
XML application, an invalid configuration file will cause the document import to fail.
The application‑level settings and rules are contained within the <application> element.
See the following sections for more details.
Applicationlevel settings
The prolog is followed by the root element, <application>. The elements in Table 4, page
55 are the children of the root element that are used for creating the XML application or
that configure certain rule‑independent features of the application.
Purpose Element(s)
Set the name of the XML application name
Provide information used by <app_pattern>
Documentum Application Builder
(DAB) when creating an XML application
Allow work in progress to bypass <allow_work_in_progress>
well‑formedness and validation checks
during inbound and outbound repository
operations, until the document becomes
well formed and valid.
Specify whether to validate XML <validation>
documents during inbound and outbound
operations.
Specify whether to validate against the <dds_validation>
Content server data dictionary
Container for one or more <javaclass> <java_classes>
elements, which allows the use of Java
custom code
Declare variables external to the XML <external_variables>
document
Rules
The <map_rules> element, a child of the <application> root element, is the container for a
series of rules that determine how the XML application processes the XML document.
(See Rule types, page 56.)
What you can do within a rule depends on the rule type. The section Task‑based
classifications of rule elements, page 57 provides a task‑based overview of which
elements you should use when you specify rules.
The section Overview of some rule features, page 59 presents an overview of some
features that may help you specify rules more effectively.
Rule types
An XML Content Rule (<xml_content_rule>) is usually the most frequently used rule. It
applies to parsed XML content and can carry out the following actions:
• Specify the element to which the rule will apply
• Specify the location in the repository where the chunked file will be stored
• Specify owner name for the chunk, if other than the default
• Specify the repository object name for the chunked file
• Specify permissions on the chunked file
• Specify object type for the chunk, if other than the default
• Attach the chunked object to a document lifecycle
• Assign values extracted from the XML document to the repository properties,
through the use of variables
• Define variables and assign them values from the element names, element content, or
attribute values in the XML document, for use in the actions listed above.
The main function of an XML Content Rule is usually to chunk XML content in the
document, but it can have other primary purposes, such as assigning metadata to an
XML document that will not be chunked.
Link Rule
A Link Rule (<link_rule>) uses links in the XML document to external files or references
to NDATA entities to locate and handle unparsed entities, such as graphics files. The
Link Rule works like an XML Content Rule in terms of assigning an object location,
metadata values, permissions, and so on. You can also specify whether the linked file
should be treated as a child or a peer of the XML virtual document, and whether this is
a permanent link.
Entity Rule
An Entity Rule (<entity_rule>) tells the XML application to preserve all external
parsed (XML) entities as separate components of the XML virtual document when
imported or checked in, and to maintain their status as external entities when the main
XML document is exported or checked out. Any relevant chunking rules defined
by <xml_content_rule> will apply on import or checkin, but the chunked objects will
be reassembled into the external parsed entity on export or checkout. If this rule is
not specified, any external parsed entities will disappear after they are imported, and
the resulting chunks will be included in the main document when it is checked out or
exported. There can only be one Entity Rule per XML application, and this rule must
apply to all external parsed entities.
The elements in Table 5, page 58 are used in rules to perform repository actions
associated with creating a repository object for a chunk.
Purpose Element(s)
Assign a repository location, create folder <location>
or cabinet if necessary
Assign an object name to a chunked object <object_name>
Assign an owner name to a chunked <owner_name>
object
Assign a file format to a non‑XML <format_attr>
chunked object
Assign a value to a repository property, <metadata>
or from a repository property to XML
content
Assign a binding rule to a symbolic <version_label>
version label on import
Assign permissions by specifying a <acl_name>, <acl_domain>, <default_acl>
system ACL name, domain, or default
ACL to a chunked object
Assign a document lifecycle (name, scope, <business_policy>
initial state) to a chunked object
Create a cabinet or folder or extract <xml_content_rule make_object=ʺfalseʺ>
information without chunking an object
Set a permanent link on a relation object. <permanent_link>
Maintain chunked objects separately <make_entity/>
in the repository but integrate them
into a single document on export
or checkout. (Required element in
<xml_content_rule>.)
The elements in Table 6, page 59 are used to specify variations in the rules.
Purpose Element(s)
Specify an element in the XML document <element_selection_pattern>
and any context sensitivity (based on
structural hierarchy, nth occurrence, value
of an attribute)
Refer to elements or attributes with namespaceURI attribute of <element> or
namespaces <attr_name>
Declare and assign values to variables, <variables>
which will be used to assign values to
other elements
Specify value should come from content <content_of_element>
of element in XML document
Specify value should come from an <attribute_value_of_element>
attribute of element in XML document
Specify value should come from tag name <tagname_of_element>
of element in XML document
Specify a default value when none can be <default>
assigned
• (Optional) A context for that element, such as structural information or the value
of one of its attributes
If the entire <element_selection_pattern> applies to an element in the XML document, it
triggers the rest of the rule to apply.
If you want to apply the same action to a number of different elements in the XML
document, you must construct a separate rule for each element. A single element can
be specified in more than one rule, and in more than one type of rule. If possible, rules
referring to the same element in different contexts should be mutually exclusive. If
overlap is necessary, the more specific rule should come first. For example, if you want to
assign certain repository properties to a chunk when an element has a particular attribute
value, and assign different repository properties for that element chunk elsewhere, the
rule for the element with the particular attribute value should come first.
Note: As of this release, an <xml_content_rule> and <link_rule> that apply to the same
element can appear in either order.
Alias support
You can use aliases in the following elements in the XML application configuration file:
<owner_name>
<acl_name>
<acl_domain>
<path>
Aliases are specified in the following format:
%[alias_set_name.]alias_name
Constructing DRLs
You can use DRLs in rules to specify a repository location in which an object will be
imported (see the <path> element). You can also use DRLs in XML documents to specify
a repository location of a linked file that is specified as the link target of a link rule (see
the <link_rule> and <link_target> elements). The following sections provide information
on how to construct DRLs that you would use for these purposes.
Syntax
dctm://repository_name/object_specification?arguments
where repository_name is the name of the repository. The other replaceable items in italics
are as described in the following sections.
Object specification
You can specify the object using an object ID, a chronicle ID, or a valid DQL select
statement, as described in the following sections.
ID value
Use the object ID if you want to specify a particular version of an object. Use the chronicle
ID, which is the ID of the root version of the object, if you want to add an argument to
specify a particular version number or version label (such as CURRENT).
You must name the type of ID you are using (object ID or chronicle ID) as an argument in
the DRL (see DRL arguments, page 62).
Predicate
Do not create a line break or leave any spaces in the DRL string. If the string contains
characters that are reserved characters in XML, use a text entity reference in place of the
reserved character.
Caution: If the query returns more than one object, the first one in the result
collection is used.
DRL arguments
The arguments in Table 8, page 63 can be used in a DRL and recognized by an XML
application. DRLs can contain certain other arguments that are used to connect to a
repository (such as DMS_USER, DMS_PASSWORD, DMS_DOMAIN, DMS_BRKR);
XML applications ignore these arguments and attempt to locate the specified object
in the current repository.
Note: The argument string should begin with a question mark.
Argument Description
DMS_OBJECT_SPEC Has the following values:
• OBJECT_ID (when object specification
is an r_object_id)
• CHRONICLE_ID (when object
specification is an r_object_id)
• PREDICATE (when object specification
is a DQL query)
DMS_VLAB Version label of the object (used with
chronicle ID)
DMS_VNUM Version number of the object (used with
chronicle ID)
The following sections contain examples of DRLs used for various purposes.
DRLS can use an object ID to point to a specific folder in a repository, such as the
following:
dctm://scribblers3/0b00270f80003618?DMS_OBJECT_SPEC=OBJECT_ID
In this example, the repository is scribblers3, the object specification is an object ID, and
the argument OBJECT_ID specifies that the ID in the object specification is an object ID.
Since folders do not have versions, a folder will always use an object ID, and VNUM and
VLAB should not be used as arguments.
Suppose that you want to put draft documents into a different folder, which has a custom
object type called draft_folder, with a custom property called project_status, Instead of
pointing to this specific folder by its object ID, you could use a query to return any folder
of type draft_folder when the custom property project_status has a value of ʺDRAFTʺ.
The following example shows a DRL whose object specification contains a DQL query:
dctm://scribblers3/draft_folder where
project_status=&apos;DRAFT&apos;?DMS_OBJECT_SPEC=PREDICATE
In this example, the repository is scribblers3, the object specification type is a DQL query,
and the argument specifies that the type of object specification is a predicate. The '
entities stand in for single quotes in the where clause. The folder selected will be the
first object from the result pool produced by the query.
Suppose that you want to link to the version of a document in the repository that is
marked CURRENT.
The following DRL would find the specified ID but then take the version of the object
marked CURRENT.
dctm://scribblers3/0900270f8003ee67?DMS_OBJECT_SPEC=CHRONICLE_ID
&DMS_VLAB=CURRENT
In this example, the repository is scribblers3, the ID provided is the chronicle ID (the ID
of the root version of a particular object), and the version label is specified as CURRENT
with the VLAB argument.
Note: If you use any version label other than CURRENT, that version label must have
already been assigned to at least one version of the object specified by the chronicle ID.
Suppose that you want to specify a particular version number of a document. You can
use either the chronicle ID or the object ID to do this. If you use chronicle ID, you must
also use a VNUM argument, as follows:
dctm://scribblers3/0900270f8003ee67?DMS_OBJECT_SPEC=CHRONICLE_ID
&DMS_VNUM=1.0
In this example, the repository is scribblers3, the ID provided is the i_chronicle_id (the
object ID of the root version of a particular object), and the version number is specified
as 1.0.
Note: Use the chronicle ID rather than the object ID when you want to use DMS_VLAB
or DMS_VNUM.
Instead of chronicle ID plus a VNUM argument, you can use the object ID of that version,
as in the following example:
dctm://scribblers3/0900270f8003ee75?DMS_OBJECT_SPEC=OBJECT_ID
Because object ID identifies a specific version of an object, you should not use the VNUM
or VLAB arguments.
One of the purposes of designing XML applications to chunk XML documents and assign attributes
is to dynamically generate and publish documents by using queries to retrieve information from
the repository.
DQL queries search repository metadata or content (using zone searches) and retrieve repository file
names and any properties you specify. XDQL is a Java class that executes DQL queries from Java
applications or XSLT stylesheets. It returns any repository query results as XML.
The most common way to implement XDQL is through an XSLT stylesheet. For example, to produce
the Documentum Developer online newsletter, an XML document is created that serves as a shell for
that particular issue, containing information such as the issue number and titles. The repository is
then queried for specific content and inserted into the shell to create an HTML document.
This chapter presents an overview of DQL and XDQL queries. It contains the following sections:
• Queries with DQL, page 67
• Queries with XDQL, page 71
For a detailed NewsML example of using an XSLT stylesheet to generate a newsletter see Chapter 6,
Transformations.
Basic DQL statements allow you to query attributes, and the optional SEARCH clause
allows you to query content, as described in the following sections.
Whether to query metadata or content depends on your business requirements. For
example, suppose you want to locate all documents for which a certain element has a
particular value, such as a particular model name. Querying metadata is the best way
to obtain this information. Or, perhaps you want to find all documents whose content
references a particular topic. In this case, querying content is best.
You can also retrieve specific values as part of the selection clause. In the following
examples, the exact value of the price property would be returned:
select price from cell_phone_catalog_item where transfer_technology
= 'Analog' AND protocol = 'AMPS' AND price >= '10'
The following sections provide more examples of DQL queries. For detailed information
on how to query metadata, see the SELECT statement documentation in the Documentum
Content Server DQL Reference Manual.
When XML documents are chunked, the components are stored as a virtual document.
You can query the document’s entire hierarchy or only some portion of it.
The DESCEND clause in DQL allows you to search in a given virtual document. The
syntax of the IN DOCUMENT clause is:
IN DOCUMENT object_id [VERSION version_label][DESCEND]
[USING ASSEMBLIES][WITH binding condition][NODESORT
BY attribute {,attribute} [ASC|DESC]]]
Finding paths
DQL contains clauses that will allow you to return the PARENT ID of an object in a
Virtual Document. The server also provides two APIs that allow you to return paths to
an object:
• VdmPath
dmAPIGet(vdmpath,session,component_id[,root_id]
[,shortest_path] {,version_list}
Use this method if performance is more important than flexibility.
• VdmPathDQL
dmAPIGet(vdmpathdql,session,component_id[,root_id]
[,shortest_path][,type][,binding_condition][,nodesort_by]
This gives more flexibility in choosing paths.
Finding links
The object pointed to by a child link is made a component of the virtual document. Peer
links are stored in repository and linked to the XML document with an xml_link, a
subtype of dm_relation:
select * from dm_sysobject where (r_object_id IN (select child_id
from dm_relation where relation_name ='xml_link' AND parent_id =
'0900162e80059910')) and a_is_hidden=false ORDER BY owner_name,
r_object_id
(Return to me all objects that are a peer link to this object.)
Fulltext searches
The server provides full‑text indexing services for documents in the repository. Full‑text
indexes are created for storage areas. For documents in a storage area, their content is
indexed if the format’s can_index property is set to true, and their properties are indexed
if their a_full_text property is set to true. Both content and selected properties of the
object are indexed. Use DQL for full‑text searches. For more information on full‑text
searching, see the Documentum Content Server DQL Reference Manual and the Documentum
Content Server Fundamentals Guide.
Zone searches
A more restrictive type of full‑text search that is available only for XML objects is a zone
search, which allows you to search for a given value within any specified element. A
zone consists of everything between the starting tag and closing tag for an element.
You use the passthrough format in DQL to do zone searching. Use the following syntax:
SELECT * FROM object_type SEARCH TOPIC
'text_string <IN> element_name'
where object_type is the name of the repository object type, text_string is the text you
are searching for, element_name is the name of the XML element to which the full‑text
search will be limited.
For example, the following query finds all documents that have the value quasivox in the
element <brandname>:
SELECT * FROM dm_document
SEARCH TOPIC 'quasivox <IN> brandname'
Zones can be nested by repeating the <IN> clause: The following example returns all
documents that have the value ʺspeed dialingʺ in the <memoryfeatures> element, only
when the <memoryfeatures> element occurs within a <cellphone‑catalog> element.
SELECT * FROM dm_document
SEARCH TOPIC '(speed dialing <IN> memoryfeatures)
<IN> cellphonecatalog'
The next example restricts the search even further. It returns documents that contain
the value speed dialing in the <callfeatures> element if <callfeatures> is found in the
<memoryfeatures> element. In turn, the <memoryfeatures> element must be contained
in a <cellphone‑catalog element>.
SELECT * FROM dm_document
SEARCH TOPIC '((speed dialing <IN> callfeatures)
<IN> memoryfeatures) <IN> cellphonecatalog'
You can use the SELECT statement’s optional clauses to apply other restrictions to
the results. For example, the following query returns only documents that meet the
SEARCH clause requirement and are owned by JoanK:
SELECT * FROM dm_document
SEARCH TOPIC 'quasivox <IN> brandname'
WHERE owner_name='JoanK'
Note that zone searches do not span across chunks. For example, if you have chunked a
catalog into ʺmodelʺ elements, the following will not return any results:
SELECT * FROM dm_document SEARCH TOPIC 'Jeep <IN> model.name
<IN> model <IN> catalog'
The IDfXmlQuery interface uses the DFC library to communicate with the repository
for querying and retrieving result collections. The calling instance must establish a
Documentum session (by connecting to a repository) and pass the session ID as a
parameter of the execute() method. The session is used to query the repository and
retrieve defined stylesheets.
For documentation of the IDfXmlQuery interface, see the DFC Javadocs. See the next
chapter for a detailed example of executing an XDQL query through an XSLT stylesheet.
XQuery
XML Query Language (XQuery) is a string syntax that you can use to address any
piece of information in an XML document, make selections based on conditions, and
even construct new structures based on queried information. This makes XQuery an
extremely useful tool for searching in XML databases.
When a XQuery search is performed via DFC or iAPI, the queries are passed through
Content server to the XML Store, and the results are passed to the client from the XML
store directly without any post processing by the content server.
The Documentum XQuery Interface provides standard access to the XML Store content
through standard XQuery syntax. The query results returns an XML document or a byte
stream that adheres to Documentum security. For more information on XQuery, see
http://www.w3.org/TR/xquery/.
It is possible to perform join between data returned by DQL queries and the data or
meta‑data extracted from the XML Store. The XQuery interface is accessible through DFC
and iAPI. The interface provides an option to specify the store to against which to query.
The supported XQuery syntax supports referencing of Documentum meta‑data in the
query. For Example:
• Search use case: Find all documents that contain a particular XML tag that also
has some Documentum meta‑data value.
• Constrained query use case: Run XQuery over document or set of documents
specified by some Documentum meta‑data (such as project name or folder path).
• Meta‑data Results use case: Construct result document by pulling content from some
set of XML documents and include some of the object meta‑data in the result.
The external function calls in the XQuery is used for referencing Documentum meta‑data.
For example:
QUERY:
local:dql("select count(*)as number_of_objects from dm_document")
OUTPUT:
<?xml version="1.0"?>
<root>
<object ID="">
<number_of_objects>1938</number_of_objects>
</object>
</root>
More examples:
Query 1 – search joining xml and relational meta‑data:
let $dqlquery := "SELECT r_object_id, i_contents_id FROM dm_document
WHERE folder(‘/MyProject’, DESCEND)"
for $i in unordered(
local:dql($dqlquery)/root/object),
$j in collection('/')
where $j[xhive:metadata(root(.), 'r_object_id') = $i//i_contents_id]
return
$j/name
This query returns a collection of content id’s for the matching documents.
Query 2 ‑ XQuery joining xml and relational meta‑data:
let $dqlquery := "SELECT r_object_id, i_contents_id FROM dm_document
WHERE folder(‘/MyProject’, DESCEND)"
for $i in unordered(
local:dql($dqlquery)/root/object),
$j in collection('/')
where $j[xhive:metadata(root(.), 'r_object_id') = $i//i_contents_id]
return
$j
This query returns a collection of document nodes from certain docs that are in the
folder /MyProject.
Query 3 ‑ XQuery returning documentum meta‑data:
let $dqlquery := "SELECT r_object_id, i_contents_id FROM dm_document
WHERE folder(‘/MyProject’, DESCEND)"
for $i in unordered(
local:dql($dqlquery)/root/object),
$j in collection('/')
where $j[xhive:metadata(root(.), 'r_object_id') = $i//i_contents_id]
return
$i
This query returns the Documentum meta‑data selected by the DQL query for each
document in a given collection of XML contents.
Xquery Restrictions
The following actions must not be executed using XQuery:
• No updates
• inserts
• deletes
*/
public String getXMLString () throws DfException;
/**
* Returns the XML query results as a DOM.<P>
* The DOM may not be wellformed depending on the XQuery semantics.
* @return The result as a DOM (class Document)
*/
3. Add all the stores against which the query should be run.
xquery.addStore("xhive_store_01");
xquery.addStore("xhive_store_02");
6. Read results in a buffer and write the buffer to the output stream.
amount_read = xquery.readResults(buffer);
bostream.write(buffer,0,amount_read);
7. If there are more results, fetch them in a loop and write to the output stream as a
buffer is read.
while (amount_read > 0){
amount_read = xquery.readResults(buffer);
bostream.write(buffer,0,amount_read);
The major advantage of using readResults() is to fix memory operation, even if the result
size is large. The drawback is that individual result chunks in the buffer cannot be
passed to another XML processor.
It is possible to invoke a DQL query from XQuery at run‑time. A new extension function
has been added to XML Store that can be invoked through XQuery. This function returns
DQL query results as an XML document.
Here is a simple example:
declare function local:dql($query as xs:string) as documentnode
(element(root)) external;
for $i in local:dql(
“ SELECT r_object_id, i_contents_id FROM dm_document
WHERE folder('/MyProject’, DESCEND)”
) /root
return $i//i_contents_id
Note that the i_content_id is extracted from the output of local:dql() using an XPath
expression. Also, each XQuery expression using this function must declare it as an
external function.
Local:dql() is a Java extension function implementing the interface
XhiveXQueryExtensionFunctionIf.
iAPI interface
XQueries can also be run through the iAPI interface by using the xquery iAPI command.
This allows the user to run XQueries directly without going through the DFC IDfXQuery
interface. Note that the iAPI xquery command runs against all xml storage areas with
no ability to programmatically specify a specific xml store to search against. However,
if the user is familiar with the Xhive library structure and the xml store object ids, the
xquery can be written to limit the documents searched. It is also limited to returning
results in a file specified in the command – there is no ability to return the results in other
forms available in DFC.
Syntax: dmAPIGet(ʺxquery,session,file_name,query_stringʺ)
Argument Descriptions:
ArgumentDescription
sessionIdentifies an open repository session
file_nameDefines the location of the file where you want to put your xquery results
query_stringThe query to run against xml stores in xquery syntax
Sample usage:
API> xquery,c,C:/xquery_results.xml,for $article in
/chapter[@number=1]//article return{data($article/para)}
Sample usage of limiting search against a particular xml store using xquery collection
function (xml store id is 6300019f800001ad:
API> xquery,c,c:\xquery_content.xml,for $i in collection("/6300019f800001ad")
let $j := $i//chapter[@number = 2] return $j
This chapter provides information on transforming XML documents for various purposes. It contains
the following sections:
• Overview, page 79
• Transformation support in DFC, page 80
• Summary of using XSLT stylesheets to build documents dynamically, page 82
• The NewsML XSLT stylesheet, page 85
Overview
Transformation is a process that converts an XML document into another XML document,
an HTML document, or a text document. The transformation capabilities supported in
DFC and XSLT stylesheets allow you to accomplish tasks such as the following:
• Transform a document from one format to another
• Create a rendition of a document
• Transform a document from one schema to another
• Combine chunked XML content from the repository with an XML aggregation
template
• Change a document’s content
To perform a transformation, you provide an XML document and an XSLT stylesheet to
the Xalan XSL transformation engine that is packaged by Documentum in dfc.jar. The
output is a document with markup that is specified by the XSLT style sheet.
Both the XML document and the stylesheet can contain XDQL queries, which can be
used to extract chunked XML objects from a repository. For a description of XDQL,
see Queries with XDQL, page 71. For a summary of using XDQL in XSLT stylesheets,
see Summary of using XSLT stylesheets to build documents dynamically, page 82. For
a detailed example using the NewsML case study, see The NewsML XSLT stylesheet,
page 85.
• Declare any parameters being passed to the stylesheet, such as session ID (see
Passing and using parameters in the stylesheet, page 84):
<xsl:param name="DMS_SESSION_ID"/>
• Use a named template that passes XDQL parameters, instantiates the Java class,
and executes the XDQL query:
<xsl:template name="XDQL">
<xsl:param name="dql"/>
<! Create and init xdql class and specify dql query >
<xsl:variable name="clientx" select=
"java:com.documentum.com.DfClientX.new()"/>
<xsl:variable name="xdql" select="java:getXmlQuery($clientx)"/>
<xsl:variable name="init" select="java:init($xdql)"/>
<xsl:variable name="param" select=
"java:setDql($xdql, $dql)"/>
<xsl:variable name="includeContent" select=
"java:includeContent($xdql,true())"/>
<xsl:variable name="setContentEncoding" select=
"java:setContentEncoding($xdql,'dom')"/>
<xsl:variable name="setContentFormat" select=
"java:setContentFormat($xdql,'xml')"/>
<xsl:variable name="rootNode" select=
"java:setRootNode($xdql, 'xdql')"/>
<xsl:variable name="execute" select="java:execute($xdql,
'DF_READ_QUERY', $DMS_SESSION_ID)"/>
<xsl:copyof select="$myResult"/>
</xsl:template>
• Use two <xsl:variable> elements (nested within the <xsl:template> that will hold the
content) to build a DQL query and call the XDQL template:
<xsl:variable name="myQuery">select * from newsml_component
where role='Main' </xsl:variable>
<xsl:variable name="myResult">
<xsl:calltemplate name="XDQL">
<xsl:withparam name = "dql" select=
"string($myQuery)"/>
</xsl:calltemplate>
</xsl:variable>
Note: A typical error in parameter definition is to not define a string parameter. For
example, the following definition is incorrect:
<xsl:param name="LinkBase"/>
When the template calls the setLinkBase method, Xalan assumes the parameter type
as a tree fragment, rather than a string. The correct definition should be:
<xsl:param name="LinkBase" select="string('http://someURL')"/>
• Within the same <xsl:template> element, use the xalan‑nodeset function to convert
result trees into node‑sets to further manipulate the XML content with XPath
expressions:
<xsl:foreach select="xalannodeset:
nodeset($myResult)//object/content/NewsComponent">
<p>
<a name="{@Duid}"/>
<xsl:applytemplates select=".//Description|.//
Genre|.//HeadLine|.//SubHeadLine|.//ContentItem|
.//ByLine|.//CreditLine|.//DateLine|.//
NewsLineText"/>
</p>
</xsl:foreach>
</xsl:template>
Then a variable is defined called ’myQuery’, whose value is a query string that uses the
value of the DMS_INPUT_OBJECT_ID parameter. The variable is then used to set a
parameter on the ’XDQL’ template, called ’dql’.
<xsl:variable name="myQuery">select r_object_id, cp_department_name_long
from cp_webcontent(all) where r_object_id = '<xsl:valueof
select="$DMS_INPUT_OBJECT_ID"/>'</xsl:variable>
<xsl:calltemplate name="XDQL">
<xsl:withparam name="dql" select="string($query1)"/>...
Tip: You can use <xsl:copy‑of> instructions as a debugging tool when you want to check
the values of parameters and other variables at particular points in the stylesheet. This is
helpful in cases when you expect DFC to pass a parameter, but instead the output is the
default value that was defined in the select clause of a parameter declaration (such as
select=ʺ’default value’ʺ).
Line 4 declares the Java format namespace, to enable Java calls from the XSL stylesheet.
4 xmlns:java="http://xml.apache.org/xslt/java"
Lines 5‑6: The Xalan transformation engine contains a built‑in extension function called
nodeset(), which allows a result tree fragment to be converted to a node‑set data type,
allowing it to be processed further. To use this function, you must declare the Xalan
namespace, which in this example is declared with the prefix xalan‑nodeset.
5 xmlns:xalannodeset=
6 "http://xml.apache.org/xalan"
7 version="1.0">
Line 8 specifies how the result tree will be written to the output file. The method
attribute specifies in this case that the output format will be HTML. The indent attribute
specifies whether or not the output should be indented to reflect hierarchical structure.
In this case, it will not.
8 <xsl:output method="html" indent="no"/>
Line 11 declares the session ID as a parameter, in order to to be able to run queries and
retrieve results from the Content Server.
9 <! the Documentum Session ID is passed in, save it in a
10 variable>
11 <xsl:param name="DMS_SESSION_ID" select="'default value'"/>
Note: The select=ʺ’default value’ʺ clause is optional, since a session ID should always be
declared in the transform operation. For more information, see Transformation support
in DFC, page 80 and Passing and using parameters in the stylesheet, page 84.
Lines 12‑25: This template is an instruction for the <newsletter> element in the static
XML file. The template provides the HTML markup and specifies where to get the
content. Line 16 specifies that the value of the <title> element in the static XML file
should be inserted in the <title> tag inside the <head> section of the HTML markup.
Line 19 specifies that the same title should be inserted in the <h1> tag inside the <head>
section of the HTML markup. Line 21 specifies that the content of the <intro> tag in the
static XML file should be inserted into the HTML <p> tag.
Line 22 specifies that the parser move to the child node <Topics> in the static XML file
and then search the stylesheet for all templates that apply to this element.
12 <xsl:template match="newsletter">
13 <html>
14 <head>
15 <! grab the value of the title element in input xml>
16 <title><xsl:valueof select="title"/></title>
17 </head>
18 <body>
19 <h1><xsl:valueof select="title"/></h1>
20 <! grab the intro >
21 <p><xsl:valueof select="intro"/></p>
22 <xsl:applytemplates select="Topics"/>
23 </body>
24 </html>
25 </xsl:template>
26
Lines 27‑62 provide the instructions on how to obtain and mark up the section of the
HTML page that will contain a title, a table of contents of the topics that will appear, and
the topics themselves. Since this template is rather large, it will be discussed in parts.
Line 28 specifies that the content of the <topictitle> element, which is a child of <Topics>
in the static XML file, should be inserted in an <h2> tag in the HTML markup. In this
case, the <topictitle> element contains the text ʺToday’s Headlines.ʺ
27 <xsl:template match="Topics">
28 <h2><xsl:valueof select="topictitle"/></h2>
Lines 30‑37 provide the instructions for how the content chunks will be obtained. Lines
30‑31 run the DQL query and store the result to the variable myQuery. Line 32 declares
the variable myResult, whose value will be provided by the template function that
follows. Because no value is provided, this variable is set by the parser as the current
output location. to which the results of the template function will be copied. Line 33 calls
the template function named XDQL (see lines 118‑138). Lines 34‑35 declare a variable
named dql, store the string result of the DQL query as the value, and pass that variable
as a parameter to the XDQL template function.
29 <! Build a query to get all Main News Components >
30 <xsl:variable name="myQuery">select * from newsml_component
31 where role='Main' </xsl:variable>
32 <xsl:variable name="myResult">
33 <xsl:calltemplate name="XDQL">
34 <xsl:withparam name = "dql" select=
35 "string($myQuery)"/>
36 </xsl:calltemplate>
37 </xsl:variable>
38
Lines 41‑48 set up the HTML tags to display each of the <headline> elements of the
NewsComponent chunks in an <h3> tag in the HTML markup, with a link to the anchor
for the actual topic, which appears lower on the page.
Lines 41‑42 initiate the instruction to process the set of nodes returned for the
NewsComponent chunks in the template function, after conversion from a result tree
to a node‑set data type. Lines 43‑47 put the contents of the <headline> element in the
node‑set into an <h3> tag in the HTML markup, and a link is constructed from the Duid
attribute of the NewsComponent element, which will link to the anchor of the same
name that will be constructed for the topic itself. This process repeats for each object
in the node‑set, extracting the headline and building the link, until the list of topics is
completed in the HTML result tree.
39 <! Build the Table of Contents links >
40
41 <xsl:foreach select="xalannodeset:
42 nodeset($myResult)//object">
43 <h3>
44 <a href="#{./content/NewsComponent/@Duid}">
45 <xsl:valueof select="HeadLine"/>
46 </a>
47 </h3>
48 </xsl:foreach>
49
Lines 51‑60 set up the HTML markup to display each of the NewsComponent chunks.
Lines 51‑52 initiate the instruction to process the set of NewsComponent nodes returned
from the XDQL query, after conversion from a result tree to a node‑set data type. Line
53 builds a <p> tag in the result tree, and Line 54 constructs an anchor, the name of
which is the value of the Duid attribute of the current <NewsComponent> element that
is being considered. Line 55 instructs the parser to move through the descendants of
the <NewsComponent> node until any of the named elements is reached (Description,
Genre, HeadLine, and so on), then search the stylesheet for the template that matches
this element.
50 <! Now include Article Content >
51 <xsl:foreach select="xalannodeset:
52 nodeset($myResult)//object/content/NewsComponent">
53 <p>
54 <a name="{@Duid}"/>
55 <xsl:applytemplates select=".//Description|.//
56 Genre|.//HeadLine|.//SubHeadLine|.//ContentItem|
57 .//ByLine|.//CreditLine|.//DateLine|.//
58 NewsLineText"/>
59 </p>
60 </xsl:foreach>
61 </xsl:template>
62
Lines 63‑114 contain the templates that provide instructions for how to mark up
particular descendants of <NewsComponent> in HTML. In each template, the
<xsl:apply‑templates/> element instructs the parser to move to the first child node and
search the stylesheet again for any relevant templates. If no relevant template is found,
the parser has a built‑in template that contains the instruction <xsl:apply‑templates/>,
which causes the parser to continue to the next node. The parser moves in a node‑to‑leaf
fashion. When it reaches the end of a leaf, it backs up to the parent and moves to its
next child.
Line 115 is the close tag for the template that began at Line 27.
63 <xsl:template match="HeadLine">
64 <p><b><font size="5"><xsl:valueof select="HeadLine"/>
65 <xsl:applytemplates/>
66 </font></b></p>
67 </xsl:template>
68
69 <xsl:template match="SubHeadLine">
70 <p><b><font size="3">
71 <xsl:valueof select="SubHeadLine"/>
72 <xsl:applytemplates/>
73 </font></b></p>
74 </xsl:template>
75
76 <xsl:template match="CreditLine">
77 <font color="gray">
78 <font size="2">,
79 <xsl:valueof select="CreditLine"/>
80 <xsl:applytemplates/>
81 </font>
82 </font>
83 </xsl:template>
84
85 <xsl:template match="DateLine">
86 <font color="gray" size="2">, <br></br>
87 <xsl:valueof select="DateLine"/>
88 <xsl:applytemplates/>
89 </font>
90 </xsl:template>
91
92 <xsl:template match="NewsLineText">
93 <font color="Blue" size="2"><br></br>
94 <xsl:valueof select="NewsLineText"/>
95 <xsl:applytemplates/>
96 </font>
97 </xsl:template>
98
99 <xsl:template match="ByLine">
100 <font color="gray" size="2">
101 By
102 <xsl:valueof select="ByLine"/>
103 <xsl:applytemplates/>
104 </font>
105 </xsl:template>
106
107 <xsl:template match="ContentItem">
108 <p>
109 <xsl:applytemplates/>
110 </p>
111 </xsl:template>
112
113 <xsl:template match="Comment | Genre">
114 <sup/>
115 </xsl:template>
116
117
Line 119: The dql parameter was defined in Lines 34‑35 as the string value of the query
statement.
119 <xsl:param name="dql"/>
Lines 120‑121 creates a new query object and assigns it to the variable xdql, so that
it can be used in the methods to follow.
120 <xsl:variable name="clientx" select=
"java:com.documentum.com.DfClientX.new()"/>
121 <xsl:variable name="xdql" select="java:getXmlQuery($clientx)"/>
Lines 122‑136 call various methods of the DfXmlQuery class by declaring variables
and assigning values that call the DfXmlQuery methods through the Java namespace.
Except for the xdql variable, which is used to represent the query object in the method
parameters, the other variables that are declared are used for no further purpose.
Note: Java methods are called through an XPath function call, which requires an extra
first parameter. For purposes of querying the repository, the first parameter will always
be the variable that represents the query object (in this case, the variable xdql).
Line 122 calls the init() method to set default values and initializes DfXmlQuery class.
122 <xsl:variable name="init" select="java:init($xdql)"/>
Lines 123‑124 call the setDql() method, using as parameters the variables xdql (the new
query object), and dql (the query string). This method sets the DQL expression.
123 <xsl:variable name="param" select=
124 "java:setDql($xdql, $dql)"/>
Lines 125‑126 call the includeContent() method, which will include the content with
the result for the query object.
125 <xsl:variable name="includeContent" select=
126 "java:includeContent($xdql,true())"/>
Lines 127‑128 call the setContentEncoding() method to specify that the returned content
will be encoded as DOM (Document Object Model).
127 <xsl:variable name="setContentEncoding" select=
128 "java:setContentEncoding($xdql,'dom')"/>
Lines 129‑130 call the setContentFormat() method to set the repository format to be
used, in this case XML.
129 <xsl:variable name="setContentFormat" select=
130 "java:setContentFormat($xdql,'xml')"/>
Lines 131‑132 call the setRootNode() method, which sets the root node‑tag for the
returned DOM. In this case, the root node tag is specified as ʺxdqlʺ.
131 <xsl:variable name="rootNode" select=
132 "java:setRootNode($xdql, 'xdql')"/>
Lines 133‑134 call the execute() method, which executes the DQL query and loads
the result DOM to the xdql query object. The mode parameter is specified as
DF_READ_QUERY, and the session parameter is specified as DMS_SESSION_ID, which
was included as a parameter in Line 11.
133 <xsl:variable name="execute" select="java:execute($xdql,
134 'DF_READ_QUERY', $DMS_SESSION_ID)"/>
Line 135 uses the <xsl:copy‑of> instruction to perform a deep copy of the result tree
fragment in myResult to the current output location, which is the variable declared
in Line 32.
135 <xsl:copyof select="$myResult"/>
136 </xsl:template>
137 </xsl:stylesheet>
The following sections provide reference information and examples for config_6.5.dtd:
• XML source notation, page 93
• Internal parameter entities, page 94
• Elements declared in config_6.5.dtd, page 96
The XML application configuration file is itself an XML document and must conform to one of the
DTDs provided by Documentum with the Default XML Application (for this release, config_6.5.dtd).
The XML DTDs are stored in /System/Applications/Default XML Application.
Symbols
Table 9, page 93 provides basic information about symbol notation.
Symbol Description
+ 1 or more occurrences
Symbol Description
? 0 or 1 occurrence
* 0 or more occurrences
A|B A or B (but not both)
Attribute notation
Attributes are declared with the following notation.
<!ATTLIST element_name
attribute_name attribute_type optional_default_value>
There are only two attributes types used for attribute declarations in config_6.5.dtd:
• CDATA: a string
• (A | B | C): an enumerated‑type list of all possible values
These attribute declarations contain one of four default values:
• #REQUIRED: the attribute value must be provided along with the element.
• #IMPLIED: if no value is provided, the application must use its own default.
• #FIXED ʺvalueʺ: the attribute will always take the value in quotation marks.
• ʺvalueʺ: the attribute will take the value in quotation marks if no other value is
provided.
map_rule_content
Purpose Parameter entity that defines a list of elements that can be used as children of
elements whose primary purpose is to map content from an XML document onto
repository objects and metadata.
Source
templateformat
Purpose Specifies that the content of an element can contain any combination of static
text, variables (using the <var> element), or XPath expressions (using the
<expression> element).
Source
<acl_domain>
Diagram
Children
Parents
Usage notes
The <acl_domain> element must co‑occur with the <acl_name> element to specify the
ACL owner when you want to set a public or private ACL, rather than a system ACL.
The value of <acl_domain> must match the name of the owner who created the ACL
specified in <acl_name>. This value of <acl_domain> will populate the acl_domain
repository property for the chunked object. If the <acl_domain> element is not present,
the default for acl_domain is the repository owner (appropriate for a system ACL).
The <acl_domain> element can contain any combination of static text, variables (using
the <var> element), or expressions (using the <expression> element).
You can specify an alias for <acl_domain>. For more information, see the Usage notes
for <owner_name>.
Example of <acl_domain>
<acl_name>somePublicACL</acl_name>
<acl_domain>ownerNameOfPublicACL</acl_domain>
Source
<acl_name>
Diagram
Children
Parents
Usage notes
ACLs define permissions for an object: which users can access an object and what level
of access the users have. ACLs can be system ACLs (created by the repository owner), or,
combined with the <acl_domain> element, they can be public or private ACLs (created
by an individual user). The <acl_name> element allows you to assign a system ACL
(created by the repository owner) to the chunked object.
Note: If <acl_name> is used without <acl_domain>, then the value must be a system ACL.
The value of <acl_name> should be the name of an existing ACL object. The <acl_name>
element can contain any combination of static text, variables (using the <var> element),
or expressions (using the <expression> element). The value of this element will populate
the repository property acl_name for the object being created. If this element is not
present, the system assigns the default repository security to the object.
You can specify an alias for <acl_name>. For more information, see the Usage notes
for <owner_name>.
Source
<allow_work_in_progress>
Purpose Allows the XML document to bypass well‑formedness and validation checks.
Diagram
Children
None
Parents
application
Usage notes
A symbolic version label must be supplied using the version_label attribute of this
element. This allows work‑in‑progress documents to be identified in the repository
more easily.
In the following example, all eligible XML documents will be imported as simple
documents and assigned the version label WORK IN PROGRESS. Once these documents
are checked out and checked in for the first time, the XML application will apply in
the normal fashion.
Example of <allow_work_in_progress>
<allow_work_in_progress version_label="WORK IN PROGRESS"/>
Tip: An alternative way to bypass the parser during checkin is to add the following line
in the XML document after the XML declaration:
<?dctm xml_app="Ignore"?>
Source
<application>
Diagram of <application>
Children
Parents
Root element
Usage notes
This element is the root element in the XML application configuration file. It contains
the following elements:
• <name>: specifies a name for the XML application.
Note: The value of <name> must match the name of the XML application and the
name of the XML application configuration file, and it must be unique within the
repository system.
• <app_pattern>: contains the identifier information that determines whether this XML
application will apply to an XML document.
• <allow_work_in_progress>: if present, allows the XML document to bypass
validation when the document is imported or checked in.
• <validation>: if present, tells the parser to run in validating mode.
• <dds_validation>: if present, specifies validation against the server data dictionary.
• <java_classes>: allows Java classes to be invoked.
• <external_variables>: allows the use of variables that are external to the XML
document.
• <suppress_output_of_default_attributes>: specifies that default attributes that are
not specified in the XML instance should not be written into the XML that is stored
in the repository.
• <encode_reserved_XML_chars>: specifies that the five reserved XML characters
(ampersand, less than, greater than, apostrophe, and quotation mark) are to be
encoded.
• <map_rules>: contains the rules that specify how to process an XML document.
Source
<app_pattern>
Purpose Container element for identifier information that is used for application detection.
Diagram
Children
Parents
application
Usage notes
The <app_pattern> element is required, but all of its children are optional. This element
does not affect how the XML application functions, but information about the system
identifier, public identifier, schema, or root element is used by Documentum Application
Builder (DAB) to populate fields in the user interface when creating an XML application.
The children of <app_pattern> correspond to specific XML application folder properties,
which are used by Documentum for DTD and schema management and to determine
whether the XML application will apply to a particular XML document.
• <sys_id>: The system identifier in the DOCTYPE declaration of the XML document,
which specifies the path and name of the DTD. Corresponds to the DTD System Id
property of the XML application folder. For more information, see <sys_id>.
• <pub_id>: The public identifier, if there is one. Corresponds to the DTD Public Id
property of the XML application folder. For more information, see <pub_id>.
• <schema>: Specifies the schema name, if a schema is referenced in the XML
document. Corresponds to the Namespace or Schema property of the XML
application folder.
• <element>: Specifies all of the elements that are eligible to be root elements in an
XML document to which the XML application should apply. Corresponds to the
Root Elements property of the XML application folder.
In the following example, if the elements in <app_pattern> contain values that correspond
to the properties set for the XML application folder, then the XML application will apply
to an XML document only if all of the following are true:
• The system identifier in the <!DOCTYPE> declaration in the XML document is
cellphone.dtd
• The public identifier in the <!DOCTYPE> declaration in the XML document is
‑//Documentum//DTD CellPhoneInlineEntity//EN
• The possible root elements of the XML document are <cellphone‑catalog>, <model>,
or <description>.
Example of <app_pattern>
<app_pattern>
<sys_id>cellphone.dtd</sys_id>
<pub_id>//Documentum//DTD CellPhoneInlineEntity//EN</pub_id>
<element>cellphonecatalog</element>
<element>model</element>
<element>description</element>
</apppattern>
Source
<attribute_exist_test>
Diagram
Children
attr_name
Parents
element_selection_pattern
Source
<attribute_test>
Diagram
Children
attr_name, value
Parents
element_selection_pattern
Usage notes
This element allows you to specify that a rule or action should only apply to an element
only when one or more attributes have the values you specify. The element to which
the attribute belongs is specified in the parent <element_selection_pattern>). For more
information, see <attr_name> and <value>.
Example of <attribute_test>
Source
<attribute_value_of_element>
Purpose Gets the attribute value of an element in the XML document to store to a variable.
Diagram
Children
Parents
variable
Usage notes
This element gets an attribute value for a specified element in the XML document. This is
the way that an attribute value in the XML document can be extracted and used for a
purpose such as assigning a folder or path name or populating a repository property.
Suppose you have a <procedure> element that distinguishes installation procedures
from procedures related to use of the product with the role attribute, as in <procedure
role=ʺinstallʺ> and <procedure role=ʺuseʺ>. The following example stores the value of
the role attribute in the <procedure> element in the XML document to a variable called
procedureType.
Example of <attribute_value_of_element>
<xml_content_rule>
<element_selection_pattern>
<element>procedure</element>
</element_selection_pattern>
<variable>
<name>procedureType</name>
<attribute_value_of_element>
<this_element/>
<attr_name>role</attr_name>
</attribute_value_of_element>
<default>Attribute Unspecified</default>
</variable>
...chunking portion of rule...
</xml_content_rule>
Source
<attr_name>
Diagram
Children
#PCDATA
Parents
Usage notes
This element is a reused content model that requires static text as its content. The value
specifies the name of an attribute in the XML document, and the use to which this
information is put depends on the context in which <attr_name> occurs.
The <attr_name> element has one attribute called namespaceURI, which can be used to
further qualify the attribute that is being specified in the XML document.
In the following example, the <attr_name> element is used to identify an attribute called
MyAttribute, prefixed with a namespace called nspref, defined in the document as
xmlns:nspref=ʺhttp://www.nspref.com/ʺ. This could be used, for example, to extract
content from an attribute such as the following:
<somechunk nspref:MyAttribute="ExampleValue">
See also the examples for <element_selection_pattern> and <link_rule> for use of the
<attr_name> element.
Example of <attr_name>
<attr_name namespaceURI="http://www.nspref.com/">
MyAttribute
</attr_name>
Source
<business_policy>
Diagram
Children
Parents
Usage notes
For example, here is the rule in the cellphone example that attaches the objects created
from <model> elements to a document lifecycle:
Example of <business_policy>
<xml_content_rule>
...
<business_policy>
<policy_name>/System/Applications/CellPhoneSampleApp/
Cell_Phone_Lifecycle</policy_name>
<policy_scope>CellPhoneSampleApp</policy_scope>
<policy_state>Review</policy_state>
</business_policy>
...
</xml_content_rule>
Source
<child_of>
Diagram
Children
element_selection_pattern
Parents
context_rule
Usage notes
The element named as the value of the <child_of> element must be a parent to the
element that is the focus of <element_selection_pattern>. To be a child, there can be no
intervening nodes between the element and its parent. If there are intervening nodes,
use <descendant_of>.
Example of <child_of>
Source
<content_of_element>
Purpose Gets the content of an element in the XML document to store to a variable.
Diagram
Children
this_element, element_selection_pattern
Parents
variable
Usage notes
This element is used when a variable is defined. It gets the content of the element
in the XML document that is specified in its child element, either <this_element> or
<element_selection_pattern>. This is the way that content in the XML document can be
extracted and used for a purpose such as assigning a folder or path name or populating a
repository property.
Example of <content_of_element>
Source
<!ELEMENT content_of_element
(this_element | element_selection_pattern)>
<!ATTLIST content_of_element subelement_option
(include_content | include_content_and_markup) #IMPLIED>
<content_of_this_element>
Purpose Specifies that the content of the current element will be used as the link target.
Diagram
Children
None
Parents
<link_target>
Usage notes
This element is used in a Link Rule to specify that the name and location of a linked file
(such as a graphic) can be obtained from the element that is the target of the Link Rule.
Example of <content_of_this_element>
Source
<context_rule>
Purpose Specifies the structural context in which an element must occur for a rule to apply.
Diagram
Children
child_of, descendant_of
Parents
element_selection_pattern
Usage notes
The <context_rule> element specifies that an element in the XML document must be a
child or descendant of another element. This allows you to add context sensitivity to a
target element. See <child_of> and <descendant_of> for more information.
Example of <context_rule>
Source
<date_format>
Purpose Specifies the date format that will be applied to extracted XML content and
assigned to a repository date property.
Diagram
Children
#PCDATA
Parents
Usage notes
The <date_format> element specifies a date format that will be applied to any content
extracted from an XML document and used to populate a repository date property.
Without the <date_format> element present, the date will be set using the date format of
the locale of the machine on which DFC is processing the XML document. This would
cause a problem, for example, if the XML application were being processed by several
application servers using different locales.
Note: All XML documents that are processed against the XML application must have
their dates in the format specified in <date_format>. If the date is specified in a different
format, the date will be set using the date format of the locale of the machine on which
DFC is processing the XML document.
Supported date formats are specified in the Java class SimpleDateFormat. For more
information, see http://java.sun.com/j2se/1.3/docs/api/java/text/SimpleDateFormat.html
Example of <date_format>
<metadata>
<dctmattr>
<name>myCustomDateAttr</name>
<template><var name="myDate"/></template>
<date_format>MMddyyyy</date_format>
</dctmattr>
</metadata>
Source
<dctmattr>
Diagram
Children
Parents
metadata
Usage notes
The <dctmattr> element uses the following two children to assign values to repository
metadata:
• <name>: the name of the repository property
• <template>: the value the will be assigned to the repository property
• Not Implemented: <encode_reserved_XML_chars>: not implemented.
Note: If a rule is used to set a repository property, and the user manually sets that
property through a client application, the user’s value will be overwritten when the
document is checked in. If you wish to change repository properties directly and have
them propagate back to the XML document, use <two_way_dctmattr>.
In the following example, the following single‑value repository properties are set:
• catalog_name: set with the static text Cell Phone Catalog.
• model_name: set with the value of the variable modelName
• title: set using a combination of static text and variables
If the values of variables gathered from the XML document are
brandName=ʺDeNovoʺ, modelName=ʺSuperChargerʺ, and price=ʺ95000ʺ, then the
repository property called title will be assigned the following value:
DeNovo(model SuperCharger)$95000
Note: The variables modelName, brandName, and price must be defined higher up
in the <xml_context_rule> with the <variables> element. See <xml_content_rule> and
<two_way_dctmattr> for examples.
Example of <dctmattr>
<metadata>
<dctmattr>
<name>catalog_name</name>
<template>Cell Phone Catalog</template>
</dctmattr>
<dctmattr>
<name>model_name</name>
<template><var name="modelName"/></template>
</dctmattr>
<dctmattr>
<name>title</name>
<template><var name="brandName"/>(model <var name=
"modelName"/>)$<var name="price"/></template>
</dctmattr>
</metadata>
Source
<dctmattr_repeating>
Diagram
Children
Parents
metadata
Usage notes
See <dctmattr> for general usage information. This element should be used for repeating
properties in the repository.
The rule in the following example has the following characteristics:
• It chunks on the <book> element.
• It declares the variable called firstName and assigns it the value of each <firstname>
element in the XML document. If the <firstname> element has no value, it assigns the
value ʺUnspecifiedʺ for that occurrence.
• It declares the variable called lastName and assigns it the value of each <lastname>
element in the XML document. If the <lastname> element has no value, it assigns the
value ʺUnspecifiedʺ for that occurrence.
• It assigns the repeating repository property with the string ʺfirstname lastnameʺ, for
each value stored in that variable. For example, suppose the XML document had
the following elements:
<author>
<firstname>Joe</firstname>
<lastname>Smith</lastname>
</author>
<author>
<firstname>Mary</firstname>
<lastname>Jones</lastname>
</author>
Then, given the rule in the example, the values of the repeating repository property
authors would be as follows:
authors[0]Joe Smith
authors[1]Mary Jones
In this example, the DTD or W3C schema for the XML document should require both a
<firstname> and <lastname> element for every <author> element. If one of these elements
were missing, the firstName and lastName variables would not contain an equal number
of values, resulting in an incorrect concatenation for the repository property.
Example of <dctmattr_repeating>
<xml_content_rule>
<element_selection_pattern>
<element>book</element>
</element_selection_pattern>
<variables>
<variable>
<name>firstName</name>
<content_of_element>
<element_selection_pattern>
<element>firstname</element>
</element_selection_pattern>
</content_of_element>
<default>Unspecified</default>
</variable>
<variable>
<name>lastName</name>
<content_of_element>
<element_selection_pattern>
<element>lastname</element>
</element_selection_pattern>
</content_of_element>
<default>Unspecified</default>
</variable>
</variables>
<metadata>
<dctmattr_repeating>
<name>authors</name>
Source
<dds_validation>
Purpose If present, specifies that each object that is created or checked in will be validated
with the data dictionary on the server.
Diagram
Children
None
Parents
application
Usage notes
Use the <dds_validation> element only if additional validation by the data dictionary is
required beyond the rules enforced by your DTD or schema. The data dictionary is a
repository of information in the repository about object types and properties.
If this element is present, then all objects and repository properties extracted from the
XML document will be validated against the data dictionary when they are imported
or checked in. At the object type level, validation is done for check constraints and
certain flags, such as is_immutable. At the attribute level, validation is done for check
constraints, value assistance, format_pattern, and flags such as read‑only, is_immutable,
and is_required.
Failure to pass data dictionary validation will result in varying behavior depending on
the context of the failure. In some instances, failure to pass data dictionary validation
causes save or checkin operations to fail. In other instances, failure displays a dialog
asking the user to pick a value.
Note:
• All objects that compose the document are validated. It is not possible to validate
a subset of the objects.
• Data dictionary validation runs in UTF‑8 mode.
• This element should contain no content.
• There is a performance cost associated with this type of validation. The length of
time required for the import or checkin operation increases with the number of
objects and the amount of information that must be validated. It is a best practice to
use your own DTD to validate attribute values in the XML document, rather than
validating against the Content Server data dictionary.
• You cannot use this element together with <allow_work_in_progress>.
For information about defining data dictionary information, refer to Documentum Content
Server Fundamentals Guide.
Example of <dds_validation>
<dds_validation/>
Source
<default>
Purpose Specifies the value that is assigned to a variable if no value is found in the XML
document.
Diagram
Children
#PCDATA
Parents
external_variable, variable
Usage notes
This element is an optional child of elements that define and assign values to variables.
Example of <default>
Source
<default_acl>
Diagram
Children
None
Parents
Usage notes
This element is always empty but uses its attribute value to assign the ACL of a chunked
object to one of the Documentum default ACLs:
• FOLDER
This is the default ACL associated with the object’s primary folder, in which the
object is first stored when it is created. If the object was placed directly in a cabinet,
the server uses the ACL associated with the cabinet as the folder default.
• TYPE
This is the ACL associated with the object’s type Every object type has an ACL
associated with its type definition. You can use that ACL as a default ACL for any
object of the type.
• USER
This is the ACL associated with the object’s creator Every user object also has an
ACL. It is not used to provide security for the user but only as a potential default
ACL for any object created by the user.
• NONE
If this element is not present, the default is ʺNONEʺ.
Note: The <default_acl> and <acl_name> elements cannot be used together.
Example of <default_acl>
<default_acl value="FOLDER"/>
Source
<descendant_of>
Diagram
Children
element_selection_pattern
Parents
context_rule
Usage notes
The element named as the value of the <descendant_of> element must be an ascendant
to the element that is the focus of <element_selection_pattern>. The ascendant can be
a parent, grandparent, or any higher ascendant. For a more restrictive context rule,
use <child_of>.
Suppose that you only wanted to chunk procedures when they appeared in an appendix.
The following example shows the portion of an <xml_content_rule> that specifies that
the <procedure> element in the XML document will trigger the rule, but only when it is a
descendant of the <appendix> element.
Example of <descendant_of>
<xml_content_rule>
<element_selection_pattern>
<element>procedure</element>
<context_rule>
<descendant_of>
<element_selection_pattern>
<element>appendix</element>
</element_selection_pattern>
</descendant_of>
</context_rule>
</element_selection_pattern>
...
</xml_content_rule>
Source
<element>
Purpose Specifies the name of an element in the XML document, for purposes determined
by the context.
Diagram
Children
#PCDATA
Parents
app_pattern, element_selection_pattern
Usage notes
This element is a reused content model that requires static text as a value. It is used as
the generic identifier or tag name of an element. When used in <app_pattern>, it is used
to identify elements that can be considered the root element in a document processed
by the application. When used in <element_selection_pattern>, its use depends on the
context in which <element_selection_pattern> appears.
The value of the attribute associated with <element>, namespaceURI, is the URI part
of a namespace that may be associated with the element. See the example for the
<attr_name> element.
Example of <element>
See <element_selection_pattern>.
Source
<element_selection_pattern>
Diagram
Children
Parents
Usage notes
This is a container element that is used to specify the name of an element occurring in an
optional context. It is used for various purposes, depending on its parent element, as
the following table show.
The <element_selection_pattern> element contains the following children, in the
following order:
• <element>: specifies the element in the XML document that will be selected.
• <context_rule>: if present, specifies that the element will be selected only when it
is a child or descendant of another specified element.
• <occurrence>: if present, specifies that the named element must be the nth occurrence
of this element within this parent.
• <attribute_test>: if present, specifies that the element will be selected only if one or
more attributes of that element have particular values.
There are some restrictions on the elements that can be named in the <element> portion
of <element_selection_pattern>, as shown in Table 10, page 139.
The following example is written to create a chunk for the introduction chapter of a
book. It specifies that the element that will trigger the rest of the rule must have the
following characteristics:
• <element> specifies that the element in the XML document that will trigger the rule is
the <chapter> element.
• The namespaceURI attribute of <element> specifies that the <chapter> element
belongs to the namespace at URI http://www.documentum.com/book.xsd. For
example, if the namespace was defined with the prefix dctm, then this rule would
apply to <dctm:chapter>.
• <child_of> specifies that the rule will only apply when <chapter> is a child of the
<book> element.
• <attribute_test> specifies that the rule will only apply when <chapter> contains an
attribute called chapter_type with the value ʺintroductionʺ.
Because location is not specified, the chunk will be created in the same location as the
parent chunk.
Example of <element_selection_pattern>
<xml_content_rule>
<element_selection_pattern>
<element namespaceURI="http://www.documentum.com/book.xsd">chapter
</element>
<context_rule>
<child_of>
<element_selection_pattern>
<element>book</element>
</element_selection_pattern>
</child_of>
</context_rule>
<attribute_test>
<attr_name>chapter_type</attr_name>
<value>introduction</value>
</attribute_test>
</element_selection_pattern>
<make_entity/>
</xml_content_rule>
Source
<entity_rule>
Diagram
Children
Parents
map_rules
Usage notes
Use this element if the XML document to be imported to the repository has external
parsed (XML) entities that need to be preserved when exported or checked out. The
entity will be stored as a component of the XML virtual document in the repository. If
any <xml_content_rule> applies to an element in the entity, the entity will become a
virtual document itself, with its own chunked components. However, <entity_rule>
ensures that when the document is exported or checked out, the entity will be
reassembled into a single entity that is external to the XML container document.
Note: If you want to preserve entities on export or checkout, you cannot have an
<xml_content_rule> for any root element in an entity.
If this element is not present, external parsed entities are chunked following the
regular chunking rules and reassembled into a single document on export or checkout.
Normally, this element is not necessary, since the XML application would normally
eliminate the need to maintain external parsed entities.
In an Entity Rule you can optionally specify one or more locations for the entity, or an
owner name, object name, ACL information, object type, or business policy (document
lifecycle). You cannot specify a version label for an external parsed entity.
Note: An XML application can only contain one Entity Rule, and you cannot selectively
preserve some external parsed entities but not others.
Source
<encode_reserved_XML_chars>
Purpose Specifies that the five reserved XML characters (ampersand, less than, greater than,
apostrophe, and quotation mark) are to be encoded.
Diagram
Children
EMPTY
Parents
Usage notes
In DTD versions prior to DFC 5.3, when dm_sysobject metadata is set through an XML
application, the five reserved XML characters (ampersand, less than, greater than,
apostrophe, and quotation mark) are decoded. We do this with the assumption that a
user is viewing the metadata, where seeing & is better than seeing &.
However, retrieval of metadata through XDQL queries and subsequent publishing of
the resulting XML may produce data that is not ʺwell‑formed,ʺ since the five reserved
XML characters are not encoded.
Using the encode_ reserved_XML_chars element, you can specify how you want the
special XML characters treated for metadata. This optional element is available in two
places:
• The <application> element level ‑‑ All metadata is affected.
Source
<expression>
Purpose Allows the use of XPath expressions and Java classes inside the XML application
configuration file.
Diagram
Children
#PCDATA, var
Parents
Usage notes
This element allows the use of XPath syntax and XPath functions to manipulate variables
before they are used to set repository properties.
Both can be used.
Note the following limitations of the <expression> element:
• XPath functions cannot be called if they require a context (node‑set).
• The <expression> element cannot be used with <two_way_dctmattr> and
<two_way_dctmattr_repeating>.
See http://www.w3c.org/TR/xpath#section‑String‑Functions for a list of string functions
in the XPath specification.
In the following example, the year is truncated from a date string before the variable is
used. If the variable effDate has the value ʺ2002/04/03ʺ, then the effective_date repository
property will be populated with the value ʺ04/03ʺ.
Note: You must use quotes around the <var> element if the value of <var> is a string.
However, if you were calling a function that took a boolean or integer parameter, the
quotes should not be used, as in the following:
substring("<var name="myName"/>", <var name="pos"/>)
Example of <expression>
<dctmattr>
<name>effective_date</name>
<template><expression>substringafter("<var name="effDate"/>", "/")
</expression></template>
</dctmattr>
Source
<external_variable>
Diagram
Children
name, default
Parents
external_variables
Usage notes
This element is used for a variable that contains a value that comes from a source other
than the XML document, or a value that is hard‑coded. The value for each variable
named in an <external_variable> element is provided by the client by either of the
following two methods:
IDfImportNode:setExternalVariable(String key, String value)
IDfCheckinNode:setExternalVariable(String key, String value)
The IDfProperties object that is passed to this method will contain name/value pairs, and
the name of this object must correspond to an <external_variable> name.
The <external_variable> element contains two children:
• <name> specifies the name of the external variable.
• <default> specifies a value if the external variable is not present.
In addition to values supplied by the client, there are default variables for user name,
the user’s home cabinet, the name of the repository, and the session ID. For more
information, see the usage notes for the <var> element.
In the following example, the external variable CITY is declared. To use this variable,
you would use the element <var name=ʺCITYʺ> wherever the <var> element can be used.
The default value would be used if the client did not pass in the variable as a value.
Example of <external_variable>
<name>Location1</name>
<app_pattern>
<element>cars</element>
</app_pattern>
<external_variables>
<external_variable>
<name>CITY</name>
<default>Vancouver</default>
</external_variable>
</external_variables>
...
</application>
The following example shows how a client could provide the values for the external
variables.
Source
<external_variables>
Diagram
Children
external_variable
Parents
application
Usage notes
Example of <external_variables>
Source
<format_attr>
Purpose Specifies the format of the object created to store the content specified in a non‑XML
content rule.
Diagram
Children
#PCDATA
Parents
non_xml_content_rule
Usage notes
Example of <format_attr>
Source
<java_class>
Diagram
Children
None
Parents
java_classes
Usage notes
Each <java_class> element defines a Java class that can be called within a rule. In the
<java_class> definition, you must include the fully qualified package name of the Java
class.
The <java_class> element is always empty, but a value must be supplied for the two
attributes:
• prefix: the reference that is used to call methods (the instance of the class)
• classname: the fully qualified Java class name
To call methods, you use the prefix followed by the name of the method, separated by a
colon. If a method takes a parameter, you can pass it as shown in the first example below.
Note: The Java class must be installed on the system and must be accessible from the
class path.
See the examples below for more information on how Java classes can be used.
Note that the Java classes/methods that are declared in the XML application configuration
file have the following limitations:
• The methods that are called must return a String. For methods that do not return
a String, the value returned will be the String returned by the object’s toString()
method (for example, abc@4938).
• The default constructor of the object will be used. If an object requires information, it
must be passed as a parameter to the method.
• The Java methods should be static (stateless), since it is not guaranteed when the
object will be cleaned up.
• If the Java method throws an exception, the error will be reported as a SAXException
and will be translated into an IDfOperationError.
The details of the syntax are inherited from Xalan:
• http://xml.apache.org/xalan‑j/extensions.html
• http://xml.apache.org/xalan‑j/apidocs/org/apache/xalan/extensions/
ExtensionHandlerJavaClass.html
In the following example, two Java classes are declared, then several examples are
provided of their use in an <expression> element.
Example of <java_class>
<application>
...
<java_class prefix="math" classname="java.lang.Math"/>
<java_class prefix="random" classname="java.util.Random"/>
...
</application>
<template><expression>math:sin(0.7)</expression></template>
<template><expression>math:sin('<var name="somevar"/>')
</expression></template>
<template><expression>random:nextInt(random:new(),10)
</expression></template>
The following example shows the use of chaining, in which a Java method is called and
passes the output of another method as a parameter.
Example of chaining
<dctmattr>
<name>title</name>
<template><expression>myClass:bar(myClass:baz())
</expression></template>
</dctmattr>
If the Java method needs to access the repository, you can pass the external variable
called DF_SESSION as a parameter. The following example demonstrates passing the
session ID.
The ʺjavaʺ namespace has been predefined, allowing you to access methods in the Java.*
packages. This means that you do not have to declare the classes in the <java_classes>
element. Either class can be referenced by using the prefix (java:) and the fully‑qualified
class name, as shown in the following example.
Source
<java_classes>
Diagram
Children
java_class
Parents
application
Usage notes
The <java_class> element allows you to invoke custom Java code. Each Java class is
specified with the <java_class> child element. See the <java_class> element for usage
information.
Example of <java_classes>
Source
<link_rule>
Purpose Specifies how Documentum recognizes and manages unparsed linked files and
NDATA entities for the XML application.
Diagram
Children
Parents
map_rules
Usage notes
Link Rules specify how to handle unparsed external files that are linked from the XML
document or declared as NDATA entities. These external files can be of any file format.
Graphics files are a typical type of unparsed external file that would be handled by a
Link Rule.
The element that triggers the rule must contain the link, and the <link_target> portion
of the rule must specify whether the link is contained in the element content or as an
attribute value. How the linked file itself is handled on import depends on the form of
the link, as shown in Table 11, page 156.
Note:
• If the element content or attribute value does not specify a valid path name or DRL,
then the linked file will not be imported into the repository.
• You cannot use a URL as a link.
• If the link contains an anchor suffix (for example, example.htm#anchorname), the
entire file is imported, but the anchor link is preserved so that when the document is
downloaded this anchor link will continue to work correctly in the XML document.
• The linked file can be in XML format but will remain unparsed. (For parsed external
entities, use <entity_rule>.
These linked files are managed along with the XML document. When an XML document
is imported or checked in, any linked files that need to be imported are automatically
uploaded along with the document. The file format is detected by the repository, as long
as the format is one that is recognized by the Content Server. When an XML document is
checked out with descendants, all of the external files are placed in the same checkout
directory as the document. The links in the XML document are patched to point to the
checkout directory on the local system.
The <link_rule> element contains the following elements:
• <element_selection_pattern> specifies the name of the element that contains the link.
• <link_target> specifies whether the link can be found in the content of the element
or as an attribute value.
• A variety of optional elements allow you to specify the target repository location
for the linked file, the owner name, the object name, permissions, the object type,
a document lifecycle that will be attached to the object, or how the linked file’s
repository properties will be populated. These are specified the same way as for
an <xml_content_rule>.
Note: If you do not specify <object_name> in a link rule, the object created in the
repository will take on the file name specified in the link. (If the link includes a path,
it will be stripped off.)
• <version_label> allows the option to set a binding rule on import using an existing
symbolic version label.
Examples of <link_rule>
• Link is the name of an NDATA entity and link target is contained in an entity
attribute.
• Link is a DRL and link target is element content.
The first example of <link_rule> has the following characteristics:
• <element_selection_pattern> specifies that the <graphic> element in the XML
document will trigger this rule, and the link is contained in this element.
• <link_target> specifies that the link is contained in the target element’s href attribute.
Here is an example of how the link to a file on the local system would look in the
XML document:
<graphic href="c:\Images\myImage.jpg"/>
This link could also be a DRL.
• <path> specifies that when the linked file is imported, it will be stored in the
Images folder, which should be a sibling of the folder in which the parent object is
stored. For example, suppose the parent of the <graphic> element is <figure>, and a
chunking rule for <figure> places the chunk in the Documents\Figures folder. The
relative path ..\Images will place any files linked from the <graphic> element into
the Documents\Images folder.
Example of <link_rule> when link target is attribute value
<link_rule>
<element_selection_pattern>
<element>graphic</element>
</element_selection_pattern>
<link_target>
<attr_name>href</attr_name>
</link_target>
<location>
<path>../Images</path>
</location>
</link_rule>
In the second example, suppose the following NDATA entity is declared in the XML
document for the MyGraphic.gif file:
<!ENTITY MyGraphic SYSTEM "MyGraphic.gif" NDATA GIF>
The following entity reference occurs in the XML content:
<graphic href="MyGraphic"/>
This assumes that the DTD has defined the href attribute as type ENTITY, such as in
the following declaration:
<!ELEMENT graphic EMPTY>
<!ATTLIST entityref ENTITY #IMPLIED>
The Link Rule would then be identical to that shown in the first example.
In the third example, the content of the <graphic> element in the XML document is used
as the link target. The <graphic> element could contain a path on the local system, but
in the following example it contains a DRL to a repository location, as in the following
example:
<graphic>
dctm://scribblers3/0900270f8003ee6c?DMS_OBJECT_SPEC=
CHRONICLE_ID&DMS_VLAB=CURRENT
</graphic>
For information on how to construct and interpret DRLs, see Constructing DRLs, page 61.
Source
<link_target>
Purpose Specifies whether the link in a Link Rule appears in the target element’s content
or in an attribute value.
Diagram
Children
attr_name, content_of_this_element
Parents
link_rule
Usage notes
This element is used to determine whether the link in a Link Rule can be found in the
target element’s content or in an attribute value. This is specified by the use of one of the
following child elements:
• <attr_name> specifies the name of an attribute in the XML document whose value
will contain the link.
• <content_of_this_element> specifies that the content of the target element of the
Link Rule will contain the link.
See the examples for <link_rule>.
Source
<link_template>
Purpose Specifies that an XML chunk will be managed in the repository using a defined
link structure.
Diagram
Children
Parents
non_xml_content_rule, xml_content_rule
Usage notes
Example of <link_template>
Source
<location>
Purpose Specifies the folder or cabinet in the repository in which a chunked object is stored.
Diagram
Children
Parents
Usage notes
Example of <location>
Source
<make_entity>
Purpose Specifies that a chunked object has an inline relationship to its parent, when
downloaded with the parent.
Diagram
Children
None
Parents
xml_content_rule
Usage notes
This element specifies that when an XML document is checked out with its descendants,
the descendant chunks will come down ʺinline,ʺ which means that the descendant
chunks are incorporated into a single XML file, as opposed to single files for each chunk.
This element is currently a required child of <xml_content_rule>, which means that only
inline descendants are supported. You should always add it to a chunking rule.
Note:
• This element should contain no content.
• Whether a chunk is created for the element specified in an XML Content Rule
is determined by the make_object attribute of <xml_content_rule>, not by the
<make_entity> element.
Example of <make_entity>
Source
<map_rules>
Purpose Contains the rules that specify how to process an XML document in Documentum.
Diagram
Children
Parents
application
Usage notes
This is a container element for the individual rules that determine how an XML
document is processed in Documentum. There are several types of rules, represented
by the following child elements:
• <xml_content_rule>: stores XML chunks
Source
<metadata>
Purpose Contains a list of elements that set single and repeating values of repository
properties.
Diagram
Children
Parents
Usage notes
This is a container element. Values are set within the <metadata> element with the
following children:
• <dctmattr>: sets single‑value repository properties
• <dctmattr_repeating>: sets multivalue (repeating) repository properties
• <two_way_dctmattr>:
• <two_way_dctmattr_repeating>:
All repository properties that are named in an XML application configuration file
must be predefined, either as standard attributes or as custom attributes. The easiest
way to create custom object types and attributes in a repository is with Documentum
Application Builder.
Caution: The character entity references &, <, >, ' or " are
translated into actual characters in the metadata (&, <, >, ’, ʺ). These characters can
cause problems if the metadata are used in generating XML or HTML output.
Example of <metadata>
Source
<name>
Purpose Specifies the name of the XML application, the name of Documentum properties to
populate, or a variable name, depending on the parent element.
Diagram
Children
#PCDATA
Parents
Usage notes
This element has no specific behavior. The content of this element depends on the
context in which it occurs.
Note: The value of <name> is case sensitive when used for variables.
Source
<non_xml_content_rule>
Purpose Specifies how Documentum recognizes and manages non‑XML content that is
embedded in an XML document.
Diagram
Children
Parents
map_rules
Usage notes
This element is used to extract base64 data from the XML document. The base64
data is decoded and imported as a separate object. For example, a Word document
could be included in the XML document by encoding it in base64. When the
<non_xml_content_rule> triggers, it will create an object for the base64 data and replace
the data with a link in the parent document, defined in the <link_template> element.
Note:
• This element currently supports only base64‑encoded data, and the encoding
attribute does not need to be specified, since ʺbase64ʺ is the default.
• Once the base64‑encoded data is decoded, it is maintained as a separate file with a
link from the XML document.
You can control how this object is handled in the repository in the same way as for
<xml_content_rule>.
The rule in the following example has the following characteristics:
• <element_selection_pattern> specifies that the <mybase64ref> element in the XML
document will trigger the rule.
• Since the <location> element is not present, the decoded base64 object will be created
in the same directory as the parent document.
• <format_attr> specifies that crtext is the file format type in which the resulting
decoded data will be stored in Documentum.
• <link_template> is obligatory and specifies that the link will be maintained separately
from its parent. Since angle brackets are part of the content of this element, the
open and close tags must be specified using character entities, rather than as
markup. The <var name=ʺlocationʺ> serves as a placeholder for the file name of the
imported (and decoded) base64 data. For example, if the name of the object created
was someFile.doc, the following content would be inserted into the XML parent
document at the location from which the base64 data was extracted:
<mybase64ref>someFile.doc</mybase64ref>
Note: The location variable that is used as a placeholder in <link_template> does not
need to be declared. If <var name=ʺlocationʺ> is used in any other element besides
<link_template> it will be treated as a regular variable and must be declared before it
can be used.
Example of <non_xml_content_rule>
<non_xml_content_rule>
<element_selection_pattern>
<element>mybase64</element>
</element_selection_pattern>
<format_attr>crtext</format_attr>
<link_template><;mybase64ref ref="<var name="location"/>">;
<;/mybase64ref>;</link_template>
</non_xml_content_rule>
Source
<object_name>
Diagram
Children
Parents
Usage notes
The <object_name> element can contain any combination of static text, variables (using
the <var> element), or expressions (using the <expression> element).
Note: You can use Unicode characters in object names.
If <object_name> is not specified in a rule, a name is created for the chunked object
based on the name of the element being chunked plus a unique series of numbers. The
exception is <link_rule>, which defaults to the name of the linked file.
Example of <object_name>
Source
<object_type>
Purpose Specifies what object type should be used for the chunk.
Diagram
Children
Parents
Usage notes
In the following example, the new object will be created as a document of custom type
sop_doc.
Example of <object_type>
<xml_content_rule>
<element_selection_pattern>
...
</element_selection_pattern>
<object_type>sop_doc</object_type>
<make_entity/>
</xml_content_rule>
Source
<occurrence>
Purpose Tests that an element is the nth occurrence of all elements of the same name.
Diagram
Children
#PCDATA
Parents
element_selection_pattern
Usage notes
This element contains a number value that specifies that it is the nth occurrence of that
element within its direct parent.
Example of <occurrence>
Source
<owner_name>
Diagram
Children
Parents
Usage notes
The <owner_name> element can contain any combination of static text, variables (using
the <var> element), or expressions (using the <expression> element). The value will
populate the repository property called owner_name. If the <owner_name> element is
not present, it defaults to the name of the user who imports the XML document.
Note: If you include an <owner_name> element, all users who have Version or Write
permission on documents processed with the application must also have Change Owner
permission on those documents. Each time a user saves or checks one of the documents,
the system attempts to reset the owner_name. The Save or Checkin operation fails if the
user does not have the appropriate permission to set that attribute.
You can specify an alias for <owner_name> using the following format:
%[alias_set_name.]alias_name
in which square brackets means that the element is optional. This means that you can
set an alias name as in either of the following examples:
<owner_name>
%engr_aliases.engr_vp
</owner_name>
<owner_name>
%engr_vp
</owner_name>
For more information on aliases, see the Documentum Object Reference Manual.
Suppose that the owner of a document is defined in your XML document in the
following way:
<book owner="John Doe">
The following example extracts this owner name from the owner attribute in the XML
document and assigns it to the ownerName variable.
Example of <owner_name>
<xml_content_rule>
...
<variables>
<variable>
<name>ownerName</name>
<attribute_value_of_element>
<element_selection_pattern>
<element>book</element>
</element_selection_pattern>
</attribute_value_of_element>
<default>Owner Unspecified</default>
</variable>
</variables>
<owner_name><var name="ownerName"/></owner_name>
...
</xml_content_rule>
Source
<path>
Diagram
Children
Parents
location
Usage notes
The value of <path> can be any combination of static text, variables (using the
<var> element), or expressions (using the <expression> element).
Note: The value of <path> is case‑sensitive for folder creation. For example, if the folder
name is extracted from an XML element, the element content myFolder and MyFolder
would result in the creation of two separate folders, one named myFolder and one
named MyFolder.
Both relative and absolute paths can be specified. A full path takes the following form:
/cabinet/folder1/folder2...
If a relative path is specified, it will be relative to the primary location of the parent
chunk. Relative paths are similar to those in DOS, as in these examples:
• folder1: Specifies a child of the parent chunk location.
• folder1/folder2: Specifies a grandchild of the parent chunk location
Example of <path>
<location>
<path>Models/<var name="modelName"/></path>
</location>
You can use a DRL to query for a particular folder. In the following example, the XML
chunk will be imported to a custom folder of type draft_folder, which has the custom
property project_status set to ʺDRAFTʺ. On import or checkin, the DRL for the location
is resolved to a folder that is returned by the query. If the query does not return an
object, the operation will fail.
You could also build the DRL from the XML itself through the use of the <var> element.
In the following example, the DRL is constructed from a combination of static text and a
variable called currStatus, defined earlier in the <xml_content_rule> element.
Source
<permanent_link>
Diagram
Children
None
Parents
link_rule
Usage notes
This element is used only with relation objects. It is always empty, and, if present,
sets the permanent link to true. For further information on permanent links, see the
Documentum Object Reference Manual.
Note: This element is only effective when the link type is peer.
Example of <permanent_link>
<permanent_link/>
Source
<policy_name>
Purpose Specifies the name or object ID of an existing business policy (document lifecycle).
Diagram
Children
Parents
business_policy
Usage notes
The value of <policy_name> can be either the name of a document lifecycle (including
the path) and its location in the repository.
Note: If you use an object ID instead of the document lifecycle name, you will have
to change the object ID if you replicate or install the XML application into another
repository.
Example of <policy_name>
Source
<policy_scope>
Diagram
Children
Parents
business_policy
Usage notes
If the business policy (specified in the parent element <business_policy>) has one or
more alias sets listed in its alias_set_ids attribute, you can specify one from the list as the
object’s business policy scope or allow the server to choose one by default.
The <policy_scope> element optionally specifies the dm_alias_set property that is
associated with a dm_policy object. When the object is saved to the repository, the server
will use the business policy scope, if needed, to resolve any alias specifications found in
the object’s owner_name, acl_name, and acl_domain properties.
Note: The <policy_scope> element is optional.
The <policy_scope> element can contain any combination of static text, variables (using
the <var> element), or expressions (using the <expression> element).
Example of <policy_scope>
Source
<policy_state>
Purpose Specifies the initial state of the business policy (document lifecycle).
Diagram
Children
Parents
business_policy
Usage notes
This element specifies the initial state of the document lifecycle. It can contain any
combination of static text, variables (using the <var> element), or expressions (using the
<expression> element).
Note: The value of <policy_state> should match the name of a document lifecycle state
defined in the document lifecycle itself. If you use a variable to assign a dynamic value
from the XML document, you should make sure that the name matches one of the
existing states in the document lifecycle.
Example of <policy_state>
Source
<pub_id>
Purpose Specifies the public identifier, if a public identifier is used as part of the document
type declaration in the XML document.
Diagram
Children
#PCDATA
Parents
app_pattern
Usage notes
This element specifies the public identifier, if used in the document type declaration of
the XML document, and if the XML application manages the DTD. This value should
correspond to the DTD Public Id property of the XML application folder. This element
is optional and currently has no function; see the <app_pattern> element for more
information
Note:
• The name of the DTD file must also be entered as the value of the DTD Public Id
property of the XML application folder in the repository to ensure correct DTD
management.
• Do not use this element if your XML documents contain only system identifiers.
A public identifier has the following format:
//Documentum//DTD CellPhoneInlineEntity//EN
It contains four sections, separated by double forward slashes:
• A plus or minus sign to indicate whether or not the DTD is approved by a standards
organization
• the name of the owner
• the type of data described by the DTD
• An ISO 639 language identifier
The following example is based on the following document type declaration in an XML
document:
<!DOCTYPE book PUBLIC "//Arbortext//DTD DocBook XML V4.0//EN"
"axdocbook.dtd">
This public identifier is not approved by a standards body, is owned by Arbortext,
describes data validated by a DTD based on DocBook XML 4.0, and is written in English.
The final set of quotation marks contains the system identifier, which should be entered
as the value of <sys_id>.
Example of <pub_id>
<pub_id>//Arbortext//DTD DocBook XML V4.0//EN</pub_id>
Source
<schema>
Purpose Specifies the name of the schema file, if managed by the XML application.
Diagram
Children
#PCDATA
Parents
app_pattern
Usage notes
If the XML application will manage a schema, the value of <schema> is the schema file
name. Do not include path information with the schema name. If you have a modular
schema, enter only the name of the root.
The XML application will apply only to XML documents whose root element contains the
schema name in the attribute xsi:SchemaLocation or xsi:noNamespaceSchemaLocation.
Note:
• Schemas are currently not managed by the XML application in the same way that
DTDs are. The schema on the local file system that is specified in the URI address in
the XML document will always be used by the parser during inbound and outbound
repository operations. However, it is good practice to store the schema in the XML
application folder and assign the schema name to the Schema property of the XML
application folder.
• To use a schema to validate documents when they are imported or checked in, the
<validation/> element must be present. For more information, see <validation>.
The example below shows the use of the <schema> element when an XML document
contains the following document type declaration:
<book xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xsi:noNamespaceSchemaLocation=
"C:\xml_schema\test_schema.xsd">
...
</book>
Example of <schema>
<schema>test_schema.xsd</schema>
Source
<suppress_output_of_default_attributes>
Purpose Specifies that default attributes that are not specified in the XML instance should
not be written into the XML that is stored in the repository.
Diagram
Children
EMPTY
Parents
application
Usage notes
In DTDs (and probably schemas), you can define default attributes for elements. This
means that when a parser reads the element, it acknowledges attributes that may not
actually be present in the XML file. You may use default attributes to trigger XML
configuration rules or variables. The side effect of using these default attributes is that
the attributes are written into the content.
For example:
<root>blah</root>
By default, the element has an attribute called attr1. When the parser calls startElement(),
the attr1 attribute is visible, even though it is not present in the parsed content. When
the content is serialized, the parser writes out exactly what was fed into it and includes
the attribute that wasn’t originally present. In many cases, including the attributes in
the XML output is unacceptable.
You can optionally instruct DFC not to serialize the default attributes using the
suppress_output_of_default_attributes element.
Example of <suppress_output_of_default_attributes>
Source
<sys_id>
Purpose Specifies the name of a DTD file that is managed by the XML application.
Diagram
Children
#PCDATA
Parents
app_pattern
Usage notes
This element specifies the name of the DTD that appears in the document type
declaration of the XML document (if the XML application manages the DTD). This value
should correspond to the DTD System Id property of the XML application folder. This
element is optional and currently has no function; see the <app_pattern> element for
more information.
Note: If the XML document contains a public identifier, the system identifier is the DTD
name specified in the final set of quotation marks in the <!DOCTYPE ... PUBLIC ...>
declaration. (See the example for <pub_id>.)
Do not include path information with the DTD file name. If your DTD has external
parameter entities, enter only the name of the root DTD.
The example below shows the use of the <sys_id> element when an XML document
contains the following document type declaration:
<!DOCTYPE NewsML SYSTEM "NewsML.dtd">
If this value is specified as the value of the DTD System Id property on the XML
application folder, then when the user exports or checks out this file from the repository,
a path will be added to the file name to point to the location where the DTD file was
downloaded on the local system.
Example of <sys_id>
<sys_id>NewsML.dtd</sys_id>
Source
<tagname_of_element>
Purpose Gets the tag name of an element in the XML document to store to a variable.
Diagram
Children
this_element, element_selection_pattern
Parents
variable
Usage notes
This element gets the tag name of the element in the XML document that is specified
in its child element <element_selection_pattern>. This is the way that the name of an
element in the XML document can be extracted and used for a purpose such as assigning
a folder or path name or populating a repository property.
In the following example, ʺprocedureʺ will be stored to the variable tagName. If there is
no <procedure> element, ʺElement Unspecifiedʺ will be stored to the variable tagName.
Example of <tagname_of_element>
<variable>
<name>tagName</name>
<tagname_of_element>
<element_selection_pattern>
<element>procedure</element>
</element_selection_pattern>
</tagname_of_element>
<default>Element Unspecified</default>
</variable>
Source
<template>
Diagram
Children
Parents
dctmattr, dctmattr_repeating
Usage notes
The <template> element uses any combination of static text, variables (using the
<var> element), or expressions (using the <expression> element) to produce a value
for a repository property.
Note: The <template> element ignores white space and removes any nonprintable
characters (such as carriage returns) from the string.
Example of <template>
Source
<this_element>
Purpose Indicates that you want to use the element in the current context (the element that
triggered the mapping rule).
Diagram
Children
None
Parents
Usage notes
Example of <this_element>
Source
<two_way_dctmattr>
Purpose Allows XML element content or attribute values to move from the XML document
to single‑value repository properties during import or checkin, and from repository
to the XML document during export or checkout.
Diagram
Children
Parents
metadata
Usage notes
This element allows a dynamic interchange of attributes between the XML document
and the repository. It ensures that the values of repository properties and specified
elements or element attributes are synchronized every time the document moves into
or out of the repository.
Note:
• This element should only be used for repository properties defined as single‑value
attributes.
In the next example, the rule extracts the content of the <first_level> element and assigns
it to a repository property called first_level_repository_property. For example, suppose you
import the following document:
<root>
<firstlevel>
some text
<secondlevel>Secondlevel</secondlevel>
some more text/firstlevel>
</root>
The repository property called first_level_repository_property will be assigned the value
ʺsome text some more textʺ. Suppose you change the value of this property to ʺUpdated
textʺ in the repository. The next time the document is checked out, the XML document
will look as follows:
<root>
<firstlevel>
Updated text
<secondlevel>Secondlevel</secondlevel>
</firstlevel>
</root>
Note that the replacement text is placed before any child elements.
Source
<two_way_dctmattr_repeating>
Purpose Allows XML element content or attribute values to move from the XML document
to multivalue (repeating) repository properties during import or checkin, and from
repository to the XML document during export or checkout.
Diagram
Children
Parents
metadata
Usage notes
See <two_way_dctmattr> for usage notes. Usage is the same, except the
<two_way_dctmattr_repeating> element is used to populate multivalue (repeating)
repository properties.
The rule in the following example has the following characteristics:
• <element_selection_pattern> specifies that any <book> element in the XML document
will be chunked.
• A variable called bookAuthor is declared.
then the values of the repeating repository property would be the following:
authors[0]Smith
authors[1]Jones
.
• The value of authorName is assigned to the repository property called authors, and
the use of <two_way_dctmattr_repeating> means that when this chunk is exported
or checked out, each of the values of the repository property authors will replace the
content of each <author> element successively.
Note: This feature does not add or delete elements from the XML file to match the
number of values set for that repeating property in the repository. When there is a
mismatch, data can be lost or some values may not to be updated.
Example of <two_way_dctmattr_repeating>
<xml_content_rule>
<element_selection_pattern>
<element>book</element>
</element_selection_pattern>
<variables>
<variable>
<name>bookAuthor</name>
<content_of_element>
<element_selection_pattern>
<element>author</element>
</element_selection_pattern>
</content_of_element>
</variable>
</variables>
<metadata>
<two_way_dctmattr_repeating>
<name>authors</name>
<var name="bookAuthor"/>
</two_way_dctmattr>
</metadata>
<make_entity/>
</xml_content_rule>
Source
<validation>
Diagram
Children
None
Parents
application
Usage notes
If the <validation> element is present, the parser will validate the document against
a DTD or W3C schema that is stored in the XML application folder during import
and checkin operations. If this element is not present, the parser will check for well
formedness only.
Note:
• The <validation> element should contain no content.
• Even if the <validation> element is not present, the parser will look for a DTD during
inbound and outbound repository operations if it is mentioned in the <!DOCTYPE>
declaration in the XML document. If the DTD file name is stored in the DTD System
ID property of the XML application folder, then the DTD in the application folder
will be used. If the DTD System ID property is not specified, then the DTD must be
in the location in the local system that is specified by the <!DOCTYPE> declaration
in the XML document.
For DTD validation, if the value of the DTD System ID property of the XML application
folder is set to the DTD file name, then the DTD that is stored in the application folder is
used for validation. If the DTD System ID property is not specified, the parser will look
for the DTD in the location on the local file system that is specified by the <!DOCTYPE>
declaration in the XML document. (See the usage notes for the <sys_id> element.)
Example of <validation>
<validation/>
Source
<value>
Diagram
Children
#PCDATA
Parents
attribute_test
Usage notes
This element is used as a second child of <attribute_test> to specify the value of the
attribute to be tested.
Example of <value>
Source
<var>
Diagram
Children
None
Parents
Usage notes
The <var> element is always empty, but the name attribute is required and its value is a
variable name. The value of the variable will be substituted for the <var> element.
Note: The variable named in the <var> element must have been defined using the
<variable> element. For more information see <variables> and <variable>.
Most elements that allow <var> as a child specify that it can contain any combination
of static text, variables (using the <var> element), or expressions (using the
<expression> element). These elements all contain the %template‑format parameter
entity There are two element that allow only the <var> element as children and no static
text: <two_way_dctmattr> and <two_way_dctmattr_repeating>.
In addition to values supplied by the client, there is a set of default variables that are
always defined:
• DF_USER_NAME: the user name from the IDfSession that is being used by the
operation (e.g. ʺJoe Smithʺ).
Source
<variable>
Purpose Defines a variable and its value, such as attribute value and element content.
Diagram
Children
Parents
variables
Usage notes
Variables are locally scoped to the element on which the rule is based. For example, if
you declare a variable in a content rule for the root element of the XML document, then
the variable is available to all rules for the document. If you declare a variable for a
content rule for an element within the document, then the variable is available only
when processing content within that chunk.
Caution:
• If you use a variable in a rule that occurs outside of the chunk boundary, that
variable will be in scope only as long as you always edit that chunk in the
context of the element in which the variable was defined. See the example in
this section.
• If you check in a chunk that has an out‑of‑scope variable, the chunk will check
in but the repository properties that rely on the out‑of‑scope variable will not
be modified.
• You cannot import a chunk with an out‑of‑scope variable. This includes the
case when you are checking in a chunk that contains a new child element.
If that new child element is subject to a chunking rule it will go through an
import process, so if it has an out‑of‑scope variable, the process will fail.
Once a variable is defined with the <variable> element, the value of the variable can be
assigned to other elements by using the <var> element.
In the following example, the <xml_content_rule> exists only for the purpose of defining
a variable, not for chunking, as indicated by the attribute make_object=ʺfalseʺ. The rule
extracts the content of the element <model.name> and stores it in a variable named
modelName. This variable can be used in any other rule that applies to a descendant of
the <description> element in the XML document. Once the close tag for the <description>
element is parsed in the XML document, the variable is no longer available.
Example of <variable>
<xml_content_rule make_object="false">
<element_selection_pattern>
<element>description</element>
</element_selection_pattern>
<variables>
<variable>
<name>modelName</name>
<content_of_element>
<element_selection_pattern>
<element>model.name</element>
</element_selection_pattern>
</content_of_element>
<default>Model Unspecified</default>
</variable>
</variables>
</xml_content_rule>
The following example is more detailed and shows how a variable can be defined in a
rule for one element and used in a rule for another element that has a mutual ascendant.
Suppose you have the following XML document:
<book>
<bookinfo>
<author>...</author>
<author>...</author>
<author>...</author>
</bookinfo>
<chapter>
<title>...</title>
</chapter>
</book>
You want to chunk on the <chapter> elements and assign the primary author of the book
to the owner_name property for the object when it is created in the repository. Since the
<author> element is a descendant of the <book> element but not the <chapter> element,
the content rule for <book> must define a variable for primary author, which will then be
used in the rule for <chapter>. Since <chapter> is a descendant of <book>, it is within the
local scope of variables defined for the <book> element. This is demonstrated with the
two content rules in the following example. The rule can be broken down as follows:
• In the content rule for <book>, the primaryAuthor variable is declared and its value
defined as the first occurrence of the <author> element as a child of <bookinfo>. The
<bookinfo> element should be a child of the <book> element.
• In the content rule for <chapter>, the chapTitle variable is defined as the <title>
element, which should be a child of <chapter>.
• In the chunking portion of the rule, the primaryAuthor variable is used as the value
for <owner_name>, which then assigns this value to the owner_name repository
property.
• The name of the object to be created is assigned the static prefix ʺchap_ʺ plus the
chapTitle variable.
The caveat is that if you ever edited the chapter chunk in isolation, import would fail
because there would be no <book> element from which to obtain the variable. The
<chapter> chunk would always need to be edited as part of a document in which it was
nested under the <book> element.
<child_of>bookinfo</child_of>
</context_rule>
<occurrence>1</occurrence>
</element_selection_pattern>
</content_of_element>
</variable>
</variables>
</xml_content_rule>
<xml_content_rule>
<element_selection_pattern>
<element>chapter</element>
</element_selection_pattern>
<variables>
<variable>
<name>chapTitle</name>
<content_of_element>
<element_selection_pattern>
<element>title</element>
</element_selection_pattern>
</content_of_element>
</variable>
</variables>
<owner_name><var name="primaryAuthor"/></owner_name>
<object_name>chap_<var name="chapTitle"/></object_name>
</xml_content_rule>
If you want to collect the content of an element in a variable, including the content of any
child elements, use the following model:
<variable>
<name>bookTitle</name>
<content_of_element subelement_option="include_content">
<content_of_element subelement_option="include_content">
<element_selection_pattern>
<element>title</element>
</element_selection_pattern>
</content_of_element >
</variable>
Source
<variables>
Purpose Contains all of the variable definitions and values in a mapping rule.
Diagram
Children
variable
Parents
Usage notes
This is a container element that contains the list of variable definitions and values. These
values can be extracted from the XML document and used in other elements in the XML
application configuration file, for example in elements that assign values to repository
properties. Each variable is defined in a separate <variable> element. See <variable> for
usage notes on how to define variables.
Example of <variables>
For additional information and examples, see <variable>, <var>, <template>, and
<xml_content_rule>.
Source
<version_label>
Diagram
Children
#PCDATA
Parents
link_rule, xml_content_rule
Usage notes
This element is used to assign binding rules (early binding) for chunked objects using
an existing symbolic version label when the chunked or linked object is imported. This
symbolic version label must be defined within the <metadata> element or assigned by
the user on import.
The binding rule will apply to all chunked objects to which an <xml_content_rule>
applies, or all files to which a <link_rule> applies. To set a binding rule for an individual
component, or to change the binding rule when checking in a document, the author can
add or edit the dctm:version_label attribute (for an element to which <xml_content_rule>
applies) or the dctm:link_version_label attribute (for an element to which <link_rule>
applies) in the XML document itself.
Note:
• If a dctm:version_label or dctm:link_version_label attribute is added to a new XML
document, it will override the <version_label> element in <xml_content_rule> or
<link_rule> when the XML document is imported.
where symbolic_version_label is the value you assign as the symbolic version label. Within
the <dctmattr_repeating> element, <name> identifies the repository dm_sysobject
property r_version_label, and <value> assigns a value to it. Specifying the same value
in <version_label> then sets the binding rule by using this value as the version_label
attribute of the dmr_containment object.
For more information about early binding, see Documentum Content Server Fundamentals
Guide.
In the following example, <xml_content_rule> is constructed so that the version label
DRAFT is assigned as a symbolic version label of the <model> chunk when it is imported.
The <version_label> element then sets the binding rule to DRAFT.
Example of <version_label>
<xml_content_rule>
<element_selection_pattern>
<element>model</element>
</element_selection_pattern>
<metadata>
<dctmattr_repeating>
<name>r_version_label</name>
<template> DRAFT </template>
</dctmattr_repeating>
<metadata>
<version_label>DRAFT</version_label>
<make_entity/>
</xml_content_rule>
Source
<xml_content_rule>
Purpose Specifies how to store and create XML content as objects in Documentum.
Diagram
Children
Parents
map_rules
Usage notes
You must provide an <xml_content_rule> for any element that will be a root element in
your document. (This does not apply to external parsed entities for which you specify
an <entity_rule>.)
The element contains four main parts:
• <element_selection_pattern>
Specifies the element in the XML document that triggers the rule. You can also
specify that the element appear in a specific context or with a specific attribute value.
• Elements (such as <variables>, <location>, <owner_name>, and so on) that specify the
XML content to be extracted and used during processing, followed by how to create
the object and what properties to set.
• <version_label>
If present, specifies a binding rule for an existing version label.
• <make_entity/> or <link_template>
Controls how the repository manages the structural aspects of chunked objects.
Currently, only the <make_entity/> element is supported and is therefore required.
You can have more than one <xml_content_rule> element for the same XML document
element, as long as the content of <element_selection_pattern> is different. If a chunk
satisfies more than one <element_selection_pattern> element, the <xml_content_rule>
that appears first in the XML application configuration file will be used.
The <xml_content_rule> element also has these attributes:
• editable_virtual_doc
This attribute is no longer used. This attribute is set to ʺfalseʺ but does not affect the
XML application.
• allow_restructuring
This specifies whether users can restructure XML virtual documents from within
Virtual Document Manager (VDM) or through a Documentum Foundation Classes
(DFC) virtual document interface.
This attribute supersedes the editable_virtual_doc attribute, which is now obsolete.
When allow_restructuring is set to true, users can add, remove, reorder or reposition
descendants in virtual documents without downloading the documents to their
local machines. To support restructuring, the document is silently checked out, but
content is not downloaded to the clients local file system. The content is downloaded
from the repository to the application server machine until restructuring is complete.
For large XML documents or environments where there is high network latency,
modifying the virtual document structure through a content editor can be time
consuming.
Once a virtual document has been locked for structural change, its content can not
be modified. Similarly, if a user has checked out the content for an XML virtual
document, the user can not make structural changes.
Users can restructure only those objects that are created through an xml_content_rule.
As an example, let us say you have an XML application where you have an
xml_content_rule for <book>, <chapter> and <section>, and where you have specified
allow_restructuring=ʺtrueʺ for all three rules. Also, you have a link_rule for <image>,
which can occur at any level. Once the book is imported, a user can: restructure
<chapter> and <section> chunks within a parent virtual document using VDM; insert
other existing <chapter> and <section> objects, provided that the objects use the same
or a comparable XML applications; and delete <chapter> and <section> objects. If a
<chapter> object has a virtual document child that is not an XML chunk, users can
not restructure, move, add, or delete the linked objects.
OLE compound documents are not affected by the allow_restructuring attribute.
The structure of OLE compound documents can only be changed by checking out
a document’s content.
• export
This specifies that a chunked XML document stored as a virtual document in the
repository will be exported or checked out as a single XML document. The only
value allowed for this attribute is ʺinlineʺ, which is also the default.
• make_object
This specifies that the purpose of the rule is not to create an object but to perform
other operations, such as defining variables for later use. See the example in
<variable>. The default is ʺtrueʺ, so if this attribute is not present, an object will be
created.
The rule in the following example has the following characteristics:
Example of <xml_content_rule>
<xml_content_rule>
<element_selection_pattern>
<element>description</element>
</element_selection_pattern>
<variables>
<variable>
<name>Desctitle</name>
<content_of_element>
<element_selection_pattern>
<element>title</element>
</element_selection_pattern>
</content_of_element>
<default>Title Unspecified</default>
</variable>
</variables>
<location>
<path>Descriptions/<var name="Desctitle"/></path>
</location>
<object_name><var name="Desctitle"/></object_name>
<metadata>
<dctmattr>
<name>title</name>
<template><var name="Desctitle"/></template>
</dctmattr>
</metadata>
<make_entity/>
</xml_content_rule>
Source
When XML documents or individual chunks are checked out, Documentum adds these attributes to
each element for which they are declared in the DTD. The attributes have two purposes:
• XML editors with Documentum integrations use the attributes to make text read‑only and
indicate changes when text is edited.
• If any of these attributes appear in an XML document, Documentum uses them to process these
objects or assign repository properties to these objects on import and checkin.
The Documentum attributes will override any XML application configuration file settings for a
particular chunk (other than the root chunk). For example, if the XML document contains the
tag <ContentItem dctm:version_label=ʺApprovedʺ> and the XML application configuration file
contains <version_label>Draft</version_label> for the same element, the repository property for that
<ContentItem> chunk will have a binding rule set to the value ʺApprovedʺ.
Documentum attributes in the root chunk are ignored during checkin, for the following reasons.
• The object ID of the root chunk is already known, so dctm:obj_id is not necessary for the root.
• The root chunk will always be checked in during a checkin operation, regardless of the value of
dctm:obj_status.
• A virtual document root cannot take a binding rule because it has no dmr_containment, so the
dctm:version_label is ignored for the root chunk.
Table 12, page 229 provides more information about the role that the Documentum attributes play.
For more information about Documentum attributes, see Adding Documentum attributes to DTDs
and schemas, page 37.
The Documentum Developer site has a number of resources related to XML, along with case studies
and sample code that you can download. See the following locations:
• Sample code: http://developer.emc.com/developer/samplecode.htm
• Tips: http://developer.emc.com/developer/tippage.htm
• XML resource page: http://developer.emc.com/developer/roadmap/xml_resource.htm
This sample demonstrates how the content requirements led to the creation of the XML application
configuration file and how the separate components in the file work to configure the XML application.
This sample is based on a case study created for the Document Developer Web site. You can read
the case and download the sample DocApp at http://developer.emc.com/developer/xmlProject/
NewsML/NewsMLSeriesOverview.htm.
The NewsML DTD, XML application configuration file, and other parts of the XML application are
contained in Appendix E, Source Files for NewsML Sample.
The case study uses NewsML, an XML encoding standard for the news industry. A typical news
article might be structured in the following lines:
<NewsML>
<! Includes information about the news service and priority>
<NewsItem>
<! Includes identifiers, information relevant to
managing the item>
<NewsComponent>
<! Includes headline, byline, dateline, etc.>
<DataContent>
...
Paragraph of content here.
</DataContent>
<DataContent>
...
Paragraph of content here.
</DataContent>
<DataContent>
...
Paragraph of content here.
</DataContent>
</NewsComponent>
</NewsItem>
</NewsML>
• <NewsML>: A NewsML document, the root element, which must contain one or more
<NewsItem> elements.
• <NewsItem>: A managed set of information representing a point of view, at a given time, on
some event or events. It may contain a <NewsComponent> element, one or more <Update>
elements, or a <TopicSet> element.
• <NewsComponent>: A container for news objects, used to identify the role of news objects
in relation to one another, and to ascribe metadata to them. (The NewsComponent would
contain the headline of a standard news article.) It contains one or more of one of the following:
<NewsItem>, <NewsComponent>, or <ContentItem>.
• <ContentItem>: A news object that carries or identifies content intended for presentation to
humans. (Corresponds to chunks of content within the article.)
The business process requirements for the news industry are defined as follows:
• Content created once, repurposed for different needs
• Content stored once, reused as needed
• Simple contextual search for relevant content
• Controlled timeliness and relevance of content
• Structured authoring environment
• Multi‑format publishing and multichannel delivery
• Rapid delivery of appropriate content
• Personalization and dynamic assembly of content.
• Efficient management of document lifecycle and workflow of a content item
In this case study, a subset of these requirements are implemented as follows:
• The objective is to chunk at a level that all <NewsComponent>, <HeadLine>, <SubHeadline>,
<ByLine>, and <ContentItem> elements can be aggregated to display in a single page.
• To facilitate display, search, and transformations of content, custom object types will be created
in the repository, custom properties are defined for these chunks, and the values of these
properties will be extracted from the XML document by content rules in the XML application
configuration file.
• An XSL stylesheet will query the repository using XDQL and display a front page from content
chunks and an article page that includes mixed media types. (See Chapter 6, Transformations for
a detailed description of the XSL stylesheet for the NewsML case study.)
Table 13, page 236 shows the four elements that will be chunked, and the custom object types that will
be created for them in the repository.
Note: This name must match the name of the XML application configuration file and the
name of the XML application folder you will create in the repository.
Lines 110‑113 specifies the relative location (the NewsItems folder) for the chunk to be
created. Since this chunk will not be a parent chunk, the path is relative to the path of its
parent (namely the NewsML chunk for the root element of the XML document).
Lines 114‑116 specifies that the name of the object to be created for this chunk is the
value of the NewsItemId variable defined previously, which in turn is the content of the
<NewsItemId> element in the XML document.
Line 117 specifies that the type of object to be created is the newsml_item custom type.
Lines 120‑145 contain the part of the rule that determines what properties are assigned
to the object after it is created, as shown in Table 15, page 240. For each variable, either
<content_of_element> is used to specify that the value will come from the content of
the element specified in the XML document, or <attribute_value_of_element> is used
to specify that the value will come from an attribute value for a particular element in
the XML document.
Line 146: The <make_entity/> element functions in the same way as in the previous
chunking rule.
31 <xml_content_rule export="inline" editable_virtual_doc="false"
allow_restructuring="false">
32 <element_selection_pattern>
33 <element>NewsItem</element>
34 </element_selection_pattern>
35 <variables>
36 <variable>
37 <name>NewsItemId</name>
38 <content_of_element>
39 <element_selection_pattern>
40 <element>NewsItemId</element>
41 </element_selection_pattern>
42 </content_of_element>
43 <default>MiscNewsItems</default>
44 </variable>
45 <variable>
46 <name>PublicIdentifier</name>
47 <content_of_element>
48 <element_selection_pattern>
49 <element>PublicIdentifier</element>
50 </element_selection_pattern>
51 </content_of_element>
52 </variable>
53 <variable>
54 <name>DateId</name>
55 <content_of_element>
56 <element_selection_pattern>
57 <element>DateId</element>
58 </element_selection_pattern>
59 </content_of_element>
60 </variable>
61 <variable>
62 <name>ProviderId</name>
63 <content_of_element>
64 <element_selection_pattern>
65 <element>ProviderId</element>
66 </element_selection_pattern>
67 </content_of_element>
68 </variable>
69 <variable>
70 <name>Urgency</name>
71 <attribute_value_of_element>
72 <element_selection_pattern>
73 <element>Urgency</element>
74 </element_selection_pattern>
75 <attr_name>FormalName</attr_name>
76 </attribute_value_of_element>
77 <default>Unspecified Urgency</default>
78 </variable>
79 <variable>
80 <name>Status</name>
81 <attribute_value_of_element>
82 <element_selection_pattern>
83 <element>Status</element>
84 </element_selection_pattern>
85 <attr_name>FormalName</attr_name>
86 </attribute_value_of_element>
87 <default>Unspecified Status</default>
88 </variable>
89 <variable>
90 <name>NewsItemType</name>
91 <attribute_value_of_element>
92 <element_selection_pattern>
93 <element>NewsItemType</element>
94 </element_selection_pattern>
95 <attr_name>FormalName</attr_name>
96 </attribute_value_of_element>
97 <default>Unspecified Type</default>
98 </variable>
99 <variable>
100 <name>Duid</name>
101 <attribute_value_of_element>
102 <element_selection_pattern>
103 <element>NewsComponent</element>
104 </element_selection_pattern>
105 <attr_name>Duid</attr_name>
106 </attribute_value_of_element>
107 <default>UnknownDUID</default>
108 </variable>
109 </variables>
110 <location>
111 <! user should customize this path >
112 <path>NewsItems/</path>
113 </location>
114 <object_name>
115 <var name="NewsItemId"/>
116 </object_name>
117 <object_type>newsml_item</object_type>
118 <! ############### SOME ATTRIBUTES ON THE
119 newsml_item Object ################# >
120 <metadata>
121 <dctmattr>
122 <name>publicidentifier</name>
123 <template><var name="PublicIdentifier"/></template>
124 </dctmattr>
125 <dctmattr>
126 <name>urgency</name>
127 <template><var name="Urgency"/></template>
128 </dctmattr>
129 <dctmattr>
130 <name>status</name>
131 <template><var name="Status"/></template>
132 </dctmattr>
133 <dctmattr>
134 <name>newsitem_type</name>
135 <template><var name="NewsItemType"/></template>
136 </dctmattr>
137 <dctmattr>
138 <name>provider_id</name>
139 <template><var name="ProviderId"/></template>
140 </dctmattr>
141 <dctmattr>
142 <name>date_id</name>
143 <template><var name="DateId"/></template>
144 </dctmattr>
145 </metadata>
146 <make_entity/>
147 </xml_content_rule>
Lines 322‑325 specify the relative location for the chunk to be created:
../NewsComponents/
This path is relative to the path of the parent chunk. Since the <NewsComponent>
element is iterative (it can be nested under <NewsItem> as well as under
<NewsComponent>), this NewsComponent folder will always be stored in a folder that
is a sibling of the parent chunk.
Lines 326‑328 specify that the name of the object to be created for this chunk is the value
of the Duid variable.
Line 329 specifies that the newsml_component custom object type will be created.
Lines 332‑398 contain the part of the rule that determines what properties are
assigned to the object after it is created, as shown in Table 17, page 245. Starting
with line 382, the repository properties are multivalue (repeating) and so require the
<dctmattr_repeating> element.
Line 399: The <make_entity> element functions as for the other chunking rules.
151 <xml_content_rule>
152 <element_selection_pattern>
153 <element>NewsComponent</element>
154 </element_selection_pattern>
155 <variables>
156 <variable>
157 <name>Duid</name>
158 <attribute_value_of_element>
159 <this_element/>
160 <attr_name>Duid</attr_name>
161 </attribute_value_of_element>
162 <default>Untitled NewsComponent</default>
163 </variable>
164 <variable>
165 <name>Confidence</name>
166 <attribute_value_of_element>
167 <element_selection_pattern>
168 <element>DescriptiveMetadata</element>
169 </element_selection_pattern>
170 <attr_name>Confidence</attr_name>
171 </attribute_value_of_element>
172 </variable>
173 <variable>
174 <name>Genre</name>
175 <attribute_value_of_element>
176 <element_selection_pattern>
177 <element>Genre</element>
178 </element_selection_pattern>
179 <attr_name>FormalName</attr_name>
180 </attribute_value_of_element>
181 <default>MiscellaneousGenre</default>
182 </variable>
183 <variable>
184 <name>ByLine</name>
185 <content_of_element>
186 <element_selection_pattern>
187 <element>ByLine</element>
188 </element_selection_pattern>
189 </content_of_element>
190 <default>Unknown ByLine</default>
191 </variable>
192 <variable>
193 <name>HeadLine</name>
194 <content_of_element>
195 <element_selection_pattern>
196 <element>HeadLine</element>
197 </element_selection_pattern>
198 </content_of_element>
199 </variable>
200 <variable>
201 <name>SubHeadLine</name>
202 <content_of_element>
203 <element_selection_pattern>
204 <element>SubHeadLine</element>
205 </element_selection_pattern>
206 </content_of_element>
207 </variable>
208 <variable>
209 <name>DateLine</name>
210 <content_of_element>
211 <element_selection_pattern>
212 <element>DateLine</element>
213 </element_selection_pattern>
214 </content_of_element>
215 <default>Date Line Not Given</default>
216 </variable>
217 <variable>
218 <name>CreditLine</name>
219 <content_of_element>
220 <element_selection_pattern>
221 <element>CreditLine</element>
222 </element_selection_pattern>
223 </content_of_element>
224 <default>Credits Unknown</default>
225 </variable>
226 <variable>
227 <name>SlugLine</name>
228 <content_of_element>
229 <element_selection_pattern>
230 <element>SlugLine</element>
231 </element_selection_pattern>
232 </content_of_element>
233 <default>Slugger</default>
234 </variable>
235 <variable>
236 <name>Role</name>
237 <attribute_value_of_element>
238 <element_selection_pattern>
239 <element>Role</element>
240 </element_selection_pattern>
241 <attr_name>FormalName</attr_name>
242 </attribute_value_of_element>
243 <default>No Role Specified</default>
244 </variable>
245 <variable>
246 <name>BasisForChoice</name>
247 <content_of_element>
248 <element_selection_pattern>
249 <element>BasisForChoice</element>
250 </element_selection_pattern>
251 </content_of_element>
252 <default>Basis Not Specified</default>
253 </variable>
254 <variable>
255 <name>Provider</name>
256 <content_of_element>
257 <element_selection_pattern>
258 <element>Provider</element>
259 </element_selection_pattern>
260 </content_of_element>
261 <default>Provider Not Specified</default>
262 </variable>
263 <variable>
264 <name>Creator</name>
265 <attribute_value_of_element>
266 <element_selection_pattern>
267 <element>Party</element>
268 </element_selection_pattern>
269 <attr_name>FormalName</attr_name>
270 </attribute_value_of_element>
271 <default>Creator Not Specified</default>
272 </variable>
273 <variable>
274 <name>Language</name>
275 <attribute_value_of_element>
276 <element_selection_pattern>
277 <element>Language</element>
278 </element_selection_pattern>
279 <attr_name>FormalName</attr_name>
280 </attribute_value_of_element>
281 <default>Language Unspecified</default>
282 </variable>
283 <variable>
284 <name>Topic</name>
285 <attribute_value_of_element>
286 <element_selection_pattern>
287 <element>TopicOccurrence</element>
288 </element_selection_pattern>
289 <attr_name>Topic</attr_name>
290 </attribute_value_of_element>
291 <default>Topic Unspecified</default>
292 </variable>
293 <variable>
294 <name>OfInterestTo</name>
295 <attribute_value_of_element>
296 <element_selection_pattern>
297 <element>OfInterestTo</element>
298 </element_selection_pattern>
299 <attr_name>FormalName</attr_name>
300 </attribute_value_of_element>
301 </variable>
302 <variable>
303 <name>Source</name>
304 <attribute_value_of_element>
305 <element_selection_pattern>
306 <element>Source</element>
307 </element_selection_pattern>
308 <attr_name>FormalName</attr_name>
309 </attribute_value_of_element>
310 </variable>
311 <variable>
312 <name>EquivList</name>
313 <! yes/no value only >
314 <attribute_value_of_element>
315 <element_selection_pattern>
316 <element>NewsComponent</element>
317 </element_selection_pattern>
318 <attr_name>EquivList</attr_name>
319 </attribute_value_of_element>
320 </variable>
321 </variables>
322 <location>
323 <! user should customize this path >
324 <path>../NewsComponents/</path>
325 </location>
326 <object_name>
327 <var name="Duid"/>
328 </object_name>
329 <object_type>newsml_component</object_type>
330 <! NewsComponent element, newsml_component objecttype,
331 METADATA settings ******** >
332 <metadata>
333 <dctmattr>
334 <name>byline</name>
335 <template><var name="ByLine"/></template>
336 </dctmattr>
337 <dctmattr>
338 <name>creditline</name>
339 <template><var name="CreditLine"/></template>
340 </dctmattr>
341 <dctmattr>
342 <name>dateline</name>
343 <template><var name="DateLine"/></template>
344 </dctmattr>
345 <dctmattr>
346 <name>headline</name>
347 <template><var name="HeadLine"/></template>
348 </dctmattr>
349 <dctmattr>
350 <name>subheadline</name>
351 <template><var name="SubHeadLine"/></template>
352 </dctmattr>
353 <dctmattr>
354 <name>slugline</name>
355 <template><var name="SlugLine"/></template>
356 </dctmattr>
357 <dctmattr>
358 <name>role</name>
359 <template><var name="Role"/></template>
360 </dctmattr>
361 <dctmattr>
362 <name>basis_for_choice</name>
363 <template><var name="BasisForChoice"/></template>
364 </dctmattr>
365 <dctmattr>
366 <name>provider</name>
367 <template><var name="Provider"/></template>
368 </dctmattr>
369 <dctmattr>
370 <name>creator</name>
371 <template><var name="Creator"/></template>
372 </dctmattr>
373 <dctmattr>
374 <name>genre</name>
375 <template><var name="Genre"/></template>
376 </dctmattr>
377 <dctmattr>
378 <name>equivalents_list</name>
379 <template><var name="EquivList"/></template>
380 </dctmattr>
381 <! some attributes repeating/multivalued >
382 <dctmattr_repeating>
383 <name>topics</name>
384 <template><var name="Topic"/></template>
385 </dctmattr_repeating>
386 <dctmattr_repeating>
387 <name>languages</name>
388 <template><var name="Language"/></template>
389 </dctmattr_repeating>
390 <dctmattr_repeating>
391 <name>source</name>
392 <template><var name="Source"/></template>
393 </dctmattr_repeating>
394 <dctmattr_repeating>
395 <name>of_interest_to</name>
396 <template><var name="OfInterestTo"/></template>
397 </dctmattr_repeating>
398 </metadata>
399 <make_entity/>
400 </xml_content_rule>
443 <name>mediatype</name>
444 <template><var name="MediaType"/></template>
445 </dctmattr>
446 </metadata>
447 <make_entity/>
448 </xml_content_rule>
Link rule
The <link_rule> element specifies how Documentum recognizes and manages external
unparsed files and NDATA entities for the XML application.
The <link_rule> element tells the repository what to do with files such as graphics that
are linked to the XML document. You can accomplish the same repository actions that
<xml_content_rule> does. You can also specify whether the linked file should be part
of the virtual XML document or a regular linked file in the repository, and whether
this is a permanent link.
In the NewsML DTD, several elements, such as <ContentItem>, can contain an attribute
called Href instead of data content. This attribute contains a pointer to another element
containing the content, either in the same document or elsewhere. This Href attribute
provides a mechanism to link from one element to another for content.
The NewsML XML application configuration file contains a link rule, which will import
into the repository any linked file that is specified in an Href attribute of <ContentItem>.
This particular rule also specifies that the repository objects for these linked files are
displayed in the XML virtual document as children of the <ContentItem> chunk that
contains the link.
For example, one of the XML documents provided with the NewsML sample download
contains the following line:
<ContentItem Href="../examples/civilrt.xml">
The link target rule described here will grab the file named civilrt.xml in the ../examples/
directory on the local system and import it into the repository as a child of this particular
ContentItem chunk.
Line 452: peer_or_child=ʺchildʺ specifies that the document will be displayed in the
repository as a child of the component that contains it. Since this is the default value,
explicitly assigning a value to this attribute is optional here. The ndata=ʺfalseʺ attribute
specifies that this link points to an unparsed external file and is not a reference to an
NDATA entity.
Lines 453‑455 specify that the <ContentItem> element triggers this link rule.
Lines 456‑458 specify that the link target is the value of the Href attribute.
Lines 459‑461 specify a relative path for this chunked object in the repository.
Line 462 specifies that the object type created for this chunk will be newsml_content.
452 <link_rule peer_or_child="child" ndata="false">
453 <element_selection_pattern>
454 <element>ContentItem</element>
455 </element_selection_pattern>
456 <link_target>
457 <attr_name>Href</attr_name>
458 </link_target>
459 <location>
460 <path>../ContentItems/References/</path>
461 </location>
462 <object_type>newsml_content</object_type>
463 </link_rule>
464 </map_rules>
465 </application>
These files can be downloaded in a zip file that extracts to a DocApp at the Documentum Developer
site , at http://developer.emc.com/developer/xmlproject/newsml/newsmlseriesoverview.htm.
However, see the notes at the beginning of each section on how the samples shown here have been
updated for the current release.
======================================
DO NOT REMOVE THESE LICENCE CONDITIONS
======================================
LICENCE OF THE IPTC NewsML TRADEMARK TO NONMEMBERS OF THE IPTC
2. The Licensee recognises that the Licensor has the right to grant
licenses of the intellectual property protected by the trademark and
has agreed to grant such a licence to the Licensee in the terms set
out in this contract.
at any future time register to use in its own name as proprietor any
of the intellectual property protected by the trademark.
4. The Licensee shall not claim any right title or interest in the
intellectual property or any part of it save as is granted by this
contract.
The Licensee shall from time to time provide the IPTC with the full
address of its place of business and that place will be deemed the
Licensee's address.
The IPTC reserves the right to terminate the use of the trademark by
the Licensee at any time without notice or without the need to give
]reasons to the Licensee for such termination.
Importance
==========
An indication of the importance the party assigning a piece of
metadata attaches to it. The value of the Importance attribute is a
formal name for a level of importance. Its meaning and permitted
values are determined by a controlled vocabulary.
Confidence
==========
An indication of the confidence with which a piece of metadata has
been assigned. The value of the Confidence attribute is a formal name
for a degree of confidence. Its meaning and permitted values are
determined by a controlled vocabulary.
HowPresent
==========
An indication of the way in which a piece of metadata applies. The
value of the HowPresent attribute is a formal name for the way the
metadata applies. Its meaning and permitted values are determined by
a controlled vocabulary.
DateAndTime
===========
The date and (optionally) time at which a piece of metadata was
assigned.
This is the Basic Format defined by ISO 8601. CCYY is a 4digit year
number.
MM is a 2digit month number. DD is a 2digit day number. T is the
letter 'T'.
{+or} is the '+' character or the '' character, and the following
HHMM are hours and minutes of offset from Universal Coordinated Time
(UTC) as defined by ISO 8601. If the time is being expressed in UTC,
then the timezone offset may be '+0000' or '0000'. If the time is
behind UTC, the timezone separator is ''. If the time is ahead of
UTC the timezone separator is '+'.
>
<!ENTITY % assignment " AssignedBy CDATA #IMPLIED
Importance CDATA #IMPLIED
Confidence CDATA #IMPLIED
HowPresent CDATA #IMPLIED
DateAndTime CDATA #IMPLIED">
<!
================================= formalname ==================
FormalName
==========
A string of characters whose meaning is determined by a controlled
vocabulary.
Vocabulary
==========
The Vocabulary attribute, if present, provides a pointer to a
TopicSet which is the controlled vocabulary that can be used to
resolve the meaning of the FormalName. The value of the Vocabulary
attribute is an http URL or a NewsML URN, or the # character followed
by the value of the Duid attribute of the a TopicSet in the current
document.
Scheme
======
The Scheme attribute, if present, serves to distinguish which of
possibly multiple naming schemes in the controlled vocabulary is the
one that governs this FormalName. For a match to be obtained within
the controlled vocabulary, the rule is that the FormalName and the
Scheme must both match. If there is no Scheme attribute on the
current element, the match will be to an item in the vocabulary that
has the current formal name and no scheme. If there is a Scheme
attribute on the current element, then both the formal name and the
scheme in the controlled vocabulary must match.
================================================================
>
<!ENTITY % formalname " FormalName CDATA #REQUIRED
Vocabulary CDATA #IMPLIED
Scheme CDATA #IMPLIED">
<!
=================================== localid =====================
Duid
====
Duid is a "Documentunique Identifier". It must satisfy the rules
for XML ID attributes: it must only contain name characters, and it
must start with a namestart character (not a digit). Its value must
be unique within any NewsML document.
Euid
====
Euid is an "Elementunique Identifier". Its value must be unique
among elements of the same elementtype and having the same parent
element.
>
<!ENTITY % party " (Comment*
, Party+ )">
<!
=============== Documentum attributes =================
Documentum attributes to be added to each element that
has an <xml_content_rule> or <xml_link_rule> in the XML
application configuration file
=======================================================
>
<!ENTITY % dctmatts
"xmlns:dctm CDATA #FIXED 'http://www.documentum.com'
dctm:obj_id CDATA #IMPLIED
dctm:obj_status CDATA #IMPLIED
dctm:version_label CDATA #IMPLIED"
>
<!ENTITY % dctmlinkatts
"xmlns:dctm CDATA #FIXED 'http://www.documentum.com'
dctm:link_obj_id CDATA #IMPLIED
dctm:link_obj_status CDATA #IMPLIED
dctm:link_version_label CDATA #IMPLIED">
<!
=========================
ELEMENT TYPE DECLARATIONS
=========================
>
<!
============================ AdministrativeMetadata ===============
Information about the provenance of a NewsComponent.
====================================================================
>
<!ELEMENT AdministrativeMetadata (Catalog?, FileName?,
SystemIdentifier?, Provider?, Creator?, Source*, Contributor*,
Property*)>
<!ATTLIST AdministrativeMetadata
%localid;
>
<!
>
<!ELEMENT AssociatedWith (Comment*)>
<!ATTLIST AssociatedWith
%localid;
NewsItem CDATA #IMPLIED
>
<!
================================ BasisForChoice ====================
The content of this element is an XPath statement or elementtype
name identifying information within each NewsComponent or ContentItem
that can be used as a basis for choice between equivalent
NewsComponents or ContentItems.
If the XPath pattern begins with a . character, this represents the
'root' of the XPath and corresponds to the NewsComponent or ContentItem
itself. By applying the XPath pattern to each NewsComponent or
ContentItem in turn within the set of equivalents, the system can
extrac the data on the basis of which a choice between the items can
be made. If multiple matches to the XPath pattern are present within
the subtree that begins at the 'root', only the first match found in
document order is significant. The optional Rank attribute allows
providers to place a numerical order on the importance they think
should be attached to the different bases for choice. Smaller numbers
represent higher importance.
====================================================================
>
<!ELEMENT BasisForChoice (#PCDATA)>
<!ATTLIST BasisForChoice
%localid;
Rank CDATA #IMPLIED
>
<!
====================================================================
>
<!ELEMENT ByLine (#PCDATA | Origin)*>
<!ATTLIST ByLine
%localid;
xml:lang CDATA #IMPLIED
>
<!
=================================== Catalog ========================
A container for Resource and TopicUse elements. Resource elements map
URNs to URLs and indicate default vocabularies which apply to the
formal names of certain elements within the subtree that begins with
the immediate parent of the Catalog element. TopicUse elements
indicate where in the NewsML document certain Topics are used. The
optional Href attribute provides a pointer to a Catalog element
elsewhere in this or another document. Its value consists of a #
character followed by the value of the Duid attribute of the
referenced Catalog element and preceded, if the referenced Catalog
is not in the current document, by an http URL or a NewsML URN
identifying the document or NewsItem in which the Catalog appears.
If the Href attribute is present on a Catalog element, then that
element should be empty. If it contains subelements, the NewsML
system may signal an error.
====================================================================
>
<!ELEMENT Catalog (Resource*, TopicUse*)>
<!ATTLIST Catalog
%localid;
Href CDATA #IMPLIED
>
<!
=============================== Characteristics ====================
Information about the physical characteristics of a ContentItem.
====================================================================
>
<!ELEMENT Characteristics (SizeInBytes?, Property*)>
<!ATTLIST Characteristics
%localid;
>
<!
=================================== Comment ========================
A naturallanguage description of, or statement about, the current
element. The optional TranslationOf attribute is a pointer to another
Comment element, of which this one is a direct translation.
====================================================================
>
<!ELEMENT Comment (#PCDATA)>
<!ATTLIST Comment
%localid;
xml:lang CDATA #IMPLIED
TranslationOf IDREF #IMPLIED
>
<!
================================= ContentItem ======================
A news object that carries or identifies content intended for
presentation to humans.
====================================================================
>
<!ELEMENT ContentItem (Comment*, Catalog?, MediaType?, Format?,
MimeType?, Notation?, Characteristics?, %data;)>
<!ATTLIST ContentItem
%localid;
%dctmatts;
%dctmlinkatts;
Href CDATA #IMPLIED
>
<!
================================= Contributor ======================
An individual and/or company or organisation that modified or
enhanced a news object after its creation.
====================================================================
>
<!ELEMENT Contributor (%party;)>
<!ATTLIST Contributor
%localid;
>
<!
================================== Copyright =======================
The copyright that pertains to a news object.
====================================================================
>
<!ELEMENT Copyright (Comment*, CopyrightHolder, CopyrightDate)>
<!ATTLIST Copyright
%localid;
%assignment;
>
<!
================================ CopyrightDate =====================
A naturallanguage statement of the copyright date.
====================================================================
>
<!ELEMENT CopyrightDate (#PCDATA | Origin)*>
<!ATTLIST CopyrightDate
%localid;
xml:lang CDATA #IMPLIED
>
<!
=============================== CopyrightHolder ====================
A naturallanguage statement indicating who owns the copyright.
====================================================================
>
<!ELEMENT CopyrightHolder (#PCDATA | Origin)*>
<!ATTLIST CopyrightHolder
%localid;
xml:lang CDATA #IMPLIED
>
<!
================================ CopyrightLine =====================
A naturallanguage statement of the copyright information.
====================================================================
>
<!ELEMENT CopyrightLine (#PCDATA | Origin)*>
<!ATTLIST CopyrightLine
%localid;
xml:lang CDATA #IMPLIED
>
<!
=================================== Creator ========================
An individual and/or company or organisation that created a news
object.
====================================================================
>
<!ELEMENT Creator (%party;)>
<!ATTLIST Creator
%localid;
>
<!
================================== CreditLine ======================
A naturallanguage statement of credit information.
====================================================================
>
<!ELEMENT CreditLine (#PCDATA | Origin)*>
<!ATTLIST CreditLine
%localid;
xml:lang CDATA #IMPLIED
>
<!
================================= DataContent ======================
The data that carries the content of a ContentItem.
====================================================================
>
<!ELEMENT DataContent ANY>
<!ATTLIST DataContent
%localid;
>
<!
================================= DateAndTime ======================
A formal representation of a date and, optionally, time, expressed in
ISO 8601 Basic Format, as described in the comment to the DateAndTime
attribute within the assignment ENTITY declaration above.
====================================================================
>
<!ELEMENT DateAndTime (#PCDATA)>
<!ATTLIST DateAndTime
%localid;
>
<!
==================================== DateId ========================
A date identifier of a NewsItem in short ISO 8601 Basic Format
(CCYYMMDD), as described in the comment to the DateAndTime attribute
within the assignment ENTITY declaration above. The DateId is part of
the formal identification of the NewsItem, and must remain the same
through successive revisions of the same NewsItem.
====================================================================
>
<!ELEMENT DateId (#PCDATA)>
<!
================================== DateLabel =======================
A string representation of a date or date and time, used by human
users to help identify a NewsItem.
====================================================================
>
<!ELEMENT DateLabel (#PCDATA)>
<!ATTLIST DateLabel
%localid;
>
<!
=================================== DateLine =======================
A naturallanguage statement of the date and/or place of creation.
====================================================================
>
<!ELEMENT DateLine (#PCDATA | Origin)*>
<!ATTLIST DateLine
%localid;
xml:lang CDATA #IMPLIED
>
<!
============================ DefaultVocabularyFor ==================
An indication that the parent Resource provides the default
vocabulary that determines the meanings and permitted values of the
data occurring in a particular part of a NewsML document subtree.
The Context attribute is an XPath pattern identifying the data to
which the default vocabulary applies. If the XPath pattern is one
that matches elements, then it is the value of the FormalName
attribute of that element that is designated. If the XPath pattern
is one that matches attributes, then it is the value of that
attribute itself that is designated. The optional Scheme attribute
identifies the relevant naming scheme if the Resource contains more
than one naming scheme. If the Resource is a NewsML TopicSet, then
the meaning of the data identified by the Context is provided by the
Topic whose FormalName subelement matches that data. If the Resource
is not a NewsML TopicSet, then the way in which it is interpreted in
order to provide a meaning for the data is not defined by NewsML but
by the authority that governs whatever format the Resource uses.
Example:
<NewsComponent>
<Catalog>
<Resource Duid="resource1">
<Urn>urn:newsml:iptc.org:20001006:Confidence:1</Urn>
<Url>www.iptc.org/NewsML/topicsets/iptcconfidence.xml</Url>
<DefaultVocabularyFor Context="@Confidence"/>
</Resource>
<Resource Duid="resource2">
<Urn>urn:newsml:iptc.org:20001006:Confidence:1</Urn>
<Url>www.iptc.org/NewsML/topicsets/iptcconfidence.xml</Url>
<DefaultVocabularyFor Context="@Confidence"/>
</Resource>
<Resource Duid="resource3">
<Urn>urn:newsml:iptc.org:20001006:HowPresent:1</Urn>
<Url>www.iptc.org/NewsML/topicsets/iptchowpresent.xml</Url>
<DefaultVocabularyFor Context="@HowPresent"/>
</Resource>
</Catalog>
<TopicSet FormalName="Person">
<Topic Duid="topic1">
<TopicType FormalName="Person">
====================================================================
>
<!ELEMENT DefaultVocabularyFor EMPTY>
<!ATTLIST DefaultVocabularyFor
%localid;
Context CDATA #REQUIRED
Scheme CDATA #IMPLIED
>
<!
==================================== Delete ========================
An instruction to delete an element within a NewsItem. The NewsItem
is the previous revision of the current one, and the element to be
deleted is the one whose Duid value is equal to the value of the
Delete element's DuidRef attribute.
====================================================================
>
<!ELEMENT Delete EMPTY>
<!ATTLIST Delete
%localid;
DuidRef CDATA #REQUIRED
>
<!
================================= DerivedFrom ======================
A reference to an NewsItem from which this one is derived. The
NewsItem attribute identifies the relevant NewsItem. Its value can
be an http URL or a NewsML URN as described in the comment to
PublicIdentifier.
====================================================================
>
<!ELEMENT DerivedFrom (Comment*)>
<!ATTLIST DerivedFrom
%localid;
NewsItem CDATA #IMPLIED
>
<!
================================= Description ======================
A description that identifies a Topic, thereby indicating the meaning
of a formal name associated with that Topic. The xml:lang attribute
indicates what language the description is in. The optional Variant
attribute allows multiple descriptions to be given in the same
language, and meaningfully distinguished from one another.
====================================================================
>
<!ATTLIST FirstCreated
%localid;
>
<!
================================= FormalName =======================
A string of characters whose meaning is determined by a naming scheme
within a controlled vocabulary. The controlled vocabulary may (but is
not required to) take the form of a NewsML TopicSet. The optional
Scheme attribute determines which naming scheme applies, when several
exist within the same controlled vocabulary.
====================================================================
>
<!ELEMENT FormalName (#PCDATA)>
<!ATTLIST FormalName
%localid;
Scheme CDATA #IMPLIED
>
<!
==================================== Format ========================
An indication of the format of a ContentItem. The value of the
FormalName attribute is a formal name for the Format. Its meaning and
permitted values are determined by a controlled vocabulary as
described in the comment to the formalname ENTITY declaration above.
====================================================================
>
<!ELEMENT Format EMPTY>
<!ATTLIST Format
%localid;
%formalname;
>
<!
================================= FutureStatus =====================
An indication of the status a NewsItem will have at a specified
future date. The value of the FormalName attribute is a formal name
for the FutureStatus. Its meaning is determined by a controlled
vocabulary as described in the comment to the formalname ENTITY
declaration above.
====================================================================
>
<!ELEMENT FutureStatus EMPTY>
<!ATTLIST FutureStatus
%localid;
%formalname;
>
<!
==================================== Genre =========================
An indication of the Genre of a NewsComponent. The value of the
FormalName attribute is a formal name for the Genre. Its meaning and
permitted values are determined by a controlled vocabulary as
described in the comment to the formalname ENTITY declaration above.
====================================================================
>
<!ELEMENT Genre EMPTY>
<!ATTLIST Genre
%localid;
%formalname;
%assignment;
>
<!
================================== Geography =======================
A naturallanguage statement of the geographical area or areas to
which specified usage rights apply.
====================================================================
>
<!ELEMENT Geography (#PCDATA | Origin)*>
<!ATTLIST Geography
%localid;
xml:lang CDATA #IMPLIED
%assignment;
>
<!
=================================== HeadLine =======================
A displayable headline.
====================================================================
>
<!ELEMENT HeadLine (#PCDATA | Origin)*>
<!ATTLIST HeadLine
%localid;
xml:lang CDATA #IMPLIED
>
<!
================================ Identification ====================
Identification information for the NewsItem.
====================================================================
>
<!ELEMENT Identification (NewsIdentifier, NameLabel?, DateLabel?,
Label*)>
<!ATTLIST Identification
%localid;
>
<!
================================= InsertAfter ======================
An instruction to insert content after a designated element within a
NewsItem. The content to be inserted is the content of the InsertAfter
element. The NewsItem into which it is to be inserted is the previous
revision of the current one, and the element after which it is to be
inserted is the one whose Duid value is equal to the value of the
InsertAfter element's DuidRef attribute.
====================================================================
>
<!ELEMENT InsertAfter ANY>
<!ATTLIST InsertAfter
%localid;
DuidRef CDATA #REQUIRED
>
<!
================================= InsertBefore =====================
An instruction to insert content before a designated element within a
NewsItem. The content to be inserted is the content of the
InsertBefore element. The NewsItem into which it is to be inserted is
the previous revision of the current one, and the element before
which it is to be inserted is the one whose Duid value is equal to
the value of the InsertBefore element's DuidRef attribute.
====================================================================
>
<!ELEMENT InsertBefore ANY>
<!ATTLIST InsertBefore
%localid;
DuidRef CDATA #REQUIRED
>
<!
================================= Instruction ======================
An instruction from a news provider to the recipient of a NewsItem. A
special case of Instruction is an indication of the effect the current
revision of a NewsItem has on the status of any previous revisions of
the NewsItem that may still be on the recipient's system. In this
case, it will contain one or more RevisionStatus elements. Otherwise,
the value of the FormalName attribute is a formal name for the
Instruction, and its meaning is determined by a controlled vocabulary
as described in the comment to the formalname ENTITY declaration above.
====================================================================
>
<!ELEMENT Instruction (RevisionStatus*)>
<!ATTLIST Instruction
%localid;
%formalname;
>
<!
================================= KeywordLine ======================
A displayable set of keywords relevant to a news object. This can be
used by a NewsML system to assist manual or automated searches.
====================================================================
>
<!ELEMENT KeywordLine (#PCDATA | Origin)*>
<!ATTLIST KeywordLine
%localid;
xml:lang CDATA #IMPLIED
>
<!
==================================== Label =========================
A humanreadable label for a NewsItem.
====================================================================
>
<!ELEMENT Label (LabelType, LabelText)>
<!ATTLIST Label
%localid;
>
<!
=================================== LabelText ======================
The text that constitutes a Label of a given LabelType.
====================================================================
>
<!ELEMENT LabelText (#PCDATA)>
<!ATTLIST LabelText
%localid;
>
<!
================================= LabelType ========================
A userdefined type of label. The value of the FormalName attribute
is a formal name for the LabelType. Its meaning and permitted values
are determined by a controlled vocabulary as described in the comment
<!
=============================== MetadataType =======================
An indication of the type of metadata that is represented by the
Property elements within this Metadata element. The value of the
FormalName attribute is a formal name for the MetadataType. Its
meaning and permitted values are determined by a controlled
vocabulary as described in the comment to the formalname ENTITY
declaration above.
====================================================================
>
<!ELEMENT MetadataType EMPTY>
<!ATTLIST MetadataType
%localid;
%formalname;
>
<!
=================================== MimeType =======================
An indication of the MIMEtype of a ContentItem. The value of the
FormalName attribute is a formal name for the MimeType. Its meaning
and permitted values are determined by a controlled vocabulary as
described in the comment to the formalname ENTITY declaration above.
====================================================================
>
<!ELEMENT MimeType EMPTY>
<!ATTLIST MimeType
%localid;
%formalname;
>
<!
================================== NameLabel =======================
A string used by human users as a name to help identify a NewsItem.
Its form is determined by the provider. It might be identical to the
textual content of the SlugLine element, for example, but even if
this is so, the system should not process the NameLabel as a slugline.
Nothing can be assumed about the nature of the string within NameLabel
beyond the fact that it can help to identify the NewsItem to humans.
====================================================================
>
<!ELEMENT NameLabel (#PCDATA)>
<!ATTLIST NameLabel
%localid;
>
<!
================================ NewsComponent =====================
A container for news objects, used to identify the role of news
objects in relation to one another, and to ascribe metadata to them.
The Essential attribute indicates whether the provider considers that
this NewsComponent is essential to the meaning of the NewsComponent
within which it is contained. The EquivalentsList attribute indicates
whether or not the NewsItems or NewsItemRefs, NewsComponents or
ContentItems contained within this one are equivalent to one another
in content and/or meaning
====================================================================
>
<!ELEMENT NewsComponent (Comment*, Catalog?, TopicSet*, Role?,
BasisForChoice*, NewsLines?, AdministrativeMetadata?,
RightsMetadata?, DescriptiveMetadata?, Metadata*, ((NewsItem |
====================================================================
>
<!ELEMENT NewsItemId (#PCDATA)>
<!ATTLIST NewsItemId
Vocabulary CDATA #IMPLIED
Scheme CDATA #IMPLIED
>
<!
================================= NewsItemRef ======================
A pointer to a NewsItem that is deemed to replace the NewsItemRef
element. The NewsItem attribute is a pointer to the relevant
NewsItem. Its value can be an http URL, or a NewsML URN as described
in the comment to PublicIdentifier, or a fragment identifier
consisting of a # character followed by the Duid of a NewsItem in
the current document.
====================================================================
>
<!ELEMENT NewsItemRef (Comment*)>
<!ATTLIST NewsItemRef
%localid;
NewsItem CDATA #IMPLIED
>
<!
================================= NewsItemType =====================
An indication of the type of a NewsItem. The value of the FormalName
attribute is a formal name for the NewsItemType. Its meaning and
permitted values are determined by a controlled vocabulary as
described in the comment to the formalname ENTITY declaration above.
====================================================================
>
<!ELEMENT NewsItemType EMPTY>
<!ATTLIST NewsItemType
%localid;
%formalname;
>
<!
=================================== NewsLine =======================
A newsline of a type not included in the NewsML specification.
====================================================================
>
<!ELEMENT NewsLine (NewsLineType, NewsLineText+)>
<!ATTLIST NewsLine
%localid;
>
<!
=================================== NewsLineText ===================
The text of a NewsLine of userdefined type.
====================================================================
>
<!ELEMENT NewsLineText (#PCDATA | Origin)*>
<!ATTLIST NewsLineText
%localid;
xml:lang CDATA #IMPLIED
>
<!
================================ NewsLineType ======================
An indication of a userdefined NewsLine type. The value of the
%formalname;
>
<!
================================= NewsService ======================
An identifier for a service to which all the NewsItems in a NewsML
document belong. The value of the FormalName attribute is a formal
name for the NewsService. Its meaning and permitted values are
determined by a controlled vocabulary as described in the comment to
the formalname ENTITY declaration above.
====================================================================
>
<!ELEMENT NewsService EMPTY>
<!ATTLIST NewsService
%localid;
%formalname;
>
<!
=================================== Notation =======================
An indication of the notation of a ContentItem. The value of the
FormalName attribute is a formal name for the Notation. Its meaning
and permitted values are determined by a controlled vocabulary as
described in the comment to the formalname ENTITY declaration above.
====================================================================
>
<!ELEMENT Notation EMPTY>
<!ATTLIST Notation
%localid;
%formalname;
>
<!
================================= OfInterestTo =====================
An indication of the target audience of a NewsItem. The value of the
FormalName attribute is a formal name for the target audience. Its
meaning and permitted values are determined by a controlled
vocabulary as described in the comment to the formalname ENTITY
declaration above.
====================================================================
>
<!ELEMENT OfInterestTo (Relevance?)>
<!ATTLIST OfInterestTo
%localid;
%formalname;
%assignment;
>
<!
==================================== Origin ========================
A wrapper for all or part of the text of a piece of text, which
provides a pointer to an item of data corresponding formally to what
is being described here in natural language. The Href attribute
identifies the relevant data, and may be an http URL or a NewsML URN
as described in the comment to PublicIdentifier, optionally including
a fragment identifier. Alternatively, it can be a simple fragment
identifier consisting of a # character followed by the value of the
Duid of an element in the current document.
====================================================================
>
<!ELEMENT Origin (#PCDATA | Origin)*>
<!ATTLIST Origin
%localid;
%assignment;
Href CDATA #IMPLIED
>
<!
=================================== Party ==========================
An indication of the person, company or organisation that has a
particular relationship to this NewsItem in the news workflow. The
value of the FormalName attribute is a formal name for the Party.
Its meaning and permitted values are determined by a controlled
vocabulary as described in the comment to the formalname ENTITY
declaration above. The optional Topic attribute may be used as
a direct pointer to that Topic. The pointer may take the form of an
http URL or a NewsML URN, or a # character followed by the value of
the Duid attribute of a Topic element in the current document.
====================================================================
>
<!ELEMENT Party EMPTY>
<!ATTLIST Party
%localid;
%formalname;
Topic CDATA #IMPLIED
>
<!
=================================== Priority =======================
An indication of the priority notation of a NewsItem. The value of
the FormalName attribute is a formal name for the Priority. Its
meaning and permitted values are determined by a controlled
vocabulary as described in the comment to the formalname ENTITY
declaration above.
====================================================================
>
<!ELEMENT Priority EMPTY>
<!ATTLIST Priority
%localid;
%formalname;
>
<!
=================================== Property =======================
A property of a NewsItem, NewsComponent, ContentItem or Topic. The
property has a name and either a simple Value or a complex value
consisting of a set of further properties.
Value
=====
A string representation of the value of a Property.
ValueRef
========
A pointer to the value of the Property. This might be a Topic in a
TopicSet, or any other piece of data. If both Value and ValueRef are
provided, then ValueRef identifies the actual value of the property,
with Value simply providing a string representation or mnemonic for
it.
Example:
<Catalog>
<Resource Duid="resource1">
<Urn>urn:newsml:reuters.com:20001001:Physical Characteristics:3</Urn>
<Url>www.reuters.com/vocabs/physical.xml</Url>
<Url>www.iptc.com/vocabularies/memberdefined/reuters/physical.xml
</Url>
<DefaultVocabularyFor Scheme="short" Context=
"Metadata/Property[@FormalName='Width']"/>
</Resource>
</Catalog>
...
<Property FormalName="Width" Vocabulary="#resource1">
<Property FormalName="Unit" ValueRef=
"urn:newsml:iptc.org:20001006:units:1#cm"/>
<Property FormalName="Quantity" Value="7.5"/>
</Property>
AllowedValues
=============
The AllowedValues attribute, if present, is a pointer to a controlled
vocabulary that delimits the set of allowed values for the property.
This may be an http URL, or a NewsML URN, or a fragment identifier
consisting of a # charactger followed by the Duid of an element in
the current document. The pointer must reference either a Resource
element that designates an external controlled vocabulary, or a
TopicSet element, that is itself the controlled vocabulary.
====================================================================
>
<!ELEMENT Property (Property*)>
<!ATTLIST Property
%localid;
%formalname;
%assignment;
Value CDATA #IMPLIED
ValueRef CDATA #IMPLIED
AllowedValues CDATA #IMPLIED
>
<!
=================================== Provider =======================
An individual and/or company or organisation that released a news
object for publication.
====================================================================
>
<!ELEMENT Provider (%party;)>
<!ATTLIST Provider
%localid;
>
<!
================================== ProviderId ======================
An identifier for the news provider that produced the NewsItem. The
provider's ID is specified in the element content. This should be an
Internet domain name that is owned by the provider at the date
identified by the DateId subelement of the NewsIdentifier.
Example:
<NewsIdentifier>
<ProviderId>iptc.org</ProviderId>
<DateId>20001001</DateId>
<NewsItemId>NewsML version 1.0</NewsItemId>
<RevisionId>1</RevisionId
</NewsIdentifier>
Because the domain name "iptc.org" was owned on 1 October 2000 by the
International Press Telecommunications Council (IPTC) and noone else,
it is certain that IPTC is the provider in this case.
====================================================================
>
<!ELEMENT ProviderId (#PCDATA)>
<!ATTLIST ProviderId
Vocabulary CDATA #IMPLIED
>
<!
=============================== PublicIdentifier ===================
A public identifier (in the sense defined by the XML 1,0
Specification) for a NewsItem. This is the NewsML URN, and must be
constructed as follows:
urn:newsml:{ProviderId}:{DateId}:{NewsItemId}:{RevisionId}
{RevisionId@Update}
Note that the set of characters that can be included within a URN is
limited. The allowed characters are specified by the Internet
Engineering Task Force (IETF) in its Request For Comments (RFC)
number 2141. This document is available at
http://www.ietf.org/rfc/rfc2141.txt. Any character that is not
within the permitted URN character set must be represented as a %
character followed by the sequence of one to six bytes of its UTF8
encoding, represented in their hexadecimal form. Thus, for example,
the space character in a URN would appear as %20, and the % character
itself would appear as %25. This mechanism does not cater for all
Unicode or UTF16 characters. Therefore, it is important not to
include characters in a NewsItemId that cannot be encoded in UTF8.
====================================================================
>
<!ELEMENT Relevance EMPTY>
<!ATTLIST Relevance
%localid;
%formalname;
%assignment;
>
<!
=================================== Replace ========================
An instruction to replace a designated element within a NewsItem.
The element that is to replace the designated element is the content
of the Replace element. The NewsItem within which the replacement
takes place is the previous revision of the current one, and the
element to be replaced is the one whose Duid value is equal to the
value of the Replace element's DuidRef attribute.
====================================================================
>
<!ELEMENT Replace ANY>
<!ATTLIST Replace
%localid;
DuidRef CDATA #REQUIRED
>
<!
================================== Resource ========================
An indication where a given resource can be found, and whether it is
to be used as the default vocabulary for certain formal names within
the current subtree of a NewsML document. The Urn attribute provides
a NewsML URN for the resource.
THe Url attribute(s) provide(s) a location or locations where the
resource may be found. The DefaultVocabularyFor element contains an
XPath pattern. The identified resource acts as default vocabulary for
any element within the subtree whose root is the parent of the
current Catalog, that matches this XPath pattern.
====================================================================
>
<!ELEMENT Resource (Urn?, Url*, DefaultVocabularyFor*)>
<!ATTLIST Resource
%localid;
>
<!
=============================== RevisionHistory ====================
A pointer to a file containing the revision history of the NewsItem.
====================================================================
>
<!ELEMENT RevisionHistory EMPTY>
<!ATTLIST RevisionHistory
%localid;
Href CDATA #REQUIRED
>
<!
================================== RevisionId ======================
A positive integer indicating which Revision of a given NewsItem this
is. Any positive integer may be used, but it must always be the case
that of two instances of a NewsItem that have the same ProviderId,
DateId and NewsItemId, the one whose RevisionId has the larger value
must be the more recent revision.
>
<!ELEMENT Status EMPTY>
<!ATTLIST Status
%localid;
%formalname;
>
<!
=============================== StatusWillChange ===================
Advance notification of a status change that will automatically occur
at the specified date and time. For example, an item with a Status
of "embargoed" might have a StatusWillChange element stating that
the status will become "usable" at a specified time. This is
equivalent to announcing in advance the time at which the embargo
will end and the item will be released.
====================================================================
>
<!ELEMENT StatusWillChange (FutureStatus, DateAndTime)>
<!ATTLIST StatusWillChange
%localid;
>
<!
================================= SubHeadLine ======================
A displayable subsidiary headline.
====================================================================
>
<!ELEMENT SubHeadLine (#PCDATA | Origin)*>
<!ATTLIST SubHeadLine
%localid;
xml:lang CDATA #IMPLIED
>
<!
=================================== Subject ========================
An indication of the Subject of a NewsItem. The value of the
FormalName attribute is a formal name for the Subject. Its meaning
and permitted values are determined by a controlled vocabulary as
described in the comment to the formalname ENTITY declaration above.
====================================================================
>
<!ELEMENT Subject EMPTY>
<!ATTLIST Subject
%localid;
%formalname;
%assignment;
>
<!
================================= SubjectCode ======================
A container for the IPTC Subject Codes that indicate the subject of
a NewsItem, as defined in the IPTC Information Interchange Model.
It consists of one more Subject, SubjectMatter and SubjectDetail
elements, optionally amplified by one or more SubjectQualifier
elements.
====================================================================
>
<!ELEMENT SubjectCode ((Subject | SubjectMatter | SubjectDetail),
SubjectQualifier*)*>
<!ATTLIST SubjectCode
%localid;
%assignment;
>
<!
================================ SubjectDetail =====================
An indication of the SubjectDetail of a NewsItem. The value of the
FormalName attribute is a formal name for the SubjectDetail. Its
meaning and permitted values are determined by a controlled
vocabulary as described in the comment to the formalname ENTITY
declaration above.
====================================================================
>
<!ELEMENT SubjectDetail EMPTY>
<!ATTLIST SubjectDetail
%localid;
%formalname;
%assignment;
>
<!
================================ SubjectMatter =====================
An indication of the SubjectMatter of a NewsItem. The value of the
FormalName attribute is a formal name for the SubjectMatter. Its
meaning and permitted values are determined by a controlled
vocabulary as described in the comment to the formalname ENTITY
declaration above.
====================================================================
>
<!ELEMENT SubjectMatter EMPTY>
<!ATTLIST SubjectMatter
%localid;
%formalname;
%assignment;
>
<!
=============================== SubjectQualifier ===================
An indication of the SubjectQualifier of a NewsItem. The value of the
FormalName attribute is a formal name for the SubjectQualifier. Its
meaning and permitted values are determined by a controlled vocabulary
as described in the comment to the formalname ENTITY declaration above.
====================================================================
>
<!ELEMENT SubjectQualifier EMPTY>
<!ATTLIST SubjectQualifier
%localid;
%formalname;
%assignment;
>
<!
=============================== SystemIdentifier ===================
A system identifier (in the sense defined by the XML 1,0
Specification) for a NewsItem.
====================================================================
>
<!ELEMENT SystemIdentifier (#PCDATA)>
<!ATTLIST SystemIdentifier
%localid;
>
<!
=====================================================================
>
<!ELEMENT Urn (#PCDATA)>
<!ATTLIST Urn
%localid;
>
<!
================================= UsageRights ======================
Information about the usage rights pertaining to a NewsComponent.
====================================================================
>
<!ELEMENT UsageRights (UsageType?, Geography?, RightsHolder?,
Limitations?, StartDate?, EndDate?)>
<!ATTLIST UsageRights
%localid;
%assignment;
>
<!
================================== UsageType =======================
A naturallanguage indication of the type of usage to which the
rights apply.
====================================================================
>
<!ELEMENT UsageType (#PCDATA | Origin)*>
<!ATTLIST UsageType
%localid;
xml:lang CDATA #IMPLIED
%assignment;
>
<element_selection_pattern>
<element>NewsML</element>
</element_selection_pattern>
<location>
<path>NewsInformation/</path>
</location>
<object_type>newsml_document</object_type>
<make_entity/>
</xml_content_rule>
<! ******************************************* >
<! CONTENT RULE for the primary news object: NewsItem FOLLOWS HERE >
<xml_content_rule>
<element_selection_pattern>
<element>NewsItem</element>
</element_selection_pattern>
<variables>
<variable>
<name>NewsItemId</name>
<content_of_element>
<element_selection_pattern>
<element>NewsItemId</element>
</element_selection_pattern>
</content_of_element>
<default>MiscNewsItems</default>
</variable>
<variable>
<name>PublicIdentifier</name>
<content_of_element>
<element_selection_pattern>
<element>PublicIdentifier</element>
</element_selection_pattern>
</content_of_element>
</variable>
<variable>
<name>DateId</name>
<content_of_element>
<element_selection_pattern>
<element>DateId</element>
</element_selection_pattern>
</content_of_element>
</variable>
<variable>
<name>ProviderId</name>
<content_of_element>
<element_selection_pattern>
<element>ProviderId</element>
</element_selection_pattern>
</content_of_element>
</variable>
<variable>
<name>Urgency</name>
<element_selection_pattern>
<element>Urgency</element>
</element_selection_pattern>
<attr_name>FormalName</attr_name>
</attribute_value_of_element>
<default>Unspecified Urgency</default>
</variable>
<variable>
<name>Status</name>
<attribute_value_of_element>
<element_selection_pattern>
<element>Status</element>
</element_selection_pattern>
<attr_name>FormalName</attr_name>
</attribute_value_of_element>
<default>Unspecified Status</default>
</variable>
<variable>
<name>NewsItemType</name>
<attribute_value_of_element>
<element_selection_pattern>
<element>NewsItemType</element>
</element_selection_pattern>
<attr_name>FormalName</attr_name>
</attribute_value_of_element>
<default>Unspecified Type</default>
</variable>
<variable>
<name>Duid</name>
<attribute_value_of_element>
<element_selection_pattern>
<element>NewsComponent</element>
</element_selection_pattern>
<attr_name>Duid</attr_name>
</attribute_value_of_element>
<default>UnknownDUID</default>
</variable>
</variables>
<location>
<! user should customize this path >
<path>NewsItems/</path>
</location>
<object_name>
<var name="NewsItemId"/>
</object_name>
<object_type>newsml_item</object_type>
<! ############### SOME ATTRIBUTES ON THE newsml_item
Object ################# >
<metadata>
<dctmattr>
<name>publicidentifier</name>
<template><var name="PublicIdentifier"/></template>
</dctmattr>
<dctmattr>
<name>urgency</name>
<template><var name="Urgency"/></template>
</dctmattr>
<dctmattr>
<name>status</name>
<template><var name="Status"/></template>
</dctmattr>
<dctmattr>
<name>newsitem_type</name>
<template><var name="NewsItemType"/></template>
</dctmattr>
<dctmattr>
<name>provider_id</name>
<template><var name="ProviderId"/></template>
</dctmattr>
<dctmattr>
<name>date_id</name>
<template><var name="DateId"/></template>
</dctmattr>
</metadata>
<make_entity/>
</xml_content_rule>
<! ************************************************************** >
<! CONTENT RULE to chunk NewsComponents FOLLOWS HERE >
<! ************************************************************** >
<xml_content_rule>
<element_selection_pattern>
<element>NewsComponent</element>
</element_selection_pattern>
<variables>
<variable>
<name>Duid</name>
<attribute_value_of_element>
<this_element/>
<attr_name>Duid</attr_name>
</attribute_value_of_element>
<default>Untitled NewsComponent</default>
</variable>
<variable>
<name>Confidence</name>
<attribute_value_of_element>
<element_selection_pattern>
<element>DescriptiveMetadata</element>
</element_selection_pattern>
<attr_name>Confidence</attr_name>
</attribute_value_of_element>
</variable>
<variable>
<name>Genre</name>
<attribute_value_of_element>
<element_selection_pattern>
<element>Genre</element>
</element_selection_pattern>
<attr_name>FormalName</attr_name>
</attribute_value_of_element>
<default>MiscellaneousGenre</default>
</variable>
<variable>
<name>ByLine</name>
<content_of_element>
<element_selection_pattern>
<element>ByLine</element>
</element_selection_pattern>
</content_of_element>
<default>Unknown ByLine</default>
</variable>
<variable>
<name>HeadLine</name>
<content_of_element>
<element_selection_pattern>
<element>HeadLine</element>
</element_selection_pattern>
</content_of_element>
</variable>
<variable>
<name>SubHeadLine</name>
<content_of_element>
<element_selection_pattern>
<element>SubHeadLine</element>
</element_selection_pattern>
</content_of_element>
</variable>
<variable>
<name>DateLine</name>
<content_of_element>
<element_selection_pattern>
<element>DateLine</element>
</element_selection_pattern>
</content_of_element>
<default>Date Line Not Given</default>
</variable>
<variable>
<name>CreditLine</name>
<content_of_element>
<element_selection_pattern>
<element>CreditLine</element>
</element_selection_pattern>
</content_of_element>
<default>Credits Unknown</default>
</variable>
<variable>
<name>SlugLine</name>
<content_of_element>
<element_selection_pattern>
<element>SlugLine</element>
</element_selection_pattern>
</content_of_element>
<default>Slugger</default>
</variable>
<variable>
<name>Role</name>
<attribute_value_of_element>
<element_selection_pattern>
<element>Role</element>
</element_selection_pattern>
<attr_name>FormalName</attr_name>
</attribute_value_of_element>
<default>No Role Specified</default>
</variable>
<variable>
<name>BasisForChoice</name>
<content_of_element>
<element_selection_pattern>
<element>BasisForChoice</element>
</element_selection_pattern>
</content_of_element>
<default>Basis Not Specified</default>
</variable>
<variable>
<name>Provider</name>
<content_of_element>
<element_selection_pattern>
<element>Provider</element>
</element_selection_pattern>
</content_of_element>
<default>Provider Not Specified</default>
</variable>
<variable>
<name>Creator</name>
<attribute_value_of_element>
<element_selection_pattern>
<element>Party</element>
</element_selection_pattern>
<attr_name>FormalName</attr_name>
</attribute_value_of_element>
<default>Creator Not Specified</default>
</variable>
<variable>
<name>Language</name>
<attribute_value_of_element>
<element_selection_pattern>
<element>Language</element>
</element_selection_pattern>
<attr_name>FormalName</attr_name>
</attribute_value_of_element>
<default>Language Unspecified</default>
</variable>
<variable>
<name>Topic</name>
<attribute_value_of_element>
<element_selection_pattern>
<element>TopicOccurrence</element>
</element_selection_pattern>
<attr_name>Topic</attr_name>
</attribute_value_of_element>
<default>Topic Unspecified</default>
</variable>
<variable>
<name>OfInterestTo</name>
<attribute_value_of_element>
<element_selection_pattern>
<element>OfInterestTo</element>
</element_selection_pattern>
<attr_name>FormalName</attr_name>
</attribute_value_of_element>
</variable>
<variable>
<name>Source</name>
<attribute_value_of_element>
<element_selection_pattern>
<element>Source</element>
</element_selection_pattern>
<attr_name>FormalName</attr_name>
</attribute_value_of_element>
</variable>
<variable>
<name>EquivList</name>
<! yes/no value only >
<attribute_value_of_element>
<element_selection_pattern>
<element>NewsComponent</element>
</element_selection_pattern>
<attr_name>EquivList</attr_name>
</attribute_value_of_element>
</variable>
</variables>
<location>
<! user should customize this path >
<path>../NewsComponents/</path>
</location>
<object_name>
<var name="Duid"/>
</object_name>
<object_type>newsml_component</object_type>
<! NewsComponent element, newsml_component objecttype,
METADATA settings ******** >
<metadata>
<dctmattr>
<name>byline</name>
<template><var name="ByLine"/></template>
</dctmattr>
<dctmattr>
<name>creditline</name>
<template><var name="CreditLine"/></template>
</dctmattr>
<dctmattr>
<name>dateline</name>
<template><var name="DateLine"/></template>
</dctmattr>
<dctmattr>
<name>headline</name>
<template><var name="HeadLine"/></template>
</dctmattr>
<dctmattr>
<name>subheadline</name>
<template><var name="SubHeadLine"/></template>
</dctmattr>
<dctmattr>
<name>slugline</name>
<template><var name="SlugLine"/></template>
</dctmattr>
<dctmattr>
<name>role</name>
<template><var name="Role"/></template>
</dctmattr>
<dctmattr>
<name>basis_for_choice</name>
<template><var name="BasisForChoice"/></template>
</dctmattr>
<dctmattr>
<name>provider</name>
<template><var name="Provider"/></template>
</dctmattr>
<dctmattr>
<name>creator</name>
<template><var name="Creator"/></template>
</dctmattr>
<dctmattr>
<name>genre</name>
<template><var name="Genre"/></template>
</dctmattr>
<dctmattr>
<name>equivalents_list</name>
<template><var name="EquivList"/></template>
</dctmattr>
<! some attributes repeating/multivalued >
<dctmattr_repeating>
<name>topics</name>
<template><var name="Topic"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>languages</name>
<template><var name="Language"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>source</name>
<template><var name="Source"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>of_interest_to</name>
<template><var name="OfInterestTo"/></template>
</dctmattr_repeating>
</metadata>
<make_entity/>
</xml_content_rule>
<! CONTENT RULE for ContentItem FOLLOWS HERE >
<! we could use Comment or Duid to put a name on the contentItem
for identification. >
<xml_content_rule>
<element_selection_pattern>
<element>ContentItem</element>
</element_selection_pattern>
<variables>
<variable>
<name>MediaType</name>
<attribute_value_of_element>
<element_selection_pattern>
<element>MediaType</element>
</element_selection_pattern>
<attr_name>FormalName</attr_name>
</attribute_value_of_element>
</variable>
<variable>
<name>Comment</name>
<content_of_element>
<element_selection_pattern>
<element>Comment</element>
</element_selection_pattern>
</content_of_element>
</variable>
<variable>
<name>Duid</name>
<attribute_value_of_element>
<this_element/>
<attr_name>Duid</attr_name>
</attribute_value_of_element>
<default>Untitled ContentItem</default>
</variable>
</variables>
<location>
<path>../ContentItems/</path>
</location>
<object_name><var name="Duid"/></object_name>
<object_type>newsml_content</object_type>
<! METADATA for newsml_content object >
<metadata>
<dctmattr>
<name>mediatype</name>
<template><var name="MediaType"/></template>
</dctmattr>
</metadata>
<make_entity/>
</xml_content_rule>
<! *************************************************** >
<! A LINK RULE NOW for referenced items.... >
<! *************************************************** >
<link_rule peer_or_child="child" ndata="false">
<element_selection_pattern>
<element>ContentItem</element>
</element_selection_pattern>
<link_target>
<attr_name>Href</attr_name>
</link_target>
<location>
<path>../ContentItems/References/</path>
</location>
<object_type>newsml_content</object_type>
</link_rule>
</map_rules>
</application>
<Topics> element. See the next section for the XSL stylesheet that accompanies this
example.
<?xml version="1.0" encoding="UTF8"?>
<! edited with XML Spy v4.3 U (http://www.xmlspy.com) by
K Chalasani (Documentum) >
<newsletter>
<title>
TerraNews Newsletter
</title>
<intro>
Welcome to the first Aggregated Newsletter from
TerraNews, gathering all the important news of the
past several years in one place from the various
Terra News Agencys across the world and beyond.
</intro>
<Topics>
<topictitle>
Today&apos;s Headlines
</topictitle>
</Topics>
</newsletter>
<xsl:template match="Topics">
<h2><xsl:valueof select="topictitle"/></h2>
<! Build a query to get all Main News Components >
<xsl:foreach select="xalannodeset:
nodeset($myResult)//object">
<h3>
<a href="#{./content/NewsComponent/@Duid}">
<xsl:valueof select="headline"/>
</a>
</h3>
</xsl:foreach>
<xsl:template match="HeadLine">
<p><b><font size="5"><xsl:valueof select="HeadLine"/>
<xsl:applytemplates/>
</font></b></p>
</xsl:template>
<xsl:template match="SubHeadLine">
<p><b><font size="3">
<xsl:valueof select="SubHeadLine"/>
<xsl:applytemplates/>
</font></b></p>
</xsl:template>
<xsl:template match="CreditLine">
<font color="gray">
<font size="2">,
<xsl:valueof select="CreditLine"/>
<xsl:applytemplates/>
</font>
</font>
</xsl:template>
<xsl:template match="DateLine">
<font color="gray" size="2">, <br></br>
<xsl:valueof select="DateLine"/>
<xsl:applytemplates/>
</font>
</xsl:template>
<xsl:template match="NewsLineText">
<font color="Blue" size="2"><br></br>
<xsl:valueof select="NewsLineText"/>
<xsl:applytemplates/>
</font>
</xsl:template>
<xsl:template match="ByLine">
<font color="gray" size="2">
By
<xsl:valueof select="ByLine"/>
<xsl:applytemplates/>
</font>
</xsl:template>
<xsl:template match="ContentItem">
<p>
<xsl:applytemplates/>
</p>
</xsl:template>
<xsl:template name="XDQL">
<xsl:param name="dql"/>
<xsl:variable name="xdql" select=
"java:com.documentum.xml.xdql.DfXmlQuery.new()"/>
<xsl:variable name="init" select="java:init($xdql)"/>
<xsl:variable name="param" select=
"java:setDql($xdql, $dql)"/>
<xsl:variable name="includeContent" select=
"java:includeContent($xdql,true())"/>
<xsl:variable name="setContentEncoding" select=
"java:setContentEncoding($xdql,'dom')"/>
<xsl:variable name="setContentFormat" select=
"java:setContentFormat($xdql,'xml')"/>
<xsl:variable name="rootNode" select=
"java:setRootNode($xdql, 'xdql')"/>
<xsl:variable name="execute" select="java:execute($xdql,
'DF_READ_QUERY', $DMS_SESSION_ID)"/>
<xsl:copyof select="$myResult"/>
</xsl:template>
</xsl:stylesheet>
This appendix contains source materials relevant to the cell phone example
</variable>
<variable>
<name>brandName</name>
<content_of_element>
<element_selection_pattern>
<element>brand.name</element>
</element_selection_pattern>
</content_of_element>
<default>Brand Unspecified</default>
</variable>
<variable>
<name>price</name>
<content_of_element>
<element_selection_pattern>
<element>price</element>
</element_selection_pattern>
</content_of_element>
<default>Unspecified</default>
</variable>
<variable>
<name>transferTechnology</name>
<attribute_value_of_element>
<element_selection_pattern>
<element>technology</element>
</element_selection_pattern>
<attr_name>transfer</attr_name>
</attribute_value_of_element>
<default>Transfer Technology Unspecified</default>
</variable>
<variable>
<name>protocol</name>
<attribute_value_of_element>
<element_selection_pattern>
<element>technology</element>
</element_selection_pattern>
<attr_name>protocol</attr_name>
</attribute_value_of_element>
<default>Protocol Unspecified</default>
</variable>
<variable>
<name>weight</name>
<content_of_element>
<element_selection_pattern>
<element>weight</element>
</element_selection_pattern>
</content_of_element>
<default>Weight Unspecified</default>
</variable>
<variable>
<name>batteryType</name>
<attribute_value_of_element>
<element_selection_pattern>
<element>battery</element>
</element_selection_pattern>
<attr_name>type</attr_name>
</attribute_value_of_element>
<default>Battery Type Unspecified</default>
</variable>
<variable>
<name>talkTime</name>
<content_of_element>
<element_selection_pattern>
<element>talk.time</element>
</element_selection_pattern>
</content_of_element>
<default>Talk Time Unspecified</default>
</variable>
<variable>
<name>standbyTime</name>
<content_of_element>
<element_selection_pattern>
<element>standby.time</element>
</element_selection_pattern>
</content_of_element>
<default>Standby Time Unspecified</default>
</variable>
</variables>
<! Defining where to store models in Documentum >
<location>
<path>Models/</path>
</location>
<dctmattr>
<name>price</name>
<template><var name="price"/></template>
</dctmattr>
<dctmattr>
<name>transfer_technology</name>
<template><var name="transferTechnology"/></template>
</dctmattr>
<dctmattr>
<name>protocol</name>
<template><var name="protocol"/></template>
</dctmattr>
<dctmattr>
<name>weight</name>
<template><var name="weight"/></template>
</dctmattr>
<dctmattr>
<name>talk_time</name>
<template><var name="talkTime"/></template>
</dctmattr>
<dctmattr>
<name>standby_time</name>
<template><var name="standbyTime"/></template>
</dctmattr>
<dctmattr>
<name>battery_type</name>
<template><var name="batteryType"/></template>
</dctmattr>
</metadata>
<make_entity/>
</xml_content_rule>
<! Also chunking at Description level >
<xml_content_rule>
<element_selection_pattern>
<element>description</element>
</element_selection_pattern>
<variables>
<variable>
<name>Desctitle</name>
<content_of_element>
<element_selection_pattern>
<element>Title</element>
</element_selection_pattern>
</content_of_element>
<default>Title Unspecified</default>
</variable>
</variables>
<location>
<path>Descriptions/</path>
</location>
<object_name><var name="Desctitle"/></object_name>
<object_type>dm_document</object_type>
<metadata>
<dctmattr>
<name>title</name>
<template><var name="Desctitle"/></template>
</dctmattr>
</metadata>
<make_entity/>
</xml_content_rule>
<! Locating linked files and importing as children part of VDM into
Documentum>
<link_rule peer_or_child="child" ndata="false">
<element_selection_pattern>
<element>image</element>
</element_selection_pattern>
<link_target>
<attr_name>href</attr_name>
</link_target>
<variables>
<variable>
<name>ImgName</name>
<content_of_element>
<element_selection_pattern>
<element>image</element>
</element_selection_pattern>
</content_of_element>
<default>Title Unspecified</default>
</variable>
</variables>
<location>
<path>Images/</path>
</location>
<object_type>dm_document</object_type>
<metadata>
<dctmattr>
<name>title</name>
<template><var name="ImgName"/></template>
</dctmattr>
</metadata></link_rule>
</map_rules>
</application>
<image href="QVX427428.jpg"/>
<description>
<Title>THIRD PARTY / BUNDLE OFFER</Title>
<Para>
Sign up for IT&;I Wireless Service and get up to $180 in Free
Stuff for a new IT&;I Activation.
</Para>
<ItemizedList>
<ListItem>Get $100 in free accessories</ListItem>
<ListItem>Receive a $30 gift check from us, and a</ListItem>
<ListItem>
$50 mailin rebate from IT&;I Nationwide coverage.
</ListItem>
</ItemizedList>
<Para> Offer good until July 31st.</Para>
</description>
<specifications>
<mode.type mode.type="Single.Mode"/>
<technology transfer="Analog" protocol="AMPS"/>
<price currency="USD" with.contract="true">29.99</price>
<dimensions>
<height>0</height>
<width>0</width>
<thickness>0</thickness>
</dimensions>
<weight with.battery="true">7.3</weight>
<battery type="nickelmetalhydride">
<talk.time>80</talk.time>
<standby.time>17</standby.time>
</battery>
<display.features characters.per.line="0" text.lines="1">
<Backlight/>
<Battery.Strength.Indicator/>
<Roaming.Or.Channel.Indicator/>
<Signal.Strength.Indicator/>
<Voice.Mail.Or.Text.Indicator/>
<Missed.Call.Indicator/>
</display.features>
<memory.features locations="30" alphanumeric="true">
<Last.Number.Recall number="0"/>
<Memory.Scrolling/>
</memory.features>
<call.features>
<System.Select automatic="unknown"/>
<Automatic.Redial/>
<Multiple.NAM number="4"/>
<One.Touch.Emergency.Dialing/>
<Speed.Dialing/>
<Any.Key.Answer/> <Caller.ID/> <Silent.Alert/> <Keypad.Lock/>
<Continuous.DTMF.Dialing/> <Scratchpad/> <Mute/>
</call.features>
</specifications>
</model>
<model>
<model.name>QVX9XL</model.name>
<brand.name>Quasivox</brand.name>
<image href="QVX9XL.jpg"/>
<description>
<Title>ADDON SERVICE OFFER</Title>
<Para>
DocuMailbox is a revolutionary FREE messaging service that
integrates your email, voicemail, faxing and paging into a
single webbased Inbox. Now you can access your messages on any
webenabled computer, Web TV browser or touchtone phone from
any point in the world!
</Para>
<ItemizedList>
<ListItem>Your own email address</ListItem>
<ListItem>Tollfree number with extension</ListItem>
<ListItem>Receive voicemails and faxes</ListItem>
<ListItem>Listen to your email</ListItem>
</ItemizedList>
<Para>
Free offer good with QuasivoxQVX9XL cell phone purchase until
July 31, 2001. Order now!
</Para>
</description>
<specifications>
<mode.type mode.type="Single.Mode"/>
<technology transfer="Analog" protocol="AMPS"/>
<price currency="USD" with.contract="true">54.99</price>
<dimensions>
<height>0</height>
<width>0</width>
<thickness>0</thickness>
</dimensions>
<weight with.battery="true">7.3</weight>
<battery type="nickelmetalhydride">
<talk.time>80</talk.time>
<standby.time>17</standby.time>
</battery>
<display.features characters.per.line="0" text.lines="1">
<Backlight/>
<Battery.Strength.Indicator/>
<Roaming.Or.Channel.Indicator/>
<Signal.Strength.Indicator/>
<Voice.Mail.Or.Text.Indicator/>
<Missed.Call.Indicator/>
</display.features>
<memory.features locations="30" alphanumeric="true">
<Last.Number.Recall number="0"/>
<Memory.Scrolling/>
</memory.features>
<call.features>
<System.Select automatic="unknown"/>
<Automatic.Redial/>
<Multiple.NAM number="4"/>
<One.Touch.Emergency.Dialing/>
<Speed.Dialing/>
<Any.Key.Answer/>
<Caller.ID/>
<Silent.Alert/>
<Keypad.Lock/>
<Continuous.DTMF.Dialing/>
<Scratchpad/>
<Mute/>
<Speakerphone/>
</call.features>
</specifications>
</model>
<model>
<model.name>ET730</model.name>
<brand.name>Ersatz Technics</brand.name>
<image href="ET730.jpg"/>
<description>
<Title>WARRANTY OFFER 2</Title>
<Para>
A VIP Priority Service Agreement is available for this product
for only $59.95. Our toprated service enhancement program includes:
</Para>
<ItemizedList>
<ListItem> Loaner program</ListItem>
<ListItem> Nationwide coverage</ListItem>
<ListItem> Tollfree telephone support (7 days a week)</ListItem>
<ListItem>Inhome service plans</ListItem>
</ItemizedList>
</description>
<specifications>
<mode.type mode.type="Single.Mode"/>
<technology transfer="Analog" protocol="AMPS"/>
<price currency="USD" with.contract="true">99.00</price>
<dimensions>
<height>0</height>
<width>0</width>
<thickness>0</thickness>
</dimensions>
<weight with.battery="true">5</weight>
<battery type="nickelmetalhydride">
<talk.time>90</talk.time>
<standby.time>24</standby.time>
</battery>
<display.features characters.per.line="0" text.lines="1">
<Battery.Strength.Indicator/>
<Signal.Strength.Indicator/>
<Voice.Mail.Or.Text.Indicator/>
<Missed.Call.Indicator/>
</display.features>
<memory.features locations="99" alphanumeric="true">
<Last.Number.Recall number="10"/>
<Memory.Scrolling/>
<Secret.Memory/>
</memory.features>
<call.features>
<Call.Restriction/>
<Electronic.Lock/>
<System.Select automatic="unknown"/>
<Automatic.Redial/>
<Multiple.NAM number="4"/>
<One.Touch.Emergency.Dialing/>
<Speed.Dialing/>
<Ringer.Alert.Options number="4"/>
<Silent.Alert/>
< feature name="Linked Dialing" note="2"/>
<Scratchpad/>
<Mute/>
<Call.Timer multiple="true"/>
<Text.Paging/>
</call.features>
</specifications>
</model>
<model>
<model.name>ET500</model.name>
<brand.name>Ersatz Technics</brand.name>
<image href="ET500.jpg"/>
<description>
<Title>THIRD PARTY / BUNDLE OFFER 2</Title>
<Para>
Sign up for IT&;I Wireless Service and get up to $180 in Free
Stuff for a new IT&;I Activation.
</Para>
<ItemizedList>
<ListItem>Get $100 in free accessories</ListItem>
<ListItem>Receive a $30 gift check from us, and a</ListItem>
<ListItem>
$50 mailin rebate from IT&;I Nationwide coverage.
</ListItem>
</ItemizedList>
<Para> Offer good until July 31st.</Para>
</description>
<specifications>
<mode.type mode.type="Single.Mode"/>
<technology transfer="Digital.PCS" protocol="GSM" frequency="1900"/>
<price currency="USD" with.contract="true">129.00</price>
<dimensions>
<height>0</height>
<width>0</width>
<thickness>0</thickness>
</dimensions>
<weight with.battery="true">4.7</weight>
<battery type="nickelmetalhydride">
<talk.time>200</talk.time>
<standby.time>60</standby.time>
</battery>
<display.features characters.per.line="0" text.lines="1">
<Backlight/>
<Battery.Strength.Indicator/>
<Missed.Call.Indicator/>
<feature name="Clock" note="Real Time"/>
<Roaming.Or.Channel.Indicator/>
<Signal.Strength.Indicator/>
<Voice.Mail.Or.Text.Indicator/>
<Volume.Indicator/>
</display.features>
<memory.features locations="97" alphanumeric="true">
<Secret.Memory/>
<Last.Number.Recall number="0"/>
<Memory.Protect/>
<Memory.Scrolling/>
<SIM.Or.Smart.Card/>
</memory.features>
<call.features>
<Call.Restriction/>
<Multiple.NAM number="2"/>
<Automatic.Redial/>
<One.Touch.Emergency.Dialing/>
<Speed.Dialing/>
<Caller.ID/>
<Keypad.Lock/>
<Ringer.Alert.Options number="12"/>
<Any.Key.Answer/>
<Call.Timer multiple="true"/>
<Continuous.DTMF.Dialing/>
<Linked.Dialing/> <Mute/>
<Scratchpad/>
<Call.Forwarding/>
<Call.Waiting/>
<Text.Paging/>
<Voice.Mail/>
<Party.Line number="6"/>
</call.features>
</specifications>
</model>
<model>
<model.name>ETGlobalPhone</model.name>
<brand.name>Ersatz Technics</brand.name>
<image href="ETGlobalPhone.jpg"/>
<description>
<Title>ADDON SERVICE OFFER 2</Title>
<Para>
DocuMailbox is a revolutionary FREE messaging service that integrates
your email, voicemail, faxing and paging into a single webbased
Inbox. Now you can access your messages on any webenabled computer,
Web TV browser or touchtone phone from any point in the world!
</Para>
<ItemizedList>
<ListItem>Your own email address</ListItem>
<ListItem>Tollfree number with extension</ListItem>
<ListItem>Receive voicemails and faxes</ListItem>
<ListItem>Listen to your email</ListItem>
</ItemizedList>
<Para>
Free offer good with Technics cell phone purchase until July 31,
2001. Order now!
</Para>
</description>
<specifications>
<mode.type mode.type="Single.Mode"/>
<technology transfer="Digital.Cellular" protocol="GSM" frequency="900"/>
<technology transfer="Digital.PCS" protocol="GSM" frequency="1900"/>
<price currency="USD" with.contract="true">299.00</price>
<dimensions>
<height>0</height>
<width>0</width>
<thickness>0</thickness>
</dimensions>
<weight with.battery="true">7.03</weight>
<battery type="lithiumion">
<talk.time>174</talk.time>
<standby.time>53</standby.time>
</battery>
<display.features characters.per.line="12" text.lines="3">
<feature name="Clock" note="Real Time"/>
<Volume.Indicator/>
</display.features>
<memory.features locations="99" alphanumeric="true">
<Last.Number.Recall number="15"/>
<Memory.Scrolling/>
</memory.features>
<call.features>
<Speed.Dialing/>
<Multiple.NAM number="2"/>
<Caller.ID/>
<Ringer.Alert.Options number="15"/>
<Mute/>
<Call.Forwarding/>
<Text.Paging/>
<Fax.Capability/>
<Infrared.Modem/>
<Party.Line number="6"/>
</call.features>
</specifications>
</model>
<model>
<model.name>p650</model.name>
<brand.name>Pseudodyne</brand.name>
<image href="p650.jpg"/>
<description>
<Title>ADDON SERVICE OFFER 3</Title>
<Para>
DocuMailbox is a revolutionary FREE messaging service that integrates
your email, voicemail, faxing and paging into a single webbased Inbox.
Now you can access your messages on any webenabled computer, Web TV
browser or touchtone phone from any point in the world!
</Para>
<ItemizedList>
<ListItem>Your own email address</ListItem>
<ListItem>Tollfree number with extension</ListItem>
<ListItem>Receive voicemails and faxes</ListItem>
<ListItem>Listen to your email</ListItem>
</ItemizedList>
<Para>
Free offer good with Pseudodyne cell phone purchase until July 31,
2001. Order now!
</Para>
</description>
<specifications>
<mode.type mode.type="Single.Mode"/>
<technology transfer="Digital.PCS" protocol="GSM" frequency="1900"/>
<price currency="USD" with.contract="true">49.00</price>
<dimensions>
<height>0</height>
<width>0</width>
<thickness>0</thickness>
</dimensions>
<weight with.battery="true">6</weight>
<battery type="nickelmetalhydride">
<talk.time>330</talk.time>
<standby.time>90</standby.time>
</battery>
<display.features characters.per.line="12" text.lines="2">
<Backlight/>
<Battery.Strength.Indicator/>
<Missed.Call.Indicator/>
<Signal.Strength.Indicator/>
<Voice.Mail.Or.Text.Indicator/>
<Volume.Indicator/>
</display.features>
<memory.features locations="0" alphanumeric="true">
<SIM.Or.Smart.Card/>
</memory.features>
<call.features>
<Call.Restriction/>
<Automatic.Redial/>
<Caller.ID/>
<Ringer.Alert.Options number="8"/>
<Call.Timer multiple="true"/>
<Call.Forwarding/>
<Call.Waiting/>
<Text.Paging/> <Party.Line number="0"/>
</call.features>
</specifications>
</model>
<model>
<model.name>Starburst200</model.name>
<brand.name>Pseudodyne</brand.name> <image href="Starburst200.jpg"/>
<description>
<Title>ADDON SERVICE OFFER 7</Title>
<Para>
DocuMailbox is a revolutionary FREE messaging service that integrates
your email, voicemail, faxing and paging into a single webbased Inbox.
Now you can access your messages on any webenabled computer, Web TV
browser or touchtone phone from any point in the world!
</Para>
<ItemizedList>
<ListItem>Your own email address</ListItem>
<ListItem>Tollfree number with extension</ListItem>
<ListItem>Receive voicemails and faxes</ListItem>
<ListItem>Listen to your email</ListItem>
</ItemizedList>
<Para>
Free offer good with Pseudodyne cell phone purchase until July 31,
2001. Order now!
</Para>
</description>
<specifications>
<mode.type mode.type="Single.Mode"/>
<technology transfer="Digital.PCS" protocol="GSM" frequency="1900"/>
<price currency="USD" with.contract="true">399.00</price>
<dimensions>
<height>0</height>
<width>0</width>
<thickness>0</thickness>
</dimensions>
<weight with.battery="true">3.8</weight>
<battery type="nickelmetalhydride">
<talk.time>60</talk.time>
<standby.time>14</standby.time>
</battery>
<display.features characters.per.line="7" text.lines="2">
<Backlight/>
<Battery.Strength.Indicator/>
<Missed.Call.Indicator/>
<Roaming.Or.Channel.Indicator/>
<Signal.Strength.Indicator/>
<Voice.Mail.Or.Text.Indicator/>
<Volume.Indicator/>
</display.features>
<memory.features locations="99" alphanumeric="true">
<Last.Number.Recall number="20"/>
<Memory.Protect/>
<Memory.Scrolling/>
</memory.features>
<call.features>
<Call.Restriction/>
<Multiple.NAM number="2"/>
<Caller.ID/>
<Electronic.Lock/>
<Call.Timer multiple="true"/>
<Ringer.Alert.Options number="9"/>
<Vibrating.Alert/>
<Automatic.Redial/>
<Continuous.DTMF.Dialing/>
<Linked.Dialing/>
<One.Touch.Emergency.Dialing/>
<Speed.Dialing/>
<Any.Key.Answer/> <Automatic.Answer/>
<Mute/> <Scratchpad/>
<Call.Forwarding/>
<Call.Waiting/>
<Text.Paging/>
<Voice.Mail/>
</call.features>
</specifications>
</model>
<model>
<model.name>Cybernation100</model.name>
<brand.name>Cybernation</brand.name>
<image href="Cybernation100.jpg"/>
<description>
<Title>THIRD PARTY / BUNDLE OFFER</Title>
<Para>
Sign up for IT&;I Wireless Service and get up to $180 in Free
Stuff for a new IT&;I Activation.
</Para>
<ItemizedList>
<ListItem>Get $100 in free accessories</ListItem>
<brand.name>Digiscreech</brand.name>
<image href="DSMultiRange.jpg"/>
<description>
<Title>ADDON SERVICE OFFER 9</Title>
<Para>
DocuMailbox is a revolutionary FREE messaging service that integrates
your email, voicemail, faxing and paging into a single webbased Inbox.
Now you can access your messages on any webenabled computer, Web TV
browser or touchtone phone from any point in the world!
</Para>
<ItemizedList>
<ListItem>Your own email address</ListItem>
<ListItem>Tollfree number with extension</ListItem>
<ListItem>Receive voicemails and faxes</ListItem>
<ListItem>Listen to your email</ListItem>
</ItemizedList>
<Para>
Free offer good with Digiscreech cell phone purchase until July 31,
2001. Order now!
</Para>
</description>
<specifications>
<mode.type mode.type="Single.Mode"/>
<technology transfer="Digital.PCS" protocol="CDMA" frequency="1900"/>
<price currency="USD" with.contract="true">99.99</price>
<dimensions>
<height>0</height>
<width>0</width>
<thickness>0</thickness>
</dimensions>
<weight with.battery="true">6.5</weight>
<battery type="lithiumion">
<talk.time>240</talk.time>
<standby.time>60</standby.time>
</battery>
<display.features characters.per.line="12" text.lines="4">
<Backlight/>
<Battery.Strength.Indicator/>
<Missed.Call.Indicator/>
<feature name="Clock" note="Real Time"/>
<Roaming.Or.Channel.Indicator/>
<Signal.Strength.Indicator/>
<Volume.Indicator/>
</display.features>
<memory.features locations="99" alphanumeric="true">
<Secret.Memory/>
<Last.Number.Recall number="20"/>
<Memory.Protect/>
<Memory.Scrolling/>
</memory.features>
<call.features>
<Call.Restriction/>
<Multiple.NAM number="2"/>
<Caller.ID/>
<Electronic.Lock/>
<Call.Timer multiple="true"/>
<Ringer.Alert.Options number="5"/>
<System.Select automatic="true"/>
<Automatic.Redial/> <Continuous.DTMF.Dialing/>
<Linked.Dialing/>
<One.Touch.Emergency.Dialing/>
<Speed.Dialing/>
<Any.Key.Answer/>
<Automatic.Answer/>
<Mute/>
<Scratchpad/>
<Call.Forwarding/>
<Call.Waiting/>
<Text.Paging/>
<Voice.Mail/>
<Party.Line number="0"/>
</call.features>
</specifications>
</model>
<model> <model.name>Poem15002000</model.name>
<brand.name>Tonepoem</brand.name>
<image href="Poem15002000.jpg"/>
<description>
<Title>THIRD PARTY / BUNDLE OFFER 5</Title>
<Para>
Sign up for IT&;I Wireless Service and get up to $180 in Free
Stuff for a new IT&;I Activation.
</Para>
<ItemizedList>
<ListItem>Get $100 in free accessories</ListItem>
<ListItem>Receive a $30 gift check from us, and a</ListItem>
<ListItem>
$50 mailin rebate from IT&;I Nationwide coverage.
</ListItem>
</ItemizedList>
<Para> Offer good until July 31st.</Para>
</description>
<specifications>
<mode.type mode.type="Single.Mode"/>
<technology transfer="Digital.PCS" protocol="CDMA" frequency="1900"/>
<price currency="USD" with.contract="true">149.95</price>
<dimensions>
<height>0</height>
<width>0</width>
<thickness>0</thickness>
</dimensions>
<weight with.battery="true">5.4</weight>
<battery type="lithiumion">
<talk.time>150</talk.time>
<standby.time>35</standby.time>
</battery>
<display.features characters.per.line="0" text.lines="4">
<Backlight/>
<Battery.Strength.Indicator/>
<Missed.Call.Indicator/>
<feature name="Clock" note="Real Time"/>
<Roaming.Or.Channel.Indicator/>
<Signal.Strength.Indicator/>
<Voice.Mail.Or.Text.Indicator/>
<Volume.Indicator/>
</display.features>
<memory.features locations="190" alphanumeric="true">
<Last.Number.Recall number="9"/>
<Memory.Protect/>
<Memory.Scrolling/>
</memory.features>
<call.features>
<Call.Restriction/>
<Caller.ID/>
<Electronic.Lock/>
<Call.Timer multiple="true"/>
<Ringer.Alert.Options number="9"/>
<Silent.Alert/> <Vibrating.Alert/>
<Automatic.Redial/>
<Continuous.DTMF.Dialing/>
<One.Touch.Emergency.Dialing/>
<Speed.Dialing/>
<Any.Key.Answer/>
<Automatic.Answer/>
<Mute/>
<Scratchpad/>
<Speakerphone/>
<Voice.Activated.Dialing/>
<Call.Forwarding/>
<Call.Waiting/>
<Text.Paging/>
<Party.Line number="0"/>
</call.features>
</specifications>
</model>
</cellphonecatalog>
This appendix describes a sample configuration file that specifies how to chunk technical manuals.
The sample configuration file contains the chunking rules for DocBook‑compliant technical manuals
that are authored in Arbortext Epic Editor, version 4.2.1.
This sample configuration file was created in Arbortext Epic 4.3 as an instance of the config.dtd
provided with DFC 4.3.x. The sample configuration file can be cut and pasted from this document,
where it can be used as is or as the basis to customize your own configuration file.
This appendix contains the following sections:
• Overview of sample configuration file, page 325
• Description of sample configuration file, page 327
• Sample configuration file, page 332
The sample configuration file specifies that each chunk created in the Reusable Content
folder be created as an instance of the custom chunk_type object type. In addition, the
sample configuration file defines attribute values that are written to each instance of the
custom chunk_type object type.
These attributes are:
• Element Type
• Operating System
• Product Name
• Product Version
• Target Audience
The chunk_type custom object type was specifically created to include these five custom
attributes. These five custom attributes enable authors to search for chunks based on any
combination of values on these attributes.
Table 18, page 326 lists each of the elements from an XML source file for which the
sample configuration file specifies a chunk. The decision to create chunks out of these
elements was based on the requirements of authors to reuse content at different levels
of granularity.
Setting rules
The sample configuration file uses a content rule (<xml_content_rule>) or link rule
(<link_rule>) for each element in XML documents for which a chunk is to be created.
The content rule is used for elements in the XML document while the link rule is used
for external entities (graphic elements).
In the next example, the content rule uses an element selection pattern based on an
element and a specific attribute value for that element. The <attribute_test> element
defines the attribute name and value conditions that need to be met for the element
selection pattern.
<element_selection_pattern>
<element>sect1</element>
<attribute_test>
<attr_name>role</attr_name>
<value>concept</value>
</attribute_test>
</element_selection_pattern>
Note: In the sample configuration file, sections (sect1, sect2, sect3, etc...) with a role
attribute set to ʺconceptʺ are saved to different locations than sections without that role
attribute set.
Defining variables
The sample configuration file uses several variables in the content and link rules to
determine the names of chunks, the location of chunks, and attribute values for chunks.
All of the content rules (except for the <book> content rule) and the link rule use the
Element Name variable to store the name of the element specified in the element
selection pattern. This name will be used to populate the Element Type attribute for each
created chunk. If the name of the element cannot be derived, then the ʺUndeducedʺ
value for the Element Name is used.
<variable>
<name>Element Name</name>
<tagname_of_element>
<this_element/>
</tagname_of_element>
<default>Undeduced</default>
</variable>
All of the content rules use the Element Title variable to store the content of the <title>
element that is associated with the element, specified in the element selection pattern, in
the XML source. The Element Title variable determines the name of each chunk created
in the repository. The name of graphic chunks created through a link rule are derived
differently (Chunking external graphics files, page 331).
<variable>
<name>Element Title</name>
<content_of_element>
<element_selection_pattern>
<element>title</element>
</element_selection_pattern>
</content_of_element>
<default>Title Unspecified</default>
</variable>
The content rule for the <book> element defines four other book‑level variables. These
variables are Operating System, Product Version, Product Name, and Target Audience.
The values of these variables are derived from the <releaseinfo>, <productnumber>,
<productname>, and <othername> elements in the XML source document, respectively.
The values for these four variable are derived the same way as the Element Title variable
and are used to populate attribute values for all chunks created from the same XML
book. The value of the Product Name attribute is also used to specify the location in the
repository to store created chunks.
<dctmattr>
<name>element_type</name>
<template><var name="Element Name"/></template>
</dctmattr>
<dctmattr_repeating>
<name>operating_system</name>
<template><var name="Operating System"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_name</name>
<template><var name="Product Name"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_version</name>
<template><var name="Product Version"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>target_audience</name>
<template><var name="Target Audience"/></template>
</dctmattr_repeating>
</metadata>
<make_entity/>
</xml_content_rule>
<xml_content_rule>
<element_selection_pattern>
<element>sect1</element>
<attribute_test>
<attr_name>role</attr_name>
<value>concept</value>
</attribute_test>
</element_selection_pattern>
<variables>
<variable>
<name>Element Name</name>
<tagname_of_element>
<this_element/>
</tagname_of_element>
<default>Undeduced</default>
</variable>
<variable>
<name>Element Title</name>
<content_of_element>
<element_selection_pattern>
<element>title</element>
</element_selection_pattern>
</content_of_element>
<default>Title Unspecified</default>
</variable>
</variables>
<location>
<path>/Documentation Source/Reusable Content/Concepts/
<var name="Product Name"/></path>
</location>
<object_name><var name="Element Title"/></object_name>
<object_type>chunk_type</object_type>
<metadata>
<dctmattr>
<name>element_type</name>
<template><var name="Element Name"/></template>
</dctmattr>
<dctmattr_repeating>
<name>operating_system</name>
<template><var name="Operating System"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_name</name>
<template><var name="Product Name"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_version</name>
<template><var name="Product Version"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>target_audience</name>
<template><var name="Target Audience"/></template>
</dctmattr_repeating>
</metadata>
<make_entity/>
</xml_content_rule>
<xml_content_rule>
<element_selection_pattern>
<element>sect1</element>
</element_selection_pattern>
<variables>
<variable>
<name>Element Name</name>
<tagname_of_element>
<this_element/>
</tagname_of_element>
<default>Undeduced</default>
</variable>
<variable>
<name>Element Title</name>
<content_of_element>
<element_selection_pattern>
<element>title</element>
</element_selection_pattern>
</content_of_element>
<default>Title Unspecified</default>
</variable>
</variables>
<location>
<path>/Documentation Source/Reusable Content/Topics/
<var name="Product Name"/></path>
</location>
<object_name><var name="Element Title"/></object_name>
<object_type>chunk_type</object_type>
<metadata>
<dctmattr>
<name>element_type</name>
<template><var name="Element Name"/></template>
</dctmattr>
<dctmattr>
<name>element_type</name>
</dctmattr>
<dctmattr_repeating>
<name>operating_system</name>
<template><var name="Operating System"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_name</name>
<template><var name="Product Name"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_version</name>
<template><var name="Product Version"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>target_audience</name>
<template><var name="Target Audience"/></template>
</dctmattr_repeating>
</metadata>
<make_entity/>
</xml_content_rule>
<xml_content_rule>
<element_selection_pattern>
<element>sect2</element>
</element_selection_pattern>
<variables>
<variable>
<name>Element Name</name>
<tagname_of_element>
<this_element/>
</tagname_of_element>
<default>Undeduced</default>
</variable>
<variable>
<name>Element Title</name>
<content_of_element>
<element_selection_pattern>
<element>title</element>
</element_selection_pattern>
</content_of_element>
<default>Title Unspecified</default>
</variable>
</variables>
<location>
<path>/Documentation Source/Reusable Content/Topics/
<var name="Product Name"/></path>
</location>
<object_name><var name="Element Title"/></object_name>
<object_type>chunk_type</object_type>
<metadata>
<dctmattr>
<name>element_type</name>
<template><var name="Element Name"/></template>
</dctmattr>
<dctmattr_repeating>
<name>operating_system</name>
<template><var name="Operating System"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_name</name>
<template><var name="Product Name"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_version</name>
<template><var name="Product Version"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>target_audience</name>
<template><var name="Target Audience"/></template>
</dctmattr_repeating>
</metadata>
<make_entity/></xml_content_rule>
<xml_content_rule>
<element_selection_pattern>
<element>sect3</element>
<attribute_test>
<attr_name>role</attr_name>
<value>concept</value>
</attribute_test>
</element_selection_pattern>
<variables>
<variable>
<name>Element Name</name>
<tagname_of_element>
<this_element/>
</tagname_of_element>
<default>Undeduced</default>
</variable>
<variable>
<name>Element Title</name>
<content_of_element>
<element_selection_pattern>
<element>title</element>
</element_selection_pattern>
</content_of_element>
<default>Title Unspecified</default>
</variable>
</variables>
<location>
<path>/Documentation Source/Reusable Content/Concepts/
<var name="Product Name"/></path>
</location>
<object_name><var name="Element Title"/></object_name>
<object_type>chunk_type</object_type>
<metadata>
<dctmattr>
<name>element_type</name>
<template><var name="Element Name"/></template>
</dctmattr>
<dctmattr_repeating>
<name>operating_system</name>
<template><var name="Operating System"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_name</name>
</dctmattr_repeating>
<dctmattr_repeating>
<name>target_audience</name>
<template><var name="Target Audience"/></template>
</dctmattr_repeating>
</metadata>
<make_entity/></xml_content_rule>
<xml_content_rule>
<element_selection_pattern>
<element>sect4</element>
<attribute_test>
<attr_name>role</attr_name>
<value>concept</value>
</attribute_test>
</element_selection_pattern>
<variables>
<variable>
<name>Element Name</name>
<tagname_of_element>
<this_element/>
</tagname_of_element>
<default>Undeduced</default>
</variable>
<variable>
<name>Element Title</name>
<content_of_element>
<element_selection_pattern>
<element>title</element>
</element_selection_pattern>
</content_of_element>
<default>Title Unspecified</default>
</variable>
</variables>
<location>
<path>/Documentation Source/Reusable Content/Concepts/
<var name="Product Name"/></path>
</location>
<object_name><var name="Element Title"/></object_name>
<object_type>chunk_type</object_type>
<metadata>
<dctmattr>
<name>element_type</name>
<template><var name="Element Name"/></template>
</dctmattr>
<dctmattr_repeating>
<name>operating_system</name>
<template><var name="Operating System"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_name</name>
<template><var name="Product Name"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_version</name>
<template><var name="Product Version"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>target_audience</name>
<template><var name="Target Audience"/></template>
</dctmattr_repeating>
</metadata>
<make_entity/>
</xml_content_rule>
<xml_content_rule>
<element_selection_pattern>
<element>sect4</element>
<attribute_test>
<attr_name>role</attr_name>
<value>concept</value>
</attribute_test>
</element_selection_pattern>
<variables>
<variable>
<name>Element Name</name>
<tagname_of_element>
<this_element/>
</tagname_of_element>
<default>Undeduced</default>
</variable>
<variable>
<name>Element Title</name>
<content_of_element>
<element_selection_pattern>
<element>title</element>
</element_selection_pattern>
</content_of_element>
<default>Title Unspecified</default>
</variable>
</variables>
<location>
<path>/Documentation Source/Reusable Content/Topics/
<var name="Product Name"/></path>
</location>
<object_name><var name="Element Title"/></object_name>
<object_type>chunk_type</object_type>
<metadata>
<dctmattr>
<name>element_type</name>
<template><var name="Element Name"/></template>
</dctmattr>
<dctmattr_repeating>
<name>operating_system</name>
<template><var name="Operating System"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_name</name>
<template><var name="Product Name"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_version</name>
<template><var name="Product Version"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>target_audience</name>
</dctmattr_repeating>
</metadata>
<make_entity/>
</xml_content_rule>
<xml_content_rule>
<element_selection_pattern>
<element>sect5</element>
<attribute_test>
<attr_name>role</attr_name>
<value>concept</value>
</attribute_test>
</element_selection_pattern>
<variables>
<variable>
<name>Element Name</name>
<tagname_of_element>
<this_element/>
</tagname_of_element>
<default>Undeduced</default>
</variable>
<variable>
<name>Element Title</name>
<content_of_element>
<element_selection_pattern>
<element>title</element>
</element_selection_pattern>
</content_of_element>
<default>Title Unspecified</default>
</variable>
</variables>
<location>
<path>/Documentation Source/Reusable Content/Topics/
<var name="Product Name"/></path>
</location>
<object_name><var name="Element Title"/></object_name>
<object_type>chunk_type</object_type>
<metadata>
<dctmattr>
<name>element_type</name>
<template><var name="Element Name"/></template>
</dctmattr>
<dctmattr_repeating>
<name>operating_system</name>
<template><var name="Operating System"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_name</name>
<template><var name="Product Name"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_version</name>
<template><var name="Product Version"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>target_audience</name>
<template><var name="Target Audience"/></template>
</dctmattr_repeating>
</metadata>
<make_entity/>
</xml_content_rule>
<xml_content_rule>
<element_selection_pattern>
<element>figure</element>
</element_selection_pattern>
<variables>
<variable>
<name>Element Name</name>
<tagname_of_element>
<this_element/>
</tagname_of_element>
<default>Undeduced</default>
</variable>
<variable>
<name>Element Title</name>
<content_of_element>
<element_selection_pattern>
<element>title</element>
</element_selection_pattern>
</content_of_element>
<default>Title Unspecified</default>
</variable>
</variables>
<location>
<path>/Documentation Source/Reusable Content/Figures/
<var name="Product Name"/></path>
</location>
<object_name><var name="Element Title"/></object_name>
<object_type>chunk_type</object_type>
<metadata>
<dctmattr>
<name>element_type</name>
<template><var name="Element Name"/></template>
</dctmattr>
<dctmattr_repeating>
<name>operating_system</name>
<template><var name="Operating System"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_name</name>
<template><var name="Product Name"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_version</name>
<template><var name="Product Version"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>target_audience</name>
<template><var name="Target Audience"/></template>
</dctmattr_repeating>
</metadata>
<make_entity/>
</xml_content_rule>
<xml_content_rule>
<element_selection_pattern>
<element>procedure</element>
</element_selection_pattern>
<variables>
<variable>
<name>Element Name</name>
<tagname_of_element>
<this_element/>
</tagname_of_element>
<default>Undeduced</default>
</variable>
<variable>
<name>Element Title</name>
<content_of_element>
<element_selection_pattern>
<element>title</element>
</element_selection_pattern>
</content_of_element>
<default>Title Unspecified</default>
</variable>
</variables>
<location>
<path>/Documentation Source/Reusable Content/Procedures/
<var name="Product Name"/></path>
</location>
<object_name><var name="Element Title"/></object_name>
<object_type>chunk_type</object_type>
<metadata>
<dctmattr>
<name>element_type</name>
<template><var name="Element Name"/></template>
</dctmattr>
<dctmattr_repeating>
<name>operating_system</name>
<template><var name="Operating System"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_name</name>
<template><var name="Product Name"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_version</name>
<template><var name="Product Version"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>target_audience</name>
<template><var name="Target Audience"/></template>
</dctmattr_repeating>
</metadata>
<make_entity/>
</xml_content_rule>
<xml_content_rule>
<element_selection_pattern>
<element>table</element>
</element_selection_pattern>
<variables>
<variable>
<name>Element Name</name>
<tagname_of_element>
<this_element/>
</tagname_of_element>
<default>Undeduced</default>
</variable>
<variable>
<name>Element Title</name>
<content_of_element>
<element_selection_pattern>
<element>title</element>
</element_selection_pattern>
</content_of_element>
<default>Title Unspecified</default>
</variable>
</variables>
<location>
<path>/Documentation Source/Reusable Content/Tables/
<var name="Product Name"/></path>
</location>
<object_name><var name="Element Title"/></object_name>
<object_type>chunk_type</object_type>
<metadata>
<dctmattr>
<name>element_type</name>
<template><var name="Element Name"/></template>
</dctmattr>
<dctmattr_repeating>
<name>operating_system</name>
<template><var name="Operating System"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_name</name>
<template><var name="Product Name"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_version</name>
<template><var name="Product Version"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>target_audience</name>
<template><var name="Target Audience"/></template>
</dctmattr_repeating>
</metadata>
<make_entity/>
</xml_content_rule>
<xml_content_rule>
<element_selection_pattern>
<element>example</element>
</element_selection_pattern>
<variables>
<variable>
<name>Element Name</name>
<tagname_of_element>
<this_element/></tagname_of_element>
<default>Undeduced</default>
</variable>
<variable>
<name>Element Title</name>
<content_of_element>
<element_selection_pattern>
<element>title</element>
</element_selection_pattern>
</content_of_element>
<default>Title Unspecified</default>
</variable>
</variables>
<location>
<path>/Documentation Source/Reusable Content/Examples/
<var name="Product Name"/></path>
</location>
<object_name><var name="Element Title"/></object_name>
<object_type>chunk_type</object_type>
<metadata>
<dctmattr>
<name>element_type</name>
<template><var name="Element Name"/></template>
</dctmattr>
<dctmattr_repeating>
<name>operating_system</name>
<template><var name="Operating System"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_name</name>
<template><var name="Product Name"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_version</name>
<template><var name="Product Version"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>target_audience</name>
<template><var name="Target Audience"/></template>
</dctmattr_repeating>
</metadata>
<make_entity/>
</xml_content_rule>
<link_rule>
<element_selection_pattern>
<element>graphic</element>
</element_selection_pattern>
<link_target>
<attr_name>fileref</attr_name>
</link_target>
<variables>
<variable>
<name>Element Name</name>
<tagname_of_element>
<this_element/></tagname_of_element>
<default>Undeduced</default>
</variable>
<variable>
<name>graphic_file</name>
<attribute_value_of_element>
<this_element/>
<attr_name>fileref</attr_name>
</attribute_value_of_element>
<default>no derived name</default>
</variable>
</variables>
<location>
<path>/Documentation Source/Reusable Content/Graphics/
<var name="Product Name"/></path>
</location>
<object_name><var name="graphic_file"/></object_name>
<object_type>chunk_type</object_type>
<metadata>
<dctmattr>
<name>element_type</name>
<template><var name="Element Name"/></template>
</dctmattr>
<dctmattr_repeating>
<name>operating_system</name>
<template><var name="Operating System"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_name</name>
<template><var name="Product Name"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>product_version</name>
<template><var name="Product Version"/></template>
</dctmattr_repeating>
<dctmattr_repeating>
<name>target_audience</name>
<template><var name="Target Audience"/></template>
</dctmattr_repeating>
</metadata>
</link_rule>
</map_rules>
</application>
A empty content, 24
ACLs, 22, 37, 47, 58, 61, 99, 101, 132, 142, granularity, 21
227 of external parsed entities, 57, 142
aliases, 61, 99, 101, 182, 185, 189 chunking rules, 56
application support documents and Documentum attributes, 37
downloading, 15 example, 238, 243, 251
prohibiting download, 25 chunks
Application Support Documents importing and checking in, 16
folder, 20, 34 read‑only, 16
creating, 43 config.dtd
minimizing files, 25 elements in, 93
approving content, 27 version, 93
Arbortext Epic, 16, 18, 37, 325 config.dtd elements
archiving content, 28 acl_domain, 99, 101
attribute values acl_name, 99, 101, 133
extracting from XML documents, 111, allow_work_in_progress, 103, 106,
205, 209 130
attributes app_pattern, 106 to 107, 136
Documentum, 15, 37, 39, 229 application, 105
attr_name, 113, 161
attribute_exist_test, 109
B attribute_test, 110, 139, 213
binding rules, 15 to 16, 58, 104, 157, 221 to attribute_value_of_element, 111, 139,
222, 225, 229, 231 204, 216
business process analysis, 27 business_policy, 115
bypassing well‑formedness and child_of, 117, 134, 139
validation, 55, 103, 106 content_of_element, 118, 139, 204,
bypassing XML applications, 49, 104 210, 216
content_of_this_element, 120, 161
context_rule, 121, 139
C date_format, 122
canceling checkout, 16 dctmattr, 124, 171, 206
character entities, 175 dctmattr_repeating, 126, 171
in metadata, 172 dds_validation, 103, 106, 129
checking in XML documents, 16 default, 131, 147, 216
troubleshooting, 47 default_acl, 102, 132
checking out XML documents, 15 descendant_of, 117, 134, 139
troubleshooting, 50 element, 108, 136, 138 to 139
checkout element_selection_pattern, 110, 117 to
canceling, 16 118, 134, 136, 138, 157 to 159, 170,
chunking 175, 201, 206, 209, 225
P
parameter entities, 94, 199 S
external, 41, 47 schema management, 15
for Documentum attributes, 37 schema namespace, 50