Before looking at specifics of the underlying XML techniques, we need to examine some basics of organizing and structuring metadata. Too often we see metadata provided as an amorphous blob of elements and attributes with little regard to using parent/child structures to create groups of related elements ”and thus easily accessible information blocks. The ebXML specifications refer to these accessible information blocks as core components ” building blocks of business information that can be easily and consistently snapped together to create a coherent business information exchange (see Figure 9.3). Figure 9.3. CatXML information hierarchy.
Once a well-defined group structure is established, a higher level of organization can then be created by separating the XML itself into physical components that are each included in a controlling parent template. This template approach allows trading partners to be flexible about the components they select, and the versions and sub-definitions they apply to the master templates. (All of these techniques can be found in the CatXML syntax examples. The value of good semantic models cannot be overemphasized here. Well-implemented XML should provide the foundation and stepping stones to emerging business applications.) Next , CatXML seeks to address the problems of naming and semantics. Ultimately, ebXML registry systems based on reference unique identifiers (UIDs) will be the implementation of choice as they become available later in 2001. The NIST prototype is a precursor of these industry-enabling commercial registries. The UID linkage references provide neutral data identifiers called Bizcodes that allow collaborating businesses to synchronize their business semantics by labeling each piece of information exchanged. Therefore, the context and meaning of data sent by one trading partner can be readily matched to similar uses by the receiving business systems. Similarly, the transport of CatXML messages uses an access/content input/response output model supported by the ebXML messaging services specifications and the SOAP messaging protocols. Figure 9.4 shows the actual structure of CatXML payloads delivered by ebXML message envelopes. Figure 9.4. CatXML interchange hierarchy.
The ebXML work has developed similar transport formats for registry interchanges, and these SOAP-based transactions are used in registry prototypes to show how metadata attached to catalog information can be queried, retrieved, and used by a web browser. Rounding out this section, Listing 9.1 provides a sample and more details of the actual CatXML syntax. Examples of the CatXML DTD and XML documents can be downloaded from the CatXML web site, along with documentation. Listing 9.1 CatXML Controlling a Parent DTD Template Fragment<! CatXML base DTD. > <! Version 0.21 August 2000 > <! Conforms to ebXML core component specifications > <! > <! To provide maximum flexibility in deploying > <! customized versions, the following business > <! functional information blocks are included as > <! five related DTD fragments. This allows just pieces > <! of the overall structure to be redefined selectively > <! > <! Address information > <! Contact information > <! Shipping information > <! USGov product information > <! Warehouse stock information > <! ************************************************************************************* * Main definition of CatXML content schema structure Version 1.1 * * * ************************************************************************************* > <!ELEMENT Input (Schema, Content)> <!ELEMENT Schema (#PCDATA)> <!ELEMENT Content (Vendor?, Supplier?, StockInfo?, ShipInfo?, Item)> <! Establish link to UID reference location > <!ATTLIST Content UIDref CDATA #FIXED "http://www.catxml.org/UID/datatypes.xml" > <!ELEMENT Vendor (CompanyID, Name?, Address?, Contact?)> <!ATTLIST Vendor vendorID ID #IMPLIED > <!ELEMENT CompanyID (#PCDATA)> <!ATTLIST CompanyID context (Vendor Supplier Manufacturer Other) "Vendor" idType (DUNS Local USDoD EIN TaxID Other) "DUNS" > <!ELEMENT Name (#PCDATA)> <!ENTITY % addressInfo SYSTEM "CatXML-address-V1.dtd"> <!ENTITY % contactInfo SYSTEM "CatXML-contact-V1.dtd"> <!ENTITY % shippingInfo SYSTEM "CatXML-shipping-V1.dtd"> <!ENTITY % usgovDoDInfo SYSTEM "CatXML-usgovDoD-V1.dtd"> <!ENTITY % stockInfo SYSTEM "CatXML-warehouse-V1.dtd"> %addressInfo; %contactInfo; %shippingInfo; %usgovDoDInfo; %stockInfo; <!ELEMENT Supplier (CompanyID, Name?, Address?, Contact?)> <!ATTLIST Supplier supplierID ID #IMPLIED > <!ELEMENT Item (supplierItemNo, (partName prodName), barcode?, ((unitPrice, pricingType?) priceRecord+), (MFGPartNo MFGProdNo)?, MFGName?, itemCategory?, DoDcontent?, productOptions?, ordering, description?, productImage?, punchoutURL?, CatalogID?, remarks?, sampleInfo?)> <!ATTLIST Item ItemID ID #IMPLIED UID CDATA #FIXED "CAT10501" > <!ELEMENT supplierItemNo (#PCDATA)> <!ATTLIST supplierItemNo UID CDATA #FIXED "CAT10510" > <!ELEMENT barcode (#PCDATA)> <!ATTLIST barcode codeType (UPC EAN) "UPC" UID CDATA #FIXED "CAT10502" > <!ELEMENT unitPrice (#PCDATA) > <!ATTLIST unitPrice currencyID %isoCurrencyCode; "1001" pricingType (retail wholesale export any) "any" alternateAmount %number; #IMPLIED alternateCurrency %isoCurrencyCode; #IMPLIED alternateType (retail wholesale export any) "any" expiryDate %datetime; #IMPLIED UID CDATA #FIXED "CAT10503"> The next section completes this technical review by considering broader deployment needs. |