CPC Interface Definition Spec
Draft 0.3
Last Updated 01/15/05
Change History
|
Date |
Author |
Change |
|
12/6/04 |
J. Laurentiev |
Initial build |
|
12/14/04 |
P. Horstmann |
Updates |
|
01/15/05 |
T. Rando |
Final draft |
Table of Contents
Shipyard
Implementation Alternatives
A number of mid-size US Shipyards and the US Navy have expressed a particular interest in extending Common Parts Catalog (CPC) capability. The CPC is currently being implemented by EB, BIW, Ingalls and Avondale, across the US Shipbuilding Industry including Public Shipyards and DOD logistics organizations. The extension of CPC capability requires the following items to be defined:
The original CPC work concentrated on the Tier 1 US Shipyards. These include: Northrop Grumman Ship Systems (Ingalls and Avondale Operations), Northrop Grumman Newport News, General Dynamics – Electric Boat, General Dynamics Bath Iron Works and General Dynamics NASSCO. From this work, several different types of implementations emerged. Sister yards such as Northrop Grumman Ship Systems (Ingalls & Avondale) and Northrop Grumman-Newport News Shipbuilding may choose to adopt a tightly coupled approach with the original CPC system. Other clients including 2nd tier and Navy yards may choose to adopt a more loosely coupled approach as demonstrated in the ISE Project. Industry wide use of CPC “like” capabilities may be built on the initial EB, BIW, Ingalls and Avondale deployments.
A potential model of an industry-wide deployment that takes advantage of ISE work is illustrated in the following figure:

Figure 1 – Industry-wide CPC
The green portion illustrates the extent of the original CPC deployment. The red portion illustrates future development work needed to extend CPC capability beyond the original members. The CPC Interface provides access to CPC functionality. These interfaces provide access to clients such as second tier yards and Navy yards. Note that the CPC Web service is a data access service; an intervening Web server or servlet is needed to provide an HTML version to a browser. The format of this HTML is not specified as part of this service.
Should second tier yards implement “CPC Like” capability, a similar set of interfaces can be established. The second tier shipyards could act as suppliers as well as consumers of information. The blue box represents this work. It entails a parts library capability at the second tier/Navy yard as well as an implementation of an interface so the other yards could access that data. In both cases these services would have to provide the appropriate security, access control, query capability and exchange capacity.
In order for such a wide-scale interoperability capability to be deployed it is important that there be agreement on the interfaces, and this agreement must be defined as a formal interface specification.
The CPC interface provides a means by which suppliers of CPC data may publish their services to remote users, either through user agents such as browsers or through application to application connections. The service makes use of published open standards so that part information may be accessible to first tier, second tier and Navy users.
The CPC interface assumes a Web services connection at the supplier site and a user agent at the customer site.
The CPC interface service supports a number of use cases. These uses cases have been developed as part of the ISE project and are available at NEED URL???
The CPC Web service can be used to provide on-demand access to Common Parts Catalog (CPC) data to external applications. The data provided by the service mainly consists of vendor or shipyard part data associated with catalog part entries in the CPC. This Web service is designed to be used to help facilitate the exchanging of data between the CPC and external applications that are associated with the most common part catalog use cases. The service, as currently designed, provides the minimum set of operations that will allow for searching the catalog to create a list of parts that meet a specific set of requirements, for locating and downloading the details of a part entry in the CPC and for adding new part entries into the CPC. A part entry in the context of this Web service is always considered to be the set of data associated with a vendor/shipyard part definition (part instance) that the CPC is responsible for managing.
The term Web services describes a standardized way of integrating Web-based applications using the XML, SOAP, WSDL and UDDI open standards over an Internet protocol backbone. XML is used to tag the data, SOAP is used to transfer the data, WSDL is used for describing the services available and UDDI is used for listing what services are available. Used primarily as a means for businesses to communicate with each other and with clients, Web services allow organizations to communicate data without intimate knowledge of each other's IT systems behind the firewall. This definition and associated set of standards are supported in concept by the CPC Web service. The CPC Web service does use XML based SOAP messages that are described in WSDL. A deployed CPC Web service could be registered in a UDDI repository.
Each of the three operations provided in the CPC web service utilizes a Remote Procedure Call (RPC) style of communication. RPC requests can be transmitted synchronously or asynchronously. Synchronous RPC requests are employed when an application expects a quick response or cannot continue without the data provided by the web service. It is this model that the CPC web service follows. In other words the web service operations will function with the premise that the application making a request to the CPC web service will wait for a response. As result, each service is required to provide a response when the requested processing is complete.
The CPC Web service identifies three methods: fetch, query and update. A description of each of the methods, their parameters and their returned information is as follows:
overview: The fetch operation is used to obtain a part definition from a part definition identifier. The part definition identifier is a String that uniquely identifies the part definition instance in the CPC application. This identifier is used by applications to obtain the details of the part instance in the CPC application. This definition data will be returned as XML content inside a container element (cpc:uos), based upon the CPC XML Schema. Only one part definition is returned with each fetch operation invocation. Therefore only one identifier can be passed to the service with each invocation. An empty container element is returned if a part definition identifier is passed that does not match a part definition instance inside the CPC application datastore.
overview: The query operation is used to obtain a list of part definition identifiers from a Xquery query String. The Xquery query string identifies the criteria that the requesting application is requesting the CPC Web service use to evaluate against the CPC parts datastore (the set of part definition instances it manages). Xquery is a standard for describing queries against XML documents. This query string can be used to locate part definitions that meet some set of application’s requirements. For instance, an application may need to locate all part definitions for butterfly valves with interior diameter of 2 inches. The Xquery string parameter is used to obtain a part definition identifier of the part definitions that meet the query’s criteria. In addition, the query may result in more than one item being found that meets the criteria and as result a list of part definition identifiers may be returned. Finally it may result in no items being found and therefore an empty list may also be returned. For each of the three possible outcomes (single item matches, multiple items match, no items match) the results are returned to the invoking application as XML content using a container element from the CPC XML Schema (cpc:uos), containing the matching part definition identifiers.
overview: The update operation is used to add or replace a part definition inside the CPC application’s datastore. The update operation requires two parameters, a part definition and a part definition identifier String. If the part definition identifier matches a part definition instance in the CPC application datastore then the part definition will replaced the one matching in the datastore. If the part definition identifier does not match then a part definition will be added into the CPC application’s datastore using the part definition identifier as a reference identifier. The part definition must be XML content contained within a container element from the CPC XML Schema (cpc:uos). Upon completion of the update the method will return the part definition identifier used in the update to the invoking application.
The data elements used by the CPC interface service are described in the CPC information use case (NEED URL), which also contains links to the various metadata work products that support information interoperability of common parts and document information. Note that there are two representations supported: one for storage and query, and a second for validation. The former is optimized to make it easy to formulate queries and update messages; the latter is optimized to accommodate validation of CPC data using XML schema.
This section contains examples that illustrate how to formulate queries for CPC information. The payload of each message for the CPC Web service consists of either a query or an update instruction. The syntax for the payload is based on one of two emerging standards. Neither standard has yet been finally adopted; and development and support for the update syntax has slowed, if not halted. Nevertheless, these are today the most widely used and widely recognized XML query standards. For actual queries (which do not change the state of the datastore), the CPC Web service uses XQueryX, the XML syntax for XML query. (NEED URL). For updates, use the XUpdate specification. (NEED URL). In both cases the physical format of the datastore is assumed to be the default encoding based on the CPC context schemas.
The following instance data is located in file cpc.xml:
<cpc:uos xmlns:cpc="urn:iso10303-28:schema/cpc" xmlns:cpd="urn:iso10303-28:schema/cpd" xmlns:testns="urn:iii:TEST" xmlns:math="urn:iso10303-28:xslt/math" xmlns:cs="urn:iso10303-28:xslt/context_schema" xmlns:xtc="urn:iso10303-28:xslt/xtc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="urn:isetools.org:test" xsi:schemaLocation="urn:iso10303-28:schema/cpc cpc.xsd">
<cpc:Grommet id="cpc.grommet-1">
<Length>666666666.333</Length>
<Depth>666666666.333</Depth>
<Thickness>666666666.333</Thickness>
<Outside_diameter>666666666.333</Outside_diameter>
<Inside_diameter>666666666.333</Inside_diameter>
<Coating>ABCDEFGHIJKLMNOPQRSTUVWXY</Coating>
<Material_hardness>ABCDEFGHIJKLMNOPQRST</Material_hardness>
<Temperature_rating>6666666666</Temperature_rating>
<X-href>urn:isetools.org:test</X-href>
<Id>urn:isetools.org:test</Id>
<Version>urn:isetools.org:test</Version>
<Description>THE_XS_STRING</Description>
<Part_ownership_cage_code>ABCDEF</Part_ownership_cage_code>
<Part_revision>66666</Part_revision>
<Special_action>ABCDEFGHIJKLMNOPQRSTUVWXYZ</Special_action>
<Cage_code>D162</Cage_code>
<Noun_name>ABSORBENT</Noun_name>
<Type1>ABCDEFGHIJKLMNOPQRSTUVWXY</Type1>
<Modifier>ABCDEFGHIJKLMNOPQRSTUVWXYZ</Modifier>
<Commodity_code1>ABCDE</Commodity_code1>
<Size_capacity_rating>ABCDEFGHIJKLMRSTUVWXYZ</Size_capacity_rating>
<Special_condition>ABCDEFGHIJKLMNOPQRSTUVWXYZ</Special_condition>
<Unit_of_measure_issue>BA</Unit_of_measure_issue>
<Unit_of_measure_buy>BA</Unit_of_measure_buy>
<Make_buy_code>B</Make_buy_code>
<Source_code>4 and 4A</Source_code>
<Shared_part_override>"blank"</Shared_part_override>
<Mic_level>1</Mic_level>
<Sole_source>X</Sole_source>
<Standard_inspection_code>Ref a</Standard_inspection_code>
<Production_material>Y</Production_material>
<Ils_status>N</Ils_status>
<Cots>C</Cots>
<Part_tolerance>ABCDEFGHIJKLMNOPQRST</Part_tolerance>
<Part_tolerance_u_of_m>BA</Part_tolerance_u_of_m>
<Vendor_lead_time>6666</Vendor_lead_time>
<Number_of_threads>666666666.333</Number_of_threads>
<Thread_series>ABCDEFGHIJKLMNO</Thread_series>
<Size_number>ABCDEFGH</Size_number>
<Range>ABCDEFGHIJKLMNOPQRST</Range>
<Range_u_of_m>ABCDEFGHIJ</Range_u_of_m>
<Schedule_a_item_number>ABCDEFGHIJKLPQRST</Schedule_a_item_number>
<Revision>
<cpd:Document_id_spec_class xsi:nil="true" ref="cpd.document_id_spec_class-1"/>
</Revision>
<Env_legislation>
<cpd:Environmental_legislation xsi:nil="true" ref="cpd.environmental_legislation-1"/>
</Env_legislation>
<Apl>
<cpd:Apl xsi:nil="true" ref="cpd.apl-1"/>
</Apl>
<Nsn>
<cpd:Nsn xsi:nil="true" ref="cpd.nsn-1"/>
</Nsn>
<Cas>
<cpd:Cas xsi:nil="true" ref="cpd.cas-1"/>
</Cas>
<Part_audit>
<cpd:Part_audit xsi:nil="true" ref="cpd.part_audit-1"/>
</Part_audit>
<Applicability>
<cpd:Part_doc_applicability xsi:nil="true" ref="cpd.part_doc_applicability-1"/>
</Applicability>
</cpc:Grommet>
<!-- THE COMPOSITE INSTANCES FOR : cpc:Grommet-->
<!-- END COMPOSITE INSTANCES FOR : cpc:Grommet-->
<cpc:Grommet_Key id="cpc.grommet-1_key" X-href="urn:isetools.org:test" Id="cpc.grommet-1" Version="urn:isetools.org:test" Part_ownership_cage_code="ABCDEF"/>
<!-- TEST ENTITY: cpc:INSERT-METRIC
DEPEND: END -->
<cpc:Insert-metric id="cpc.insert-metric-1">
<Length>666666666.333</Length>
<Depth>666666666.333</Depth>
<Thickness>666666666.333</Thickness>
<Outside_diameter>666666666.333</Outside_diameter>
<Inside_diameter>666666666.333</Inside_diameter>
<Coating>ABCDEFGHIJKLMNOPQRSTUVWXY</Coating>
<Material_hardness>ABCDEFGHIJKLMNOPQRST</Material_hardness>
<Temperature_rating>6666666666</Temperature_rating>
<X-href>urn:isetools.org:test</X-href>
<Id>urn:isetools.org:test</Id>
<Version>urn:isetools.org:test</Version>
<Description>THE_XS_STRING</Description>
<Part_ownership_cage_code>ABCDEF</Part_ownership_cage_code>
<Part_revision>66666</Part_revision>
<Special_action>ABCDEFGHIJKLMNOPQRSTUVWXYZ</Special_action>
<Cage_code>D162</Cage_code>
<Noun_name>ABSORBENT</Noun_name>
<Type1>ABCDEFGHIJKLMNOPQRSTUVWXY</Type1>
<Modifier>ABCDEFGHIJKLMNOPQRSTUVWXYZ</Modifier>
<Commodity_code1>ABCDE</Commodity_code1>
<Size_capacity_rating>ABCDEFGLMNQRSTUVWXYZ</Size_capacity_rating>
<Special_condition>ABCDEFGHIJKLMNOPQRSTUVWXYZ</Special_condition>
<Unit_of_measure_issue>BA</Unit_of_measure_issue>
<Unit_of_measure_buy>BA</Unit_of_measure_buy>
<Make_buy_code>B</Make_buy_code>
<Source_code>4 and 4A</Source_code>
<Shared_part_override>"blank"</Shared_part_override>
<Mic_level>1</Mic_level>
<Sole_source>X</Sole_source>
<Standard_inspection_code>Ref a</Standard_inspection_code>
<Production_material>Y</Production_material>
<Ils_status>N</Ils_status>
<Cots>C</Cots>
<Part_tolerance>ABCDEFGHIJKLMNOPQRST</Part_tolerance>
<Part_tolerance_u_of_m>BA</Part_tolerance_u_of_m>
<Vendor_lead_time>6666</Vendor_lead_time>
<Number_of_threads>666666666.333</Number_of_threads>
<Thread_series>ABCDEFGHIJKLMNO</Thread_series>
<Size_number>ABCDEFGH</Size_number>
<Range>ABCDEFGHIJKLMNOPQRST</Range>
<Range_u_of_m>ABCDEFGHIJ</Range_u_of_m>
<Schedule_a_item_number>ABCDEFGHMNOPQRST</Schedule_a_item_number>
<Revision>
<cpd:Document_id_spec_class xsi:nil="true" ref="cpd.document_id_spec_class-1"/>
</Revision>
<Env_legislation>
<cpd:Environmental_legislation xsi:nil="true" ref="cpd.environmental_legislation-1"/>
</Env_legislation>
<Apl>
<cpd:Apl xsi:nil="true" ref="cpd.apl-1"/>
</Apl>
<Nsn>
<cpd:Nsn xsi:nil="true" ref="cpd.nsn-1"/>
</Nsn>
<Cas>
<cpd:Cas xsi:nil="true" ref="cpd.cas-1"/>
</Cas>
<Part_audit>
<cpd:Part_audit xsi:nil="true" ref="cpd.part_audit-1"/>
</Part_audit>
<Applicability>
<cpd:Part_doc_applicability xsi:nil="true" ref="cpd.part_doc_applicability-1"/>
</Applicability>
</cpc:Insert-metric>
</cpc:uos>
1. Find all instances of Grommets in the data store.
1.1 Solution in XQuery
<cpc:uos>
for $b in cpc:uos/cpc:Grommet
return $b
</cpc:uos>
1.2 The same solution in XqueryX
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="xqueryx.xsl"?>
<xqx:module xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xqx="http://www.w3.org/2003/12/XQueryX"
xsi:schemaLocation="http://www.w3.org/2003/12/XQueryX xqueryx.xsd"
xmlns:cpc="urn:iso10303-28:schema/cpc">
<xqx:mainModule>
<xqx:queryBody>
<xqx:expr xsi:type="xqx:elementConstructor">
<xqx:tagName>cpc:uos</xqx:tagName>
<xqx:elementContent>
<xqx:expr xsi:type="xqx:flwrExpr">
<xqx:forClause>
<xqx:forClauseItem>
<xqx:typedVariableBinding>
<xqx:varName>b</xqx:varName>
</xqx:typedVariableBinding>
<xqx:forExpr>
<xqx:expr xsi:type="xqx:pathExpr">
<xqx:expr xsi:type="xqx:contextItemExpr"/>
<xqx:stepExpr>
<xqx:xpathAxis>child</xqx:xpathAxis>
<xqx:elementTest>
<xqx:nodeName>
<xqx:QName>cpc:Grommet</xqx:QName>
</xqx:nodeName>
</xqx:elementTest>
</xqx:stepExpr>
</xqx:expr>
</xqx:forExpr>
</xqx:forClauseItem>
</xqx:forClause>
<xqx:returnClause>
<xqx:expr xsi:type="xqx:variable">
<xqx:name>b</xqx:name>
</xqx:expr>
</xqx:returnClause>
</xqx:expr>
</xqx:elementContent>
</xqx:expr>
</xqx:queryBody>
</xqx:mainModule>
</xqx:module>
2. Find the Grommet with the following persistent identifer:
<X-href>urn:isetools.org:test</X-href>
<Id>urn:isetools.org:test</Id>
2.1 Solution in XQuery
<cpc:uos>
for $b in cpc:uos/cpc:Grommet
where $b/X-href = "urn:isetools.org:test" and
$b/Id = "urn:isetools.org:test"
return $b
</cpc:uos>
1.2 The same solution in XqueryX
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="xqueryx.xsl"?>
<xqx:module xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xqx="http://www.w3.org/2003/12/XQueryX"
xsi:schemaLocation="http://www.w3.org/2003/12/XQueryX xqueryx.xsd"
xmlns:cpc="urn:iso10303-28:schema/cpc">
<xqx:mainModule>
<xqx:queryBody>
<xqx:expr xsi:type="xqx:elementConstructor">
<xqx:tagName>cpc:uos</xqx:tagName>
<xqx:elementContent>
<xqx:expr xsi:type="xqx:flwrExpr">
<xqx:forClause>
<xqx:forClauseItem>
<xqx:typedVariableBinding>
<xqx:varName>b</xqx:varName>
</xqx:typedVariableBinding>
<xqx:forExpr>
<xqx:expr xsi:type="xqx:pathExpr">
<xqx:expr xsi:type="xqx:contextItemExpr"/>
<xqx:stepExpr>
<xqx:xpathAxis>child</xqx:xpathAxis>
<xqx:elementTest>
<xqx:nodeName>
<xqx:QName>cpc:Grommet</xqx:QName>
</xqx:nodeName>
</xqx:elementTest>
</xqx:stepExpr>
</xqx:expr>
</xqx:forExpr>
</xqx:forClauseItem>
</xqx:forClause>
<xqx:whereClause>
<xqx:expr xsi:type="xqx:operatorExpr" xqx:infix="true">
<xqx:opType>AND</xqx:opType>
<xqx:parameters>
<xqx:expr xsi:type="xqx:operatorExpr" xqx:infix="true">
<xqx:opType>=</xqx:opType>
<xqx:parameters>
<xqx:expr xsi:type="xqx:pathExpr">
<xqx:expr xsi:type="xqx:variable">
<xqx:name>b</xqx:name>
</xqx:expr>
<xqx:stepExpr>
<xqx:xpathAxis>child</xqx:xpathAxis>
<xqx:elementTest>
<xqx:nodeName>
<xqx:QName>X-href</xqx:QName>
</xqx:nodeName>
</xqx:elementTest>
</xqx:stepExpr>
</xqx:expr>
<xqx:expr xsi:type="xqx:stringConstantExpr">
<xqx:value>urn:isetools.org:test</xqx:value>
</xqx:expr>
</xqx:parameters>
</xqx:expr>
<xqx:expr xsi:type="xqx:operatorExpr" xqx:infix="true">
<xqx:opType>=</xqx:opType>
<xqx:parameters>
<xqx:expr xsi:type="xqx:pathExpr">
<xqx:expr xsi:type="xqx:variable">
<xqx:name>b</xqx:name>
</xqx:expr>
<xqx:stepExpr>
<xqx:xpathAxis>child</xqx:xpathAxis>
<xqx:attributeTest>
<xqx:nodeName>
<xqx:QName>Id</xqx:QName>
</xqx:nodeName>
</xqx:attributeTest>
</xqx:stepExpr>
</xqx:expr>
<xqx:expr xsi:type="xqx:stringConstantExpr">
<xqx:value>urn:isetools.org:test</xqx:value>
</xqx:expr>
</xqx:parameters>
</xqx:expr>
</xqx:parameters>
</xqx:expr>
</xqx:whereClause>
<xqx:returnClause>
<xqx:expr xsi:type="xqx:variable">
<xqx:name>b</xqx:name>
</xqx:expr>
</xqx:returnClause>
</xqx:expr>
</xqx:elementContent>
</xqx:expr>
</xqx:queryBody>
</xqx:mainModule>
</xqx:module>
3. Add a new cpc:Insert-metric
3.1 Solution in XUpdate
<xupdate:modifications version="1.0" xmlns:xupdate="http:www.xmldb.org/xupdate">
<xupdate:append select=".">
<xupdate:element name="cpc:Insert-metric">
<xupdate:attribute name="id">cpc.insert-metric-2</xupdate:attribute>
<Length>666666666.333</Length>
<Depth>666666666.333</Depth>
<Thickness>666666666.333</Thickness>
<Outside_diameter>666666666.333</Outside_diameter>
<Inside_diameter>666666666.333</Inside_diameter>
<Coating>ABCDEFGHIJKLMNOPQRSTUVWXY</Coating>
<Material_hardness>ABCDEFGHIJKLMNOPQRST</Material_hardness>
<Temperature_rating>6666666666</Temperature_rating>
<X-href>urn:isetools.org:test</X-href>
<Id>urn:isetools.org:test-2</Id>
<Version>urn:isetools.org:test</Version>
<Description>THE_XS_STRING</Description>
<Part_ownership_cage_code>ABCDEF</Part_ownership_cage_code>
<Part_revision>66666</Part_revision>
<Special_action>ABCDEFGHIJKLMNOPRSTUVWXYZ</Special_action>
<Cage_code>D162</Cage_code>
<Noun_name>ABSORBENT</Noun_name>
<Type1>ABCDEFGHIJKLMNOPQRSTUVWXY</Type1>
<Modifier>ABCDEFGHIJKLMNOPQRSTUVWXYZ</Modifier>
<Commodity_code1>ABCDE</Commodity_code1>
<Size_capacity_rating>ABCDEFGQRSTUVWXYZ</Size_capacity_rating>
<Special_condition>ABCDEFGHIJKLMNOUVWXYZ</Special_condition>
<Unit_of_measure_issue>BA</Unit_of_measure_issue>
<Unit_of_measure_buy>BA</Unit_of_measure_buy>
<Make_buy_code>B</Make_buy_code>
<Source_code>4 and 4A</Source_code>
<Shared_part_override>"blank"</Shared_part_override>
<Mic_level>1</Mic_level>
<Sole_source>X</Sole_source>
<Standard_inspection_code>Ref a</Standard_inspection_code>
<Production_material>Y</Production_material>
<Ils_status>N</Ils_status>
<Cots>C</Cots>
<Part_tolerance>ABCDEFGHIJKLMNOPQRST</Part_tolerance>
<Part_tolerance_u_of_m>BA</Part_tolerance_u_of_m>
<Vendor_lead_time>6666</Vendor_lead_time>
<Number_of_threads>666666666.333</Number_of_threads>
<Thread_series>ABCDEFGHIJKLMNO</Thread_series>
<Size_number>ABCDEFGH</Size_number>
<Range>ABCDEFGHIJKLMNOPQRST</Range>
<Range_u_of_m>ABCDEFGHIJ</Range_u_of_m>
<Schedule_a_item_number>ABCDENOPQRST</Schedule_a_item_number>
<Revision>
<cpd:Document_id_spec_class xsi:nil="true" ref="cpd.document_id_spec_class-1"/>
</Revision>
<Env_legislation>
<cpd:Environmental_legislation xsi:nil="true" ref="cpd.environmental_legislation-1"/>
</Env_legislation>
<Apl>
<cpd:Apl xsi:nil="true" ref="cpd.apl-1"/>
</Apl>
<Nsn>
<cpd:Nsn xsi:nil="true" ref="cpd.nsn-1"/>
</Nsn>
<Cas>
<cpd:Cas xsi:nil="true" ref="cpd.cas-1"/>
</Cas>
<Part_audit>
<cpd:Part_audit xsi:nil="true" ref="cpd.part_audit-1"/>
</Part_audit>
<Applicability>
<cpd:Part_doc_applicability xsi:nil="true" ref="cpd.part_doc_applicability-1"/>
</Applicability>
</xupdate:element>
</xupdate:append>
</xupdate:modifications>
4 Update a property value in a specific cpc:Insert-metric; change the value
of the Length property
4.1 Solution in xupdate
<xupdate:modifications version="1.0" xmlns:xupdate="http:www.xmldb.org/xupdate">
<xupdate:update select="cpc:Insert-metric[X-href = 'urn:isetools.org:test' and Id = 'urn:isetools.org:test']/Length">7700.666</xupdate:update>
</xupdate:append>
</xupdate:modifications>