PDXplorer™ PDX Viewer Software
Open PDX packages created by PDXpert® and other product lifecycle management software
IPC-2570 & Agile PDX files
Agile Software (years before it was acquired by Oracle) was one of the principal developers of the PDX package definition and a major participant in the IPC-2570 standards committee. Agile's PDX files are likely to be the most commonly-encountered.
Based on examinations of various PDX files, Agile appears to have developed and put into use several non-standard PDX XML definitions. The DTD that was released with Agile 9.0 appears to most closely follow Revision 1.0 of the IPC standard, with only differences in whitespace. Application of the 2571.DTD continues to be slightly non-standard, such as an Agile eXpress 9.0 requirement for inclusion of empty #IMPLIED attributes.
Most variations are minor, though they may affect PDX file viewers and general interoperability in supply chains that use both IPC-compliant PDX files and different versions of Agile. Regrettably, Agile has developed a small following of their own: at least one PDX tool publisher appears to have copied an early Agile DTD rather than use the official 2571.DTD.
These observations are based on examinations of PDX files created by Agile and other vendors, from 2001 through 2012. All dates and versions are only approximate, as the files themselves do not have adequate versioning information (they all claim <?pdx_version 1.0?>). Information has been obtained from PDX packages provided by third parties, and primarily rely upon the <?generated_by ... ?> andProductDataeXchangePackage thisDocumentGenerationDateTime. This analysis is not complete, and is simply intended to provide assistance to those trying to ensure interoperability between Agile and other implementations of IPC-2570. We would appreciate additions and corrections.
Until Agile 9.0, the IPC standard's globalCountryCode attribute was missing from two elements:
Several attributes have been changed from #IMPLIED to #REQUIRED or vice versa. The most common example is that the IPC-2571 optional isTopLevel attribute was #REQUIRED in the following elements:
The reverse change occurred in the ManufacturerPart element's mandatorymanufacturerPartIdentifierattribute, which Agile assigned as #IMPLIED until Agile OnRamp 8.5 (or perhaps 8.0). Agile 9.0 has reverted to the IPC standard.
Obviously, the easiest implementation solution is to treat the IPC attributes as #REQUIRED which, given the nature of these attributes, should not prove too difficult to enforce in computer systems generating PDX packages.
Some elements have #IMPLIED attributes that are nonetheless included in elements. For example, in theProductDataeXchangePackageelement, these empty attributes have been observed
- packageType=""
- description=""
- thisDocumentCopyright=""
Similarly, essentially all #IMPLIED attributes ofContact are included, even when empty.
It appears that these empty attributes serve as placeholders (or a bug work-around) for some versions of Agile eXpress. For instance, if a PDX package is opened in Agile eXpress 9.0 without the Contact's empty attributes, an existing attribute value will be incorrectly replicated into all empty attributes.
These empty inclusions are, however, inconsistently applied (see, for example, Agile's file Attachment attributes, below). At the cost of slightly larger PDX packages, your PDX generator may adopt the view that it's better to include all empty CDATA attributes to ensure Agile can read the file.
At various times until Agile 9.0, the attribute capitalization varied from the2571.DTD:
- IPC Element: AdditionalAttribute
- IPC Attribute: dataTypeOther
- Agile attribute: DataTypeOther
- IPC Element: Item
- IPC Attribute: makeBuyOther
- Agile attribute: MakeBuyOther
XML tags are case-senstive. Capitalization inconsistencies may cause problems with any XML parsing engine that uses an external 2571.DTD instead of the embedded DTD.
IPC-2570 uses space characters rather than tabs, and generally is more liberal with whitespace. All of Agile PDX files have been observed to use tabs rather than spaces, though their application is inconsistent between software versions.
The 2571.DTD uses Windows-style EOL values, that is "CRLF". Many Agile PDX packages intermix Windows and Unix ("LF") EOL values. For example, in Agile 9.0, the DTD preamble uses Windows CRLF but the package data uses Unix LF. (Oddly enough, an Agile OnRamp 8.5 PDX file was observed to be the direct opposite.)
Whitespace differences should not be expected to cause problems with commercial XML parsing engines.
Due to ambiguities in the attribute definitions of the IPC-2571Attachment element, there have been different implementations from various suppliers and, in fact, multiple implementations by the same supplier. These ambiguities are principally related to interpretation of the referenceName, universalResourceIdentifier, andfileIdentifier attributes.
Agile eXpress 9.0 (and probably earlier versions) does not recognize the file://filename notation described in IPC-2571, section 8.1 universalResourceIdentifier.
The following samples from various PDX packages include, where possible, bothisFileIn=Yes andisFileIn=No variants.
Refer to PDXpert software'sIPC-2570 implementation of a file attachment.
<Attachment referenceName="Atomic Time Clock Datasheet.pdf" universalResourceIdentifier="file://PDX-4bf1bcc21cec.Atomic Time Clock Datasheet.pdf" fileIdentifier="PDX-4bf1bcc21cec" versionIdentifer="" fileSize="61399" checkSum="" isFileIn="Yes" description="" globalMimeTypeQualifierCode="" attachmentModificationDate="2004-05-11T11:15:22" />
<Attachment referenceName="" universalResourceIdentifier="/pdxplorer/" fileIdentifier="" versionIdentifer="" fileSize="" checkSum="" isFileIn="No" description="" globalMimeTypeQualifierCode="" attachmentModificationDate="" />
<Attachment description="[No Description]" universalResourceIdentifier="58472619.AgileWord.doc" fileIdentifier="10175" globalMimeTypeQualifierCode="doc" fileSize="19456" versionIdentifer="0" attachmentModificationDate="2001-07-24T14:38:11Z" isFileIn="Yes"/>
<Attachment description="L1 Explode" universalResourceIdentifier="L1 Explode 0606 (1).txt" fileIdentifier="39759204" globalMimeTypeQualifierCode="txt" fileSize="729427" versionIdentifer="0" attachmentModificationDate="2003-06-11T10:58:33Z" isFileIn="Yes"/>
<Attachment description="[No Description]" universalResourceIdentifier="Misc Parts.pdf" fileIdentifier="38937720" globalMimeTypeQualifierCode="pdf" fileSize="10458" versionIdentifer="0" attachmentModificationDate="2003-05-09T14:17:46Z" isFileIn="No"/>
<Attachment universalResourceIdentifier="Lead-free resistor.msg" fileIdentifier="13365917" description="cust mail" fileSize="30208" attachmentModificationDate="2006-01-11T15:51:53Z" versionIdentifer="0" globalMimeTypeQualifierCode="msg" isFileIn="Yes">
<Attachment universalResourceIdentifier="123_45_assy.zip" fileIdentifier="15754767" description="[No Description]" fileSize="371120" attachmentModificationDate="2006-04-30T11:52:50Z" versionIdentifer="0" globalMimeTypeQualifierCode="zip" isFileIn="No">
<Attachment isFileIn="No" universalResourceIdentifier="https://www.molex.com/molex/products/datasheet.jsp?part=active/0022552042_CRIMP_HOUSINGS.xml" fileIdentifier="7833579" versionIdentifer="2" fileSize="0" globalMimeTypeQualifierCode="url" attachmentModificationDate="2011-10-21T19:34:28Z">
<Attachment isFileIn="Yes" universalResourceIdentifier="WY3736.pdf" fileIdentifier="6993921" versionIdentifer="1" fileSize="132885" globalMimeTypeQualifierCode="pdf" attachmentModificationDate="2011-05-15T17:23:46Z">
<Attachment description="PRODUCT SPECIFICATION" attachmentModificationDate="2009-07-30T13:14:35Z" globalMimeTypeQualifierCode="pdf" fileSize="64171" versionIdentifer="1" fileIdentifier="236267131" universalResourceIdentifier="PS042213-001F.pdf" isFileIn="Yes">
<Attachment referenceName="ASSY, BRACKET, WELDED" universalResourceIdentifier="C282021.easm" fileIdentifier="1270294" versionIdentifer="B-03" fileSize="27813" isFileIn="Yes" description="" globalMimeTypeQualifierCode="application/octet-stream" attachmentModificationDate="2007-01-24T09:11:39+05:30" >
<Attachment universalResourceIdentifier="1308899zum000~00.prt" fileIdentifier="1308899" description="NATIVE" fileSize="43725" attachmentModificationDate="" versionIdentifer="" globalMimeTypeQualifierCode="" isFileIn="Yes"/>
<Attachment description="avl" universalResourceIdentifier="10804-00.pdf" fileIdentifier="903255" globalMimeTypeQualifierCode="" fileSize="1460486" versionIdentifer="" attachmentModificationDate="" isFileIn="Yes"/>
<Attachment description="chart" universalResourceIdentifier="SB2A-16A-001-991A.pdf" fileIdentifier="1126709" globalMimeTypeQualifierCode="" fileSize="56229" versionIdentifer="" attachmentModificationDate="" isFileIn="No"/>
<Attachment isFileIn="Yes" universalResourceIdentifier="CA22451.pdf" fileIdentifier="6263423" versionIdentifer="1" fileSize="37934" description="Cable Assembly" globalMimeTypeQualifierCode="pdf" attachmentModificationDate="2012-08-12T14:11:58Z">
<Attachment isFileIn="No" universalResourceIdentifier="Cost analysis.xls" fileIdentifier="6283011" versionIdentifer="3" fileSize="28192" description="Reference Document" globalMimeTypeQualifierCode="xlsx" attachmentModificationDate="2012-09-30T19:11:13Z">
