This is an annotated simple annotated ConventionalPrinting job to illustrate the differences and similarities of JDF and XJDF.
The XJDF was created automatically using the CIP4 JDF editor, which in turn uses utility classes which are available in the CIP4 open source Java Library - see: JDFLibJ.
- Rainer Prosi add Product definition to this example
XJDF
JDF
Remarks
XJDF Header
Code Block | ||
---|---|---|
| ||
<?xml version="1.0" encoding="UTF-8"?> <XJDF Category="MISCPS.Printing" CommentURL="http://www.example.com" DescriptiveName="MISCPS Golden Ticket Example Job - version: CIP4 JDF Writer Java 1.5 BLD 81" ID="n_000001" JobID="Job_000010" JobPartID="n_000001" MaxVersion="2.0" Types="InkZoneCalculation ConventionalPrinting" Version="2.0" xmlns="http://www.CIP4.org/JDFSchema_2_0"> <AuditPool> <Created AgentName="CIP4 JDFEditor" AgentVersion="Build version CIP4 JDF Writer Java 1.5 BLD 81" ID="a_001024" TimeStamp="2014-11-20T12:04:15+08:00"> <Employee DescriptiveName="XJDF Converter"/> </Created> </AuditPool> |
JDF Header
Code Block | ||
---|---|---|
| ||
<?xml version="1.0" encoding="UTF-8"?> <JDF Category="MISCPS.Printing" CommentURL="http://www.example.com" DescriptiveName="MISCPS Golden Ticket Example Job - version: CIP4 JDF Writer Java 1.5 BLD 81" ID="n_000001" JobID="Job_000010" JobPartID="n_000001" MaxVersion="1.5" Status="Waiting" Type="ProcessGroup" Types="InkZoneCalculation ConventionalPrinting" Version="1.5" xmlns="http://www.CIP4.org/JDFSchema_1_1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ProcessGroup"> <AuditPool> <Created AgentName="CIP4 JDFEditor" AgentVersion="Build version CIP4 JDF Writer Java 1.5 BLD 81" ID="a_000002" TimeStamp="2014-11-20T12:03:45+08:00"/> </AuditPool> <ResourcePool> ... <ResourceLinkPool> ... |
The root tag, version information and schema are obviously different.
Whereas JDF allows for multiple JDF nodes, XJDF requires exactly one.
Audits have remained mostly unchanged.
ResourceLinkPool and ResourcePool have been removed. The ParameterSet and ResourceSet elements reside directly in the only XJDF.
ColorantControl
Code Block | ||
---|---|---|
| ||
<ParameterSet<ResourceSet ID="r_000003" Name="ColorantControl" Usage="Input"> <Parameter<Resource ID="r_000003.1" Status="Available"> <ColorantControl ColorRef="r_000004" ColorantOrder="Black Cyan Magenta Yellow" ProcessColorModel="DeviceCMYK"/> </Parameter>Resource> </ParameterSet>ResourceSet> |
ColorantControl
Code Block | ||
---|---|---|
| ||
<ColorantControl class="Parameter" ID="r_000003" ProcessColorModel="DeviceCMYK" Status="Available"> <ColorPoolRef rRef="r_000004"/> <ColorantOrder> <SeparationSpec Name="Black"/> <SeparationSpec Name="Cyan"/> <SeparationSpec Name="Magenta"/> <SeparationSpec Name="Yellow"/> </ColorantOrder> </ColorantControl> ... <ColorantControlLink Usage="Input" rRef="r_000003"/> |
ColorantControlLink and ColorantControl have been merged into one ParameterSet.
Separations are referred to by attribute lists rather than SepaationSpec elements.
Color
Code Block | ||
---|---|---|
| ||
<ParameterSet<ResourceSet ID="r_000004" Name="Color"> <Parameter<Resource ID="r_000004.1" Status="Unavailable"> <Part Separation="Black"/> <Color ActualColorName="Black" CMYK="0 0 0 1"/> </Parameter>Resource> <Parameter<Resource ID="r_000004.2" Status="Unavailable"> <Part Separation="Cyan"/> <Color ActualColorName="Cyan" CMYK="1 0 0 0"/> </Parameter>Resource> <Parameter<Resource ID="r_000004.3" Status="Unavailable"> <Part Separation="Magenta"/> <Color ActualColorName="Magenta" CMYK="0 1 0 0"/> </Parameter>Resource> <Parameter<Resource ID="r_000004.4" Status="Unavailable"> <Part Separation="Yellow"/> <Color ActualColorName="Yellow" CMYK="0 0 1 0"/> </Parameter>Resource> </ParameterSet>ResourceSet> |
ColorPool
Code Block | ||
---|---|---|
| ||
<ColorPool class="Parameter" ID="r_000004" Status="Unavailable"> <Color CMYK="0 0 0 1" class="Parameter" Name="Black"/> <Color CMYK="1 0 0 0" class="Parameter" Name="Cyan"/> <Color CMYK="0 1 0 0" class="Parameter" Name="Magenta"/> <Color CMYK="0 0 1 0" class="Parameter" Name="Yellow"/> </ColorPool> |
ColorPool is a "standard" partitioned Color resource rather than a specific animal.
The name is a token that SHOULD be matched to an ActualColorName that is a string may contain blanks and other special characters.
This allows separations to be referenced as NMTOKENS lists rather than requiring expilcit SeparationSpec elements.
ConventionalPrintingParams
Code Block | ||
---|---|---|
| ||
<ParameterSet<ResourceSet ID="r_000005" Name="ConventionalPrintingParams" Usage="Input"> <Parameter<Resource ID="r_000005.1" Status="Available"> <ConventionalPrintingParams PrintingType="SheetFed" WorkStyle="Simplex"/> </Parameter>Resource> </ParameterSet>ResourceSet> |
ConventionalPrintingParams + Link
Code Block | ||
---|---|---|
| ||
<ConventionalPrintingParams class="Parameter" ID="r_000005" PrintingType="SheetFed" Status="Available" WorkStyle="Simplex"/> ... <ConventionalPrintingParamsLink Usage="Input" rRef="r_000005"/> |
In JDF, a resource is only applicable to the JDF that contains a matching ResourceLink. In XJDF the two concepts have been combined into a "Set" entry that is always applicable. Thus you need no longer search for the matching resource to a ResourceLink.
Generic attributes such as Usage are defined in explicit elements which are the parent elements of the specific resources such as ConventionalPrintingParams.
Thus each table in the specification is self contained and does not require an implementor to follow the tree of inheritence in the specification.
Partitioned NodeInfo ParameterSet
Code Block | ||
---|---|---|
| ||
<ParameterSet<ResourceSet ID="r_000011" Name="NodeInfo" Usage="Input"> <Parameter<Resource DescriptiveName="Printing forJDFAttributeMap: {(SheetName = Sheet1) (SignatureName = Sig1) " ID="r_000011.1" Status="Available"> <Part SheetName="Sheet1" SignatureName="Sig1"/> <NodeInfo NodeStatus="Waiting"> <Employee PersonalID="personalID1" Roles="CSR"/> </NodeInfo> </Parameter>Resource> </ParameterSet>ResourceSet> |
Partitioned NodeInfo
Code Block | ||
---|---|---|
| ||
<NodeInfo class="Parameter" ID="r_000011" NodeStatus="Waiting" PartIDKeys="SignatureName SheetName Side Separation" PartUsage="Implicit" Status="Available"> <Employee class="Implementation" PersonalID="personalID1" Roles="CSR"/> <NodeInfo SignatureName="Sig1"> <NodeInfo DescriptiveName="Printing forJDFAttributeMap: {(SheetName = Sheet1) (SignatureName = Sig1) " NodeStatus="Waiting" SheetName="Sheet1"/> </NodeInfo> </NodeInfo> ... <NodeInfoLink Usage="Input" rRef="r_000011"/> |
Partitioning always is written as a linear list with Part elements rather than a hierarchical structure.
CustomerInfo
Code Block | ||
---|---|---|
| ||
<ParameterSet<ResourceSet ID="r_000012" Name="CustomerInfo" Usage="Input"> <Parameter<Resource ID="r_000012.1" Status="Available"> <CustomerInfo ContactRef="r_000013.1" CustomerID="customerID" CustomerJobName="customer job name" CustomerOrderID="customerOrder_1"/> </Parameter>Resource> </ParameterSet>ResourceSet> |
CustomerInfo
Code Block | ||
---|---|---|
| ||
<CustomerInfo class="Parameter" CustomerID="customerID" CustomerJobName="customer job name" CustomerOrderID="customerOrder_1" ID="r_000012" PartUsage="Implicit" Status="Available"> <ContactRef rRef="r_000013"/> </CustomerInfo> ... <CustomerInfoLink CombinedProcessIndex="0 1" Usage="Input" rRef="r_000012"/> |
References, if used at all, are simple ID-IDRef pairs rather than
<ContactRef rRef="r_000013"/>
that may even contain additional partitioning data, requiring specific lookup functions.
Contact
Code Block | ||
---|---|---|
| ||
<ParameterSet<ResourceSet ID="r_000013" Name="Contact"> <Parameter<Resource ID="r_000013.1" Status="Available"> <Contact ContactTypes="Customer Administrator"> <Person FamilyName="Töpfer" FirstName="Harald"/> <ComChannel ChannelType="Phone" Locator="tel:+666.42.123456"/> <ComChannel ChannelType="Fax" Locator="tel:+666.42.123455"/> <ComChannel ChannelType="Email" Locator="mailto:harald.topfer@thepits.net"/> <Company OrganizationName="The Pits"/> </Contact> </Parameter>Resource> </ParameterSet>ResourceSet> |
Contact
Code Block | ||
---|---|---|
| ||
<Contact class="Parameter" ContactTypes="Customer Administrator" ID="r_000013" Status="Available"> <Person class="Parameter" FamilyName="Töpfer" FirstName="Harald"/> <ComChannel ChannelType="Phone" class="Parameter" Locator="tel:+666.42.123456"/> <ComChannel ChannelType="Fax" class="Parameter" Locator="tel:+666.42.123455"/> <ComChannel ChannelType="Email" class="Parameter" Locator="mailto:harald.topfer@thepits.net"/> <Company class="Parameter" OrganizationName="The Pits"/> </Contact> |
Preview
Code Block | ||
---|---|---|
| ||
<ParameterSet<ResourceSet ID="r_000014" Name="Preview" Usage="Input"> <Parameter<Resource ID="r_000014.1" Status="Incomplete"> <Part Separation="Black" SheetName="Sheet1" Side="Front" SignatureName="Sig1"/> <Preview PreviewFileType="PNG" PreviewUsage="Separation"/> </Parameter>Resource> <Parameter<Resource ID="r_000014.2" Status="Incomplete"> <Part Separation="Cyan" SheetName="Sheet1" Side="Front" SignatureName="Sig1"/> <Preview PreviewFileType="PNG" PreviewUsage="Separation"/> </Parameter>Resource> <Parameter<Resource ID="r_000014.3" Status="Incomplete"> <Part Separation="Magenta" SheetName="Sheet1" Side="Front" SignatureName="Sig1"/> <Preview PreviewFileType="PNG" PreviewUsage="Separation"/> </Parameter>Resource> <Parameter<Resource ID="r_000014.4" Status="Incomplete"> <Part Separation="Yellow" SheetName="Sheet1" Side="Front" SignatureName="Sig1"/> <Preview PreviewFileType="PNG" PreviewUsage="Separation"/> </Parameter>Resource> <Parameter<Resource ID="r_000014.5" Status="Incomplete"> <Part Separation="Black" SheetName="Sheet1" Side="Back" SignatureName="Sig1"/> <Preview PreviewFileType="PNG" PreviewUsage="Separation"/> </Parameter>Resource> <Parameter<Resource ID="r_000014.6" Status="Incomplete"> <Part Separation="Cyan" SheetName="Sheet1" Side="Back" SignatureName="Sig1"/> <Preview PreviewFileType="PNG" PreviewUsage="Separation"/> </Parameter>Resource> <Parameter<Resource ID="r_000014.7" Status="Incomplete"> <Part Separation="Magenta" SheetName="Sheet1" Side="Back" SignatureName="Sig1"/> <Preview PreviewFileType="PNG" PreviewUsage="Separation"/> </Parameter>Resource> <Parameter<Resource ID="r_000014.8" Status="Incomplete"> <Part Separation="Yellow" SheetName="Sheet1" Side="Back" SignatureName="Sig1"/> <Preview PreviewFileType="PNG" PreviewUsage="Separation"/> </Parameter>Resource> </ParameterSet>ResourceSet> |
Preview
Code Block | ||
---|---|---|
| ||
<Preview class="Parameter" ID="r_000014" PartIDKeys="SignatureName SheetName Side Separation" PartUsage="Explicit" PreviewFileType="PNG" PreviewUsage="Separation" Status="Incomplete"> <Preview SignatureName="Sig1"> <Preview SheetName="Sheet1"> <Preview Side="Front"> <Preview Separation="Black" Status="Incomplete"/> <Preview Separation="Cyan" Status="Incomplete"/> <Preview Separation="Magenta" Status="Incomplete"/> <Preview Separation="Yellow" Status="Incomplete"/> </Preview> <Preview Side="Back"> <Preview Separation="Black" Status="Incomplete"/> <Preview Separation="Cyan" Status="Incomplete"/> <Preview Separation="Magenta" Status="Incomplete"/> <Preview Separation="Yellow" Status="Incomplete"/> </Preview> </Preview> </Preview> </Preview> ... <PreviewLink CombinedProcessIndex="0 1" Usage="Input" rRef="r_000014"/> |
Paper Media including consumption reporting
Code Block | ||
---|---|---|
| ||
<ResourceSet ID="r_000006" Name="Media" Usage="Input"> <Resource DescriptiveName="the paper to print on" ID="r_000006.1" ProductID="paperID" Status="Unavailable"> <Media Dimension="2891.33858268 1984.2519685" MediaType="Paper" Thickness="112.5" Weight="90"/> <AmountPool> <PartAmount Amount="1000" MaxAmount="1100"> <Part Condition="Good" SheetName="Sheet1" SignatureName="Sig1"/> </PartAmount> <PartAmount MaxAmount="100"> <Part Condition="Waste" SheetName="Sheet1" SignatureName="Sig1"/> </PartAmount> </AmountPool> </Resource> </ResourceSet> |
Paper Media including consumption reporting
Code Block | ||
---|---|---|
| ||
<Media class="Consumable" DescriptiveName="the paper to print on" Dimension="2891.33858268 1984.2519685" ID="r_000006" MediaType="Paper" ProductID="paperID" Status="Unavailable" Thickness="112.5" Weight="90"/> ... <MediaLink Usage="Input" rRef="r_000006"> <AmountPool> <PartAmount Amount="1000" MaxAmount="1100"> <Part Condition="Good" SheetName="Sheet1" SignatureName="Sig1"/> </PartAmount> <PartAmount MaxAmount="100"> <Part Condition="Waste" SheetName="Sheet1" SignatureName="Sig1"/> </PartAmount> </AmountPool> </MediaLink> |
JDF allowes Amount definitions both in the resource and the ResourceLink. XJDF has only one container object, in our case it is the <Resource> that contains an AmountPool.
Amount handling - specifically waste handling is currently under discussion and may change
ExposedMedia (Plates)
Code Block | ||
---|---|---|
| ||
<ResourceSet ID="r_000007" Name="ExposedMedia" ProcessUsage="Plate" Usage="Input"> <Resource ID="r_000007.1" Status="Unavailable"> <Part Separation="Black" SheetName="Sheet1" Side="Front" SignatureName="Sig1"/> <ExposedMedia MediaRef="r_000008.1"/> </Resource> <Resource ID="r_000007.2" Status="Unavailable"> <Part Separation="Cyan" SheetName="Sheet1" Side="Front" SignatureName="Sig1"/> <ExposedMedia MediaRef="r_000008.1"/> </Resource> <Resource ID="r_000007.3" Status="Unavailable"> <Part Separation="Magenta" SheetName="Sheet1" Side="Front" SignatureName="Sig1"/> <ExposedMedia MediaRef="r_000008.1"/> </Resource> <Resource ID="r_000007.4" Status="Unavailable"> <Part Separation="Yellow" SheetName="Sheet1" Side="Front" SignatureName="Sig1"/> <ExposedMedia MediaRef="r_000008.1"/> </Resource> <Resource ID="r_000007.5" Status="Unavailable"> <Part Separation="Black" SheetName="Sheet1" Side="Back" SignatureName="Sig1"/> <ExposedMedia MediaRef="r_000008.1"/> </Resource> <Resource ID="r_000007.6" Status="Unavailable"> <Part Separation="Cyan" SheetName="Sheet1" Side="Back" SignatureName="Sig1"/> <ExposedMedia MediaRef="r_000008.1"/> </Resource> <Resource ID="r_000007.7" Status="Unavailable"> <Part Separation="Magenta" SheetName="Sheet1" Side="Back" SignatureName="Sig1"/> <ExposedMedia MediaRef="r_000008.1"/> </Resource> <Resource ID="r_000007.8" Status="Unavailable"> <Part Separation="Yellow" SheetName="Sheet1" Side="Back" SignatureName="Sig1"/> <ExposedMedia MediaRef="r_000008.1"/> </Resource> </ResourceSet> <ResourceSet ID="r_000008" Name="Media"> <Resource DescriptiveName="the plates to use" ID="r_000008.1" Status="Available"> <Media Dimension="2919.68503937 2012.5984252" MediaType="Plate"/> </Resource> </ResourceSet> |
ExposedMedia (Plates)
Code Block | ||
---|---|---|
| ||
<ExposedMedia class="Handling" ID="r_000007" PartIDKeys="SignatureName SheetName Side Separation" PartUsage="Explicit" Status="Unavailable"> <MediaRef rRef="r_000008"/> <ExposedMedia SignatureName="Sig1"> <ExposedMedia SheetName="Sheet1"> <ExposedMedia Side="Front"> <ExposedMedia Separation="Black"/> <ExposedMedia Separation="Cyan"/> <ExposedMedia Separation="Magenta"/> <ExposedMedia Separation="Yellow"/> </ExposedMedia> <ExposedMedia Side="Back"> <ExposedMedia Separation="Black"/> <ExposedMedia Separation="Cyan"/> <ExposedMedia Separation="Magenta"/> <ExposedMedia Separation="Yellow"/> </ExposedMedia> </ExposedMedia> </ExposedMedia> </ExposedMedia> <Media class="Consumable" DescriptiveName="the plates to use" Dimension="2919.68503937 2012.5984252" ID="r_000008" MediaType="Plate" PartUsage="Implicit" Status="Available"/> ... <ExposedMediaLink ProcessUsage="Plate" Usage="Input" rRef="r_000007"/> |
Output Component
Code Block | ||
---|---|---|
| ||
<ResourceSet ID="r_000009" Name="Component" Usage="Output"> <Resource DescriptiveName="Description for Component part# 0" ID="r_000009.1" Status="Unavailable"> <Part SheetName="Sheet1" SignatureName="Sig1"/> <AmountPool> <PartAmount Amount="1000"> <Part Condition="Good" SheetName="Sheet1" SignatureName="Sig1"/> </PartAmount> </AmountPool> <Component ComponentType=" Sheet" Dimensions="2891.33858268 1984.2519685 0"/> </Resource> </ResourceSet> |
Output Component
Code Block | ||
---|---|---|
| ||
<Component class="Quantity" ComponentType="FinalProduct Sheet" Dimensions="2891.33858268 1984.2519685 0" ID="r_000009" PartIDKeys="SignatureName SheetName" ProductType="Unknown" Status="Unavailable"> <Component SignatureName="Sig1"> <Component DescriptiveName="Description for Component part# 0" SheetName="Sheet1"/> </Component> </Component> ... <ComponentLink Usage="Output" rRef="r_000009"> <AmountPool> <PartAmount Amount="1000"> <Part Condition="Good" SheetName="Sheet1" SignatureName="Sig1"/> </PartAmount> </AmountPool> </ComponentLink> |
End of File
Code Block | ||
---|---|---|
| ||
</XJDF> |
End of File
Code Block | ||
---|---|---|
| ||
</ResourcePool> ... </ResourceLinkPool> </JDF> |