Zusätzliche Funktionen von Windchill > Serviceinformationsverwaltung > Windchill Service Information Manager und Windchill Service Parts anpassen > Publizierung anpassen > Serviceanwendung
  
Serviceanwendung
Serviceanwendung – Übersicht
Die Serviceanwendung auf dem Arbortext Publishing Engine Server führt die anfängliche Umwandlung der vom WVS SIS-Worker gesendeten XML-Inhalte und -Markups durch und bereitet diese für die Publizierung vor.
Die Serviceanwendung muss auf dem Arbortext Publishing Engine Server installiert und aktiviert werden. Standardmäßig ist sie in folgendem Verzeichnis abgelegt:
Arbortext-path\application\com.ptc.arbortext.service
Beschreibung des Servicedokumenttyps
Das Verzeichnis doctypes der Serviceanwendung enthält die Schemata pubstruct und partslist, mit denen die generischen Formen der Publikationsstruktur- und Teilelistendokumente, die vom SIS-Worker an den Arbortext Publishing Engine Server gesendet werden, verwaltet werden können.
Das Verzeichnis doctypes der Serviceanwendung enthält darüber hinaus das Schema pubspec, mit dem die vom SIS-Worker gesendeten Eingabe-Publizierspezifikationen in Publizierparameter für den Publizierungsprozess umgewandelt werden können. Eine Datei pubspec.xml mit Standardwerten ist in folgendem Verzeichnis gespeichert:
application\com.ptc.arbortext.service\lib\pubspec.xml
Markup umwandeln
Die Serviceanwendung enthält die XLST-Formatvorlagen, mit denen die eingehenden Inhalte und Markups mithilfe der Beispielanwendung "Technical Information" in ein für die Publizierung geeignetes XML-Format transformiert werden. Da dies ein funktionierendes Beispiel ist, das den Prozess von der Umwandlung bis hier zur Publizierung abdeckt, entsprechen die umgewandelten Dokumente de DITA-Dokumenttyp-Schemata der Anwendung "Technical Information". Ein erfahrener Formatvorlagenautor kann die kommentierten Anweisungen in der XSL-Umwandlungsformatvorlage der Serviceanwendung als Ausgangspunkt verwenden.
Die XSLT-Beispielformatvorlagen stehen hier zur Verfügung:
Arbortext-path\application\com.ptc.arbortext.service\doctypes
Die im Unterverzeichnis pubstruct gespeicherte Datei techinfomap.xsl (die ditamap-common.xsl referenziert) wandelt eine Publikationsstruktur in die Zuordnung der Anwendung "Technical Information" und deren Themen um.
Die ebenfalls im Unterverzeichnis pubstruct abgelegte Datei DMPmap.xsl (die DMPmap-base.xsl und DMPmap-pvz.xsl referenziert) transformiert eine Informationsstruktur in ein für die Paketpublizierung geeignetes Format um.
Die Datei techinfo.xsl im Unterverzeichnis partslist wandelt eine Teileliste in eine illustrierte Teilebeschreibung (IPD, Illustrated Part Description) um.
Diese XSL-Transformationsformatvorlagen stellen kommentierte Richtlinien bereit, die zeigen, wie sie als Muster für die von Ihnen benötigten Anpassungen, die Sie für den eigenen Dokumenttyp durchführen müssen, verwendet werden können. Diese Anwendungen werden in einem application-Verzeichnis auf dem Server der Arbortext Publishing Engine bereitgestellt.
XML-Markup des pubstruct-Schemas
Das pubstruct-Schema stellt die Struktur für die generische Form des verallgemeinerten XML-Dokument-Markups bereit, das auf Publikationsstrukturen angewendet wird, die vom SIS-Worker an den Arbortext Publishing Engine Server gesendet werden. Das Dokument Identifier.xml, das in der Payload-Datei gesendet wird, ist eine XML-Darstellung der hierarchischen Baumstruktur für die Informationsstruktur oder die Publikationsstruktur, die in Windchill erstellt wurde. Das XML-Markup entspricht dem Schema pubstruct.xsd.
Das Dokument Identifier.xml ist in allen Payloads enthalten, die von Windchill an den Arbortext Publishing Engine Server gesendet werden. (Informationen zur Payload-Datei und ihrem Inhalt finden Sie unter Payload und Manifest.) Der Name der Identifier-Datei wird vom Computer generiert, z.B. 00000015.xml.
Das Dokument Identifier.xml muss in ein Dokument transformiert werden, das einen für die Publizierung durch die Arbortext Publishing Engine oder für die Erstellung eines Arbortext Content Delivery Pakets geeigneten Dokumenttyp aufweist. Ein Identifier.xml-Dokument kann z.B. in ein dem techinfomap-Schema entsprechendes DITA-Dokument konvertiert werden, das anschließend auf dem Server mit einer Druck-Engine, die das XML-Format unterstützt, im PDF-Format publiziert werden kann.
Alle Elemente sind im Schema dokumentiert. Suchen Sie auf dem Arbortext Publishing Engine Server nach Folgendem:
Arbortext Pfad\application\com.ptc.arbortext.service
\doctypes\pubstruct\pubstruct.xsd
Umwandlung der Publikationsstruktur
In der folgenden Tabelle wird erklärt, wie Publikationsstrukturinformationen in eine dem techinfomap-Schema entsprechende DITA-Map-Struktur umgewandelt werden.
Die erste Spalte enthält das Quell-Markup der Publikationsstruktur in Form eines XPath-Ausdrucks.
Die zweite Spalte enthält das umgewandelte techinfomap-Markup in Form eines XPath-Ausdrucks.
Die dritte Spalte enthält zusätzliche Hinweise.
Die Zeilenumbrüche in den XPath-Ausdrücken können ignoriert werden.
XPath-Quellausdruck in der Publikationsstruktur
XPath-Ergebnisausdruck in techinfomap
Hinweise
/PublicationStructure
/techinfomap
Keiner
/techinfomap
/@xml:lang
Der Parameter xml:lang überschreibt den Wert für dieses Element. Der Standardwert ist en.
Keiner
/techinfomap
/@outputclass
Der Parameter outputclass überschreibt den Wert für dieses Element. Es gibt keinen Standardwert.
/PublicationStructure
/Title
/techinfomap
/title
/PublicationStructure
//Content[not(@path)
and not(@uri)]
/techinfomap
//division
divison/@format wird auf xml festgelegt.
/PublicationStructure
//Content[@path
and (count(Content)>0
or count(SpecialContent)
>0)]
/Metadata[contains(@source,
'DynamicDocument')]
/Property[@token=
'x-raomContentStructure']
/Value[text()='1']
/techinfomap
//division
/@href=@path
division/@format="dita", division/@scope="local". Das Content-Element hat mindestens ein Content- oder SpecialContent-Kindelement.
/PublicationStructure
//Content[@path
and (count(Content)=0
or count(SpecialContent)
=0)]
/Metadata[contains(@source,
'DynamicDocument')]
/Property[@token=
'x-raomContentStructure']
/Value[text()='1']
/techinfomap
//contentref
/@href=@path
contentref/@format="dita", contentref/@scope="local". Das Content-Element hat kein Content- oder SpecialContent-Kindelement.
/PublicationStructure
//Content[not(@path)
and @uri
and (count(Content)>0
or count(SpecialContent)
>0)]
/Metadata[contains(@source,
'DynamicDocument')]
/Property[@token=
'x-raomContentStructure']
/Value[text()='1']
/techinfomap
//division
/@href=@uri
division/@format="dita", division/@scope="local". Das Content-Element hat mindestens ein Content- oder SpecialContent-Kindelement.
/PublicationStructure
//Content[not(@path)
and @uri
and (count(Content)=0
or count(SpecialContent)
=0)]
/Metadata[contains(@source,
'DynamicDocument')]
/Property[@token=
'x-raomContentStructure']
/Value[text()='1']
/techinfomap
//contentref
/@href=@uri
contentref/@format="dita", contentref/@scope="local". Das Content-Element hat kein Content- oder SpecialContent-Kindelement.
/PublicationStructure
//Content[@path
and (count(Content)>0
or count(SpecialContent)
>0)]
/Metadata[contains(@source,
'DynamicDocument')]
/Property[@token=
'x-raomContentStructure']
/Value[text()='2']
/techinfomap
//division
/@href=@path
division/@format="ditamap", division/@scope="local". Das Content-Element hat mindestens ein Content- oder SpecialContent-Kindelement.
/PublicationStructure
//Content[@path
and (count(Content)=0
or count(SpecialContent)
=0)]
/Metadata[contains(@source,
'DynamicDocument')]
/Property[@token=
'x-raomContentStructure']
/Value[text()='2']
/techinfomap
//contentref
/@href=@path
contentref/@format="ditamap", contentref/@scope="local". Das Content-Element hat kein Content- oder SpecialContent-Kindelement.
/PublicationStructure
//Content[not(@path)
and @uri
and (count(Content)>0
or count(SpecialContent)
>0)]
/Metadata[contains(@source,
'DynamicDocument')]
/Property[@token=
'x-raomContentStructure']
/Value[text()='2']
/techinfomap
//division
/@href=@uri
division/@format="ditamap", division/@scope="local". Das Content-Element hat mindestens ein Content- oder SpecialContent-Kindelement.
/PublicationStructure
//Content[not(@path)
and @uri
and (count(Content)=0
or count(SpecialContent)
=0)]
/Metadata[contains(@source,
'DynamicDocument')]
/Property[@token=
'x-raomContentStructure']
/Value[text()='2']
/techinfomap
//contentref
/@href=@uri
contentref/@format="ditamap", contentref/@scope="local". Das Content-Element hat kein Content- oder SpecialContent-Kindelement.
/PublicationStructure
//Content/Title
/techinfomap
//*[name()=
'division'
or name()='
contentref']
/@navtitle
/PublicationStructure
//Content
/Metadata/Property
[matches(@token,
'\.TitleFromContent$')]
/Value[text()="yes"]
/techinfomap
//*[name()=
'division'
or name()=
'contentref']
/@locktitle="no"
/PublicationStructure
//Content
/Metadata/Property
[matches(@token,
'\.TitleFromContent$')]
/Value[text()!="yes"]
/techinfomap
//*[name()=
'division'
or name()=
'contentref']
/@locktitle="yes"
Wird nur festgelegt, wenn Property[matches(@token, '\.TitleFromContent$')]/Value[text()!="yes"] nicht angegeben ist. Andernfalls wird der Titel aus dem Inhalt übernommen.
/PublicationStructure
//Content
/Metadata/Property
[@token="sis.base.
ExcludeContent"]
/Value[text()="true"]
/techinfomap
//*[name()=
'division'
or name()=
'contentref']
/@processing-role=
"resource-only"
/PublicationStructure
//Content
/Metadata/Property
[@token="sis.base.
ExcludeTitle"]
/Value[text()="true"]
/techinfomap
//*[name()=
'division'
or name()=
'contentref']
/@toc="no"
Wird nur festgelegt, wenn Property[@token="sis.base.ExcludeContent"]/Value[text()!="true"].
/PublicationStructure
//Content
/@targetType
Andernfalls gilt:
/PublicationStructure
//Content
/Metadata/Property
[@token=
'x-raomFirstTagName']
/Value
/techinfomap
//*[name()=
'division'
or name()=
'contentref']
/@type
Der Wert des SIS-Worker-Parameters com.ptc.arbortext.pe.service.partlistStylesheet.targetType kann diesen Wert überschreiben, sofern er festgelegt ist.
/PublicationStructure
//Content
/Metadata/Property
[@token=
'x-raomFirstTagName']
/Value
/techinfomap
//*[name()=
'division'
or name()=
'contentref']
/@type
Der Wert des SIS-Worker-Parameters com.ptc.arbortext.pe.service.partlistStylesheet.targetType kann diesen Wert überschreiben, sofern er festgelegt ist.
/PublicationStructure
//SpecialContent
[@type=
"com.ptc.sis.PsToc"]
/techinfomap//toc
/PublicationStructure
//SpecialContent
[@type=
"com.ptc.sis.PsIndex"]
/techinfomap
//index
Beispiel-Publikationsstruktur Identifier.xml
Das Beispiel zeigt zunächst das verallgemeinerte XML-Markup für eine Publikationsstruktur, gefolgt von der resultierenden techinfomap-Umwandlung.
<PublicationStructure
type="wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.BaseDiv
|com.ptc.sis.PsSection|com.ptc.sis.PsRoot">
<Title>test1</Title>
<Description>0000000012</Description>
<Metadata
source="wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.BaseDiv
|com.ptc.sis.PsSection|com.ptc.sis.PsRoot">
<Property token="objNumber"> <Value>0000000012</Value></Property>
<Property token="objName"> <Value>test1</Value></Property>
<Property token="orgid"> <Value>Demo Organization</Value></Property>
</Metadata>
<SpecialContent
type="wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.Content
|com.ptc.sis.PsSpecial|com.ptc.sis.PsToc">
<Title>Table of Contents</Title>
<Description>0000000013</Description>
<Metadata
source="wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.Content
|com.ptc.sis.PsSpecial|com.ptc.sis.PsToc">
<Property token="objNumber"><Value>0000000013</Value></Property>
<Property token="objName"><Value>Table of Contents</Value>
</Property>
</Metadata>
</SpecialContent>
<Content
type="wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.BaseDiv
|com.ptc.sis.PsSection">
<Title>publication section 1</Title>
<Description>0000000030</Description>
<Metadata
source="wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.BaseDiv
|com.ptc.sis.PsSection">
<Property token="sis.base.ExcludeContent"><Value>false</Value>
</Property>
<Property token="objNumber"><Value>0000000030</Value></Property>
<Property token="sis.base.ExcludeTitle"><Value>false</Value>
</Property>
<Property token="insertLocationPubsection"></Property>
<Property token="objName"><Value>publication section 1</Value>
</Property>
</Metadata>
<Content
path="com.acme.DynamicDocument\111704.xml"
type="wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.Content
|com.ptc.sis.ContentRef|com.ptc.sis.TextualContentRef"
uri="x-wc://file=0000000016.xml">
<Title>Procedure with an image (procedure)</Title>
<Description>0000000017</Description>
<Metadata
source="wt.epm.EPMDocument|com.acme.DynamicDocument">
<Property token="objNumber"><Value>0000000016</Value></Property>
<Property token="x-raomDocTypeName"><Value>techinfo</Value>
</Property>
<Property token="x-raomFirstTagName"><Value>procedure</Value>
</Property>
<Property token="objName"><Value>Procedure with an image
(procedure)</Value></Property>
<Property token="CADName"><Value>0000000016.xml</Value>
</Property>
<Property token="filename"><Value>0000000016.xml</Value>
</Property>
</Metadata>
<Metadata
source="wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.Content
|com.ptc.sis.ContentRef|com.ptc.sis.TextualContentRef">
<Property token="sis.base.ExcludeContent"><Value>false</Value>
</Property>
<Property token="objNumber"><Value>0000000017</Value></Property>
<Property token="sis.base.ExcludeTitle"><Value>false</Value>
</Property>
<Property token="objName"><Value>Procedure with an image (procedure)
</Value></Property>
<Property token="sis.contentholder.TitleFromContent"><Value >false
</Value></Property>
</Metadata>
</Content>
</Content>
<Content
type="wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.BaseDiv|com.ptc.sis.
PsSection">
<Title>Part List Section</Title>
<Description>0000000027</Description>
<Metadata
source="wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.BaseDiv
|com.ptc.sis.PsSection">
<Property token="sis.base.ExcludeContent"><Value>false</Value>
</Property>
<Property token="objNumber"><Value>0000000027</Value></Property>
<Property token="sis.base.ExcludeTitle"><Value>false</Value>
</Property>
<Property token="objName"><Value>Part List Section</Value>
</Property>
<Property token="sis.pssection.TitleFromContent"><Value >false
</Value></Property>
</Metadata>
<Content
path="com.ptc.arbortext.windchill.partlist.PartList\0000000004.xml"
type="wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.Content
|com.ptc.sis.ContentRef|com.ptc.sis.PartsListRef"
uri="x-wc://com.ptc.arbortext.windchill.partlist.PartList/
0000000004.xml">
<Title>Part List 1</Title>
<Description>0000000028</Description>
<Metadata
source="com.ptc.arbortext.windchill.partlist.PartList">
<Property token="type"><Value>Parts List</Value></Property>
</Metadata>
<Metadata
source="wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.Content
|com.ptc.sis.ContentRef|com.ptc.sis.PartsListRef">
<Property token="sis.base.ExcludeContent"><Value>false</Value>
</Property>
<Property token="objNumber"><Value>0000000028</Value></Property>
<Property token="sis.base.ExcludeTitle"><Value>false</Value>
</Property>
<Property token="objName"><Value>Part List 1</Value></Property>
</Metadata>
</Content>
</Content>
<SpecialContent
type="wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.Content
|com.ptc.sis.PsSpecial|com.ptc.sis.PsIndex">
<Title>Index</Title>
<Description>0000000014</Description>
<Metadata
source="wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.Content
|com.ptc.sis.PsSpecial|com.ptc.sis.PsIndex">
<Property token="objNumber"><Value>0000000014</Value></Property>
<Property token="objName"><Value>Index</Value></Property>
</Metadata>
</SpecialContent>
</PublicationStructure>
Nachfolgend sehen Sie die techinfomap-Ergebnis-DITA-Map:
<techinfomap xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ditaarch="http://dita.oasis-open.org/architecture/2005/"
xsi:noNamespaceSchemaLocation="urn:ptc:names:arbortext:dita:xsd:
techinfomap.xsd"
xml:lang="en">
<title>test1</title>
<toc/>
<division format="xml" navtitle="publication section 1" locktitle="yes">
<contentref href="com.acme.DynamicDocument\111704.xml" format="dita"
scope="local"
navtitle="Procedure with an image (procedure)"
locktitle="yes"
type="procedure"/>
</division>
<division format="xml" navtitle="Part List Section" locktitle="yes">
<contentref href="com.ptc.arbortext.windchill.partlist.PartList\
0000000004.xml"
format="dita"
scope="local"
navtitle="Part List 1"
locktitle="yes"
type="topic"/>
</division>
<index/>
</techinfomap>
Beispiel-Informationsstruktur Identifier.xml
Das Beispiel zeigt einen Auszug aus dem verallgemeinerten XML-Markup für eine Informationsstruktur mit grafischer Navigation, gefolgt von der resultierenden DMPmap-Umwandlung. Einige Teile wurden der besseren Lesbarkeit halber ausgeschlossen, darunter viele allgemeine Eigenschaften für Iteration, Version, Revision, Organisation und Lebenszyklusstatus. Mehrere Content- und Metadata-Einträge für Informationsstrukturgruppen und ihren Inhalt wurden entfernt.
<PublicationStructure
type="wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.BaseDiv
|com.ptc.sis.IsRoot">
<Title>GraphicalNav</Title>
<Description>0000000017</Description>
<ResourceMap/>
<Metadata
source="com.ptc.arbortext.windchill.asps.services.ASPSMappingAPI">
<Property token="navigation">
<Value>
<MapDefList>
<MapDef repname="graphNav" viewname="view">
<PubNode idref="wt.part.WTPartMaster130414-
wt.viewmarkup.DerivedImage141614">
<g>/2</g>
</PubNode>
<PubNode idref="wt.part.WTPartMaster130427-
wt.viewmarkup.DerivedImage141614">
<g>/160/41</g>
</PubNode>
<PubNode idref="wt.part.WTPartMaster130444-
wt.viewmarkup.DerivedImage141614">
<g>/215/20</g>
</PubNode>
<PubNode idref="wt.part.WTPartMaster141716-
wt.viewmarkup.DerivedImage141614">
<g>/224</g>
</PubNode>
</MapDef>
</MapDefList>
</Value>
</Property>
</Metadata>
<Metadata source="wt.pdmlink.PDMLinkProduct">
<Property token="name"> <Value>graphNavTest</Value></Property>
<Property token="preference.com.ptc.arbortext.windchill.
siscore.translation.SourceLanguage">
<Value>en</Value></Property>
</Metadata>
<Metadata source="wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.BaseDiv
|com.ptc.sis.IsRoot">
<Property token="asic.BundleVendor"> <Value>PTC</Value></Property>
<Property token="objNumber"> <Value>0000000017</Value></Property>
<Property token="objName"> <Value>GraphicalNav</Value></Property>
<Property token="sis.group.contentLocation">
<Value>/graphNavTest</Value></Property>
<Property token="isPrimaryASPSRoot"> <Value>true</Value></Property>
<Property token="asic.BundleVolumeId"> <Value>qwerty</Value></Property>
<Property token="sis.group.vizmapping">
<Value>
{wt.part.WTPartMaster:130414-wt.viewmarkup.DerivedImage:141614|/2|}
{wt.part.WTPartMaster:130427-wt.viewmarkup.DerivedImage:141614|/160/41|}
{wt.part.WTPartMaster:130444-wt.viewmarkup.DerivedImage:141614|/215/20|}
{wt.part.WTPartMaster:141716-wt.viewmarkup.DerivedImage:141614|/224|}
</Value>
</Property>
<Property token="asic.BundleName"> <Value>graphNavTest</Value></Property>
</Metadata>
<Content type="wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.BaseDiv
|com.ptc.sis.IsGroup">
<Title>ConnectingRod</Title>
<Description>0000000019</Description>
<ResourceMap>
<Resource token="repForConnectingRod">
<Metadata>
<Property token="default"> <Value>true</Value></Property>
</Metadata>
<Content path="reps\185408\Connecting_Rod_sBOM_Part.pvm"
type="Unknown"/>
<Content path="reps\185408\Connecting_Rod_sBOM_Part.pvs"
type="Unknown"/>
<Content path="reps\185408\crankshaft_asm_11.ol" type="OL"/>
<Content path="reps\185408\crankshaft_asm_12.ol" type="OL"/>
<Content path="reps\185408\crankshaft_asm_13.ol" type="OL"/>
<Content path="reps\185408\crankshaft_asm_14.ol" type="OL"/>
<Content path="reps\185408\crankshaft_asm_15.ol" type="OL"/>
<Content path="reps\185408\crankshaft_asm_16.ol" type="OL"/>
<Content path="reps\185408\wvspvp.pvp" type="Unknown"/>
</Resource>
</ResourceMap>
<Metadata source="wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.BaseDiv
|com.ptc.sis.IsGroup">
<Property token="sis.base.ExcludeContent">
<Value>false</Value></Property>
<Property token="objNumber">
<Value>0000000019</Value></Property>
<Property token="sis.group.vizmapping">
<Value>
{wt.part.WTPartMaster:152543-wt.viewmarkup.DerivedImage:152555
|/@@PV-AUTO-ID@@002|}
{wt.part.WTPartMaster:152599-wt.viewmarkup.DerivedImage:152555
|/@@PV-AUTO-ID@@003|}
</Value>
</Property>
<Property token="sis.base.ExcludeTitle"> <Value>false</Value></Property>
<Property token="objName"> <Value>ConnectingRod</Value></Property>
<Property token="sis.group.contentLocation">
<Value>/graphNavTest</Value></Property>
</Metadata>
<Content path="com.acme.DADynamicDocument\133110.xml"
type="wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.Content
|com.ptc.sis.ContentRef|com.ptc.sis.TextualContentRef"
uri="x-wc://file=0000000531.xml">
<Title>PistonRodMap</Title>
<Description>0000010134</Description>
<Metadata source="wt.epm.EPMDocument|com.acme.DynamicDocument
|com.acme.DADynamicDocument">
<Property token="docType"> <Value>PUB_COMPOUNDTEXT</Value></Property>
<Property token="objNumber"> <Value>0000000531</Value></Property>
<Property token="x-raomContentStructure"> <Value>2</Value></Property>
<Property token="x-raomDocTypeName"> <Value>map</Value></Property>
<Property token="x-raomFirstTagName"> <Value>map</Value></Property>
<Property token="type"> <Value>DADynamicDocument</Value></Property>
<Property token="objName"> <Value>PistonRodMap</Value></Property>
<Property token="derived"> <Value>false</Value></Property>
<Property token="CADName"> <Value>0000000531.xml</Value></Property>
<Property token="missingDependents"> <Value>false</Value></Property>
<Property token="placeHolder"> <Value>false</Value></Property>
<Property token="authoringApplication"> <Value>ARBORTEXT</Value>
</Property>
<Property token="filename"> <Value>0000000531.xml</Value></Property>
<Property token="typeDisplayName"> <Value>DADynamicDocument</Value>
</Property>
</Metadata>
</Content>
<Content path="com.acme.DynamicDocument\128404.jpg"
type="wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.Content
|com.ptc.sis.ContentRef|com.ptc.sis.IllustrationRef"
uri="x-wc://file=0000000035.jpg">
<Title>excavator3.jpg</Title>
<Description>0000010191</Description>
<Metadata source="wt.epm.EPMDocument|com.acme.DynamicDocument">
<Property token="docType"> <Value>PUB_GRAPHIC</Value></Property>
<Property token="objNumber"> <Value>0000000035</Value></Property>
<Property token="type"> <Value>Dynamic Document</Value></Property>
<Property token="objName"> <Value>excavator3.jpg</Value></Property>
<Property token="derived"> <Value>false</Value></Property>
<Property token="CADName"> <Value>0000000035.jpg</Value></Property>
<Property token="missingDependents"> <Value>false</Value></Property>
<Property token="placeHolder"> <Value>false</Value></Property>
<Property token="authoringApplication"> <Value>GRAPHICSEDITOR</Value>
</Property>
<Property token="filename"> <Value>0000000035.jpg</Value></Property>
<Property token="typeDisplayName"> <Value>Dynamic Document</Value>
</Property>
</Metadata>
<Metadata source="wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.Content
|com.ptc.sis.ContentRef|com.ptc.sis.IllustrationRef">
<Property token="sis.base.ExcludeContent"> <Value>false</Value></Property>
<Property token="objNumber"> <Value>0000010191</Value></Property>
<Property token="sis.base.ExcludeTitle"> <Value>false</Value></Property>
<Property token="objName"> <Value>excavator3.jpg</Value></Property>
</Metadata>
</Content>
</PublicationStructure>
Als Teil eines Zwischenkonvertierungsschritts werden HTML-Dateien aus den XML-Dateien in der Payload erstellt (dabei wird .html an den gesamten ursprünglichen Dateiname angehängt), und referenzierte Grafiken werden zum Anzeigen konvertiert (.pvz-Format).
Nachfolgend sehen Sie die DMPmap-Ergebnis-DITA-Map:
<DMPmap xml:lang="en">
<title>GraphicalNav</title>
<DMPmeta>
<DMPprojectinfo encryption="no" projectname="graphNavTest"/>
<data name="contenttype">is</data>
<data name="bundletype">full</data>
<data name="volumename">graphNavTest</data>
<data name="volumeid">qwerty</data>
<data name="vendor">PTC</data>
</DMPmeta>
<languageset locale="en_US">
<topicref id="d8e1" format="xml" navtitle="GraphicalNav" locktitle="yes">
<topicmeta>
<metadata>
<category>com.ptc.arbortext.windchill.asps.services.ASPSMappingAPI
</category>
<data-about type="navigation">
<data name="view">view</data>
<data href="#wt.part.WTPartMaster130414-wt.viewmarkup.
DerivedImage141614">/2</data>
<data href="#wt.part.WTPartMaster130427-wt.viewmarkup.
DerivedImage141614">/160/41</data>
<data href="#wt.part.WTPartMaster130444-wt.viewmarkup.
DerivedImage141614">/215/20</data>
<data href="#wt.part.WTPartMaster141716-wt.viewmarkup.
DerivedImage141614">/224</data>
</data-about>
</metadata>
<metadata>
<category>wt.pdmlink.PDMLinkProduct</category>
<data name="name">graphNavTest</data>
<data name="preference.com.ptc.arbortext.windchill.siscore.
translation.SourceLanguage">en</data>
</metadata>
<metadata>
<category>wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.BaseDiv
|com.ptc.sis.IsRoot</category>
<data name="asic.BundleVendor">PTC</data>
<data name="objNumber">0000000017</data>
<data name="objName">GraphicalNav</data>
<data name="sis.group.contentLocation">/graphNavTest</data>
<data name="isPrimaryASPSRoot">true</data>
<data name="asic.BundleVolumeId">qwerty</data>
<data name="sis.group.vizmapping">
{wt.part.WTPartMaster:130414-wt.viewmarkup.DerivedImage:
141614|/2|}
{wt.part.WTPartMaster:130427-wt.viewmarkup.DerivedImage:
141614|/160/41|}
{wt.part.WTPartMaster:130444-wt.viewmarkup.DerivedImage:
141614|/215/20|}
{wt.part.WTPartMaster:141716-wt.viewmarkup.DerivedImage:
141614|/224|}
</data>
<data name="asic.BundleName">graphNavTest</data>
</metadata>
</topicmeta>
<topicref id="d8e200" format="xml" navtitle="ConnectingRod" locktitle="yes">
<topicmeta>
<metadata>
<category>com.ptc.arbortext.windchill.asps.services.ASPSMappingAPI
</category>
<data-about type="navigation" href="reps\185408\
Connecting_Rod_sBOM_Part.pvz"
format="pvz">
<data name="view">view</data>
<data href="#wt.part.WTPartMaster152543-wt.viewmarkup.
DerivedImage152555">
/@@PV-AUTO-ID@@002</data>
<data href="#wt.part.WTPartMaster152599-wt.viewmarkup.
DerivedImage152555">
/@@PV-AUTO-ID@@003</data>
</data-about>
</metadata>
<metadata>
<category>wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.BaseDiv
|com.ptc.sis.IsGroup</category>
<data name="sis.base.ExcludeContent">false</data>
<data name="objNumber">0000000019</data>
<data name="sis.group.vizmapping">
{wt.part.WTPartMaster:152543-wt.viewmarkup.
DerivedImage:152555|
/@@PV-AUTO-ID@@002|}
{wt.part.WTPartMaster:152599-wt.viewmarkup.
DerivedImage:152555|
/@@PV-AUTO-ID@@003|}
</data>
<data name="sis.base.ExcludeTitle">false</data>
<data name="objName">ConnectingRod</data>
<data name="sis.group.contentLocation">/graphNavTest</data>
</metadata>
</topicmeta>
</topicref>
<topicref id="d8e341" href="x-wc://file=0000000531.xml"
copy-to="com.acme.DADynamicDocument\133110.xml.html"
scope="local"
format="ditamap"
type="map"
navtitle="PistonRodMap"
locktitle="yes">
<topicmeta>
<metadata>
<category>wt.epm.EPMDocument|com.acme.DynamicDocument|com.acme.
DADynamicDocument</category>
<data name="docType">PUB_COMPOUNDTEXT</data>
<data name="objNumber">0000000531</data>
<data name="x-raomContentStructure">2</data>
<data name="x-raomDocTypeName">map</data>
<data name="x-raomFirstTagName">map</data>
<data name="type">DADynamicDocument</data>
<data name="objName">PistonRodMap</data>
<data name="derived">false</data>
<data name="CADName">0000000531.xml</data>
<data name="missingDependents">false</data>
<data name="placeHolder">false</data>
<data name="authoringApplication">ARBORTEXT</data>
<data name="filename">0000000531.xml</data>
<data name="typeDisplayName">DADynamicDocument</data>
</metadata>
<metadata>
<category>wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.Content
|com.ptc.sis.ContentRef|com.ptc.sis.TextualContentRef
</category>
<data name="sis.base.ExcludeContent">false</data>
<data name="objNumber">0000010134</data>
<data name="sis.base.ExcludeTitle">false</data>
<data name="objName">PistonRodMap</data>
<data name="sis.contentholder.TitleFromContent">false</data>
</metadata>
</topicmeta>
</topicref>
<topicref id="d8e2533" href="x-wc://file=0000000035.jpg"
copy-to="com.acme.DynamicDocument\128404.jpg"
scope="local"
format="jpg"
navtitle="excavator3.jpg"
locktitle="yes">
<topicmeta>
<metadata>
<category>wt.epm.EPMDocument|com.acme.DynamicDocument</category>
<data name="docType">PUB_GRAPHIC</data>
<data name="objNumber">0000000035</data>
<data name="type">Dynamic Document</data>
<data name="objName">excavator3.jpg</data>
<data name="derived">false</data>
<data name="CADName">0000000035.jpg</data>
<data name="missingDependents">false</data>
<data name="placeHolder">false</data>
<data name="authoringApplication">GRAPHICSEDITOR</data>
<data name="filename">0000000035.jpg</data>
<data name="typeDisplayName">Dynamic Document</data>
</metadata>
<metadata>
<category>wt.part.WTPart|com.ptc.sis.Base|com.ptc.sis.Content
|com.ptc.sis.ContentRef|com.ptc.sis.IllustrationRef
</category>
<data name="sis.base.ExcludeContent">false</data>
<data name="objNumber">0000010191</data>
<data name="sis.base.ExcludeTitle">false</data>
<data name="objName">excavator3.jpg</data>
</metadata>
</topicmeta>
</topicref>
</languageset>
</DMPmap>
XML-Markup des partslist-Schemas
Das partslist-Schema stellt die Struktur für die generische Form des verallgemeinerten XML-Dokument-Markups bereit, das auf Teilelisten angewendet wird, die vom SIS-Worker an den Arbortext Publishing Engine Server gesendet werden. Das Teilelistendokument Identifier.xml ist eine XML-Darstellung der in Windchill erstellten Teilelistenstruktur. In der Datei manifest.xml der Payload wird das Dokument in einem Verzeichnis namens com.ptc.arbortext.windchill.partlist.PartList aufgeführt. Der Teilelistenname Identifier wird vom Computer generiert, z.B. 00000005.xml.
Das Teilelistendokument Identifier.xml muss in ein Dokument transformiert werden, das für die Publizierung durch die Arbortext Publishing Engine geeignet ist. Das Teilelistendokument Identifier.xml kann z.B. in ein DITA-Dokument konvertiert werden, das dem techinfo-Schema entspricht; dieses DITA-Dokument kann anschließend als Illustrated Parts Description (IPD) publiziert werden, die die Teileliste für die Baugruppe, Bilder, Fußnoten, Links und ähnliche Elemente enthält.
Windchill generiert die Teilelistendatei Identifier.xml in einem IPD-XML-Format. Im Allgemeinen wird für jeden Eigenschaftswert einer Teileliste ein partattribute generiert. Das name-Attribut enthält den Namen der Eigenschaft. Der Inhalt des Elements enthält den Wert der Eigenschaft. Wenn die Eigenschaft über mehrere Werte verfügt, wird jeder Wert in partattributevalue-Tags eingeschlossen.
Die Elemente sind im Schema auf dem Arbortext Publishing Engine dokumentiert:
Arbortext Pfad\application\com.ptc.arbortext.service\doctypes
\partslist\partslist.xsd
Umwandlung der Teileliste
In der folgenden Tabelle wird erläutert, wie Teilelisteninformationen in IPD-Markups umgewandelt werden.
Die erste Spalte der Tabelle enthält die dem techinfo-Markup zugewiesene Abkürzung.
Die Abkürzungen werden im techinfo-IPD-Markup-Beispiel verwendet.
Die zweite Spalte enthält das Quell-Markup der Teileliste in Form eines XPath-Ausdrucks.
Die dritte Spalte enthält das umgewandelte techinfo-IPD-Markup in Form eines XPath-Ausdrucks.
Die vierte Spalte enthält zusätzliche Hinweise.
Die Zeilenumbrüche in den XPath-Ausdrücken können ignoriert werden.
Abkürzung
XPath-Quellausdruck in der Teileliste
XPath-Ergebnisausdruck in techinfo
Hinweise
IPD-Id
Keiner
/ipd/@id
Der Parameter überschreibt den Inhalt für dieses Element.
Andernfalls generiert generate-id() einen Wert.
IPD-Title
/PartsList
/Metadata
/Property
[@token="name"]
/Value
/ipd/title
Der Parameter überschreibt den Inhalt für dieses Element.
Andernfalls wird der vom XPath-Quellausdruck zurückgegebene Wert verwendet.
IPD-Metadata-Source
/PartsList
/Metadata
/@source
/ipd/prolog
/metadata
/category
Es können mehrere /PartsList/Metadata-Elemente vorhanden sein.
IPD-Metadata-Property-Name
/PartsList
/Metadata
/Property
/@token
/ipd/prolog
/metadata
/data/@name
Es können mehrere /PartsList/Metadata/Property-Elemente vorhanden sein.
IPD-Metadata-Property-Value
/PartsList
/Metadata
/Property/Value
/ipd/prolog
/metadata/data
Es können mehrere /PartsList/Metadata/Property-Elemente vorhanden sein.
IPD-Fig-Title
/PartsList
/Images
/Image[1]
/Metadata
/Property
[@token='name']
/Value
/ipd/ipdbody
/fig/title
Der Parameter überschreibt den Inhalt für dieses Element.
Andernfalls wird das name-Attribut des ersten Bilds als Titel verwendet.
IPD-Fig-Path
/PartsList
/Images
/Image[@type !=
'c3di']
/Metadata
/Property
[@token=
'CADName']
/Value
/ipd/ipdbody
/fig/image
/@href
Es können mehrere /PartsList/Images/Image-Elemente vorhanden sein.
IPD-Fig-Ansicht
/PartsList
/Images
/Image
/Metadata
/Property[@token
='printView']
/Value
/ipd/ipdbody
/fig/image
/@rev
Es können mehrere /PartsList/Images/Image-Elemente vorhanden sein.
IPD-Fig-Ansicht
/PartsList
/Images
/Image[@type =
'c3di']
/ResourceMap
/Resource[@token
='default']
/Content/@path
/ipd/ipdbody
/fig/image
/@rev
Es können mehrere /PartsList/Images/Image-Elemente vorhanden sein.
IPD-Part-Item-Attribute-Name
/PartsList/Items
/Item/Metadata
/Property
/@token
/ipd/ipdbody
/partlist
/partitem
/partattribute
/@name
Es können mehrere /PartsList/Items/Item/Metadata/Property-Elemente vorhanden sein.
IPD-Part-Item-Attribute-Value
/PartsList/Items
/Item/Metadata
/Property/Value
/ipd/ipdbody
/partlist
/partitem
/partattribute
Es können mehrere /PartsList/Items/Item/Metadata/Property-Elemente vorhanden sein.
Im folgenden Beispiel einer ipd-DITA-Datei werden die Abkürzungen im Kontext verwendet, und die XML-Deklarationen wurden entfernt. Text in geschweiften Klammern { } zeigt die Positionen an, an denen Teilelisten-Eigenschaftswerte in die Vorlage eingefügt werden.
<ipd
id="{IPD-Id}"
xml:lang="en"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation=
"urn:ptc:names:arbortext:dita:xsd:techinfo.xsd">
<title>{IPD-Title}</title>
<prolog>
<metadata>
<category>{IPD-Metadata-Source}</category>
<data name="{IPD-Metadata-Property-Name}">{IPD-Metadata-Property-Value}
</data>
</metadata>
</prolog>
<ipdbody>
<fig>
<title>{IPD-Fig-Title}</title>
<image href="{IPD-Fig-Path}"/>
</fig>
<partlist>
<partitem>
<partattribute name="{IPD-Part-Item-Attribute-Name}">
{IPD-Part-Item-Attribute-Value}</partattribute>
<partattribute name="{IPD-Part-Item-Attribute-Name}">
<partattributevalue>{IPD-Part-Item-Attribute-Value}
</partattributevalue>
<partattributevalue>{IPD-Part-Item-Attribute-Value}
</partattributevalue>
</partattribute>
</partitem>
</partlist>
</ipdbody>
</ipd>
Beispiel-Teileliste Identifier.xml
Die folgenden Beispiele sind Auszüge aus dem verallgemeinerten XML-Markup für eine Teileliste.
Der erste Auszug zeigt das verallgemeinerte XML-Markup für die Metadateneigenschaften der Teileliste:
<?xml version="1.0" encoding="UTF-8"?>
<PartsList Version="1.0">
<Metadata source="com.ptc.arbortext.windchill.partlist.PartList">
<Property token="iterationInfo.identifier.iterationId" type=
"java.lang.String"><Value>4</Value>
</Property>
<Property token="ownership.owner.name"><Value/></Property>
<Property token="organizationName" type="java.lang.String">
<Value>Demo Organization</Value></Property>
<Property token="versionIdentifer.versionId" type=
"java.lang.String"><Value>A</Value>
</Property>
<Property token="number" type="java.lang.String">
<Value>0000000005</Value></Property>
<Property token="thePersistInfo.modifyStamp" type="wt.util.
WrappedTimestamp"><Value>2011-09-21 18:37:59.0</Value>
</Property>
<Property token="type" type="java.lang.String">
<Value>Parts List</Value></Property>
<Property token="orgName" type="java.lang.String">
<Value>Demo Organization</Value></Property>
<Property token="version" type="java.lang.String">
<Value>A</Value></Property>
<Property token="iteration" type="java.lang.String">
<Value>4</Value></Property>
<Property token="revision" type="java.lang.String">
<Value>A</Value></Property>
<Property token="creator.name" type="java.lang.String">
<Value>demo</Value></Property>
<Property token="modifiedBy.name"><Value/></Property>
<Property token="versionInfo.identifier.versionId" type=
"java.lang.String"><Value>A</Value></Property>
<Property token="name" type="java.lang.String">
<Value>TRANSISTORS</Value></Property>
<Property token="last_updated" type="wt.util.WrappedTimestamp">
<Value>2011-09-21 18:37:59.0</Value></Property>
<Property token="thePersistInfo.createStamp" type="wt.util.WrappedTimestamp">
<Value>2011-09-21 16:21:10.0</Value></Property>
</Metadata>
Das folgende Beispiel ist ein Auszug des techinfo DITA-Ergebnisdokuments im IPD-Format, in dem die Teilelisten-Metadaten in prolog umgewandelt wurden:
<ipd xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ditaarch="http://dita.oasis-open.org/architecture/2005/"
xml:lang="en"
xsi:noNamespaceSchemaLocation="urn:ptc:names:arbortext:dita:xsd:techinfo.xsd"
id="d1">
<title>TRANSISTORS</title>
<prolog>
<metadata>
<category>com.ptc.arbortext.windchill.partlist.PartList</category>
<data name="iterationInfo.identifier.iterationId">4</data>
<data name="ownership.owner.name"/>
<data name="organizationName">Demo Organization</data>
<data name="versionIdentifer.versionId">A</data>
<data name="number">0000000005</data>
<data name="thePersistInfo.modifyStamp">2011-09-21 18:37:59.0
</data>
<data name="type">Parts List</data>
<data name="orgName">Demo Organization</data>
<data name="version">A</data>
<data name="iteration">4</data>
<data name="revision">A</data>
<data name="creator.name">demo</data>
<data name="modifiedBy.name"/>
<data name="versionInfo.identifier.versionId">A</data>
<data name="name">TRANSISTORS</data>
<data name="last_updated">2011-09-21 18:37:59.0</data>
<data name="thePersistInfo.createStamp">2011-09-21 16:21:10.0
</data>
</metadata>
</prolog>
Der folgende Auszug zeigt das verallgemeinerte XML-Markup für die Metadateneigenschaften des Teilelistenelements:
<Item>
<Metadata source="com.ptc.arbortext.windchill.partlist.PartListItem">
<Property token="instanceIds"><Value/></Property>
<Property token="serviceable" type="java.lang.Boolean">
<Value>true</Value></Property>
<Property token="itemQuantity" type="java.lang.String">
<Value>1</Value></Property>
<Property token="illustrated" type="java.lang.Boolean">
<Value>true</Value></Property>
<Property token="indenture" type="java.lang.Long">
<Value>0</Value></Property>
<Property token="itemSequenceNumber.value"><Value/>
</Property>
<Property token="remarks" type="java.lang.String">
<Value>Transistor</Value></Property>
<Property token="thePersistInfo.modifyStamp" type="wt.util.
WrappedTimestamp"><Value>2011-09-21 18:01:52.0</Value>
</Property>
<Property token="itemNumber" type="java.lang.String">
<Value>3</Value></Property>
<Property token="type" type="java.lang.String">
<Value>Parts List Item</Value></Property>
<Property token="thePersistInfo.createStamp" type="wt.util.
WrappedTimestamp"><Value>2011-09-21 18:01:52.0</Value>
</Property>
</Metadata>
<Metadata source="wt.part.WTPart">
<Property token="objName" type="java.lang.String">
<Value>2SC1846-R</Value></Property>
<Property token="orgid" type="java.lang.String">
<Value>Demo Organization</Value></Property>
<Property token="objNumber" type="java.lang.String">
<Value>0000000026</Value></Property>
<Property token="name" type="java.lang.String">
<Value>2SC1846-R</Value></Property>
<Property token="last_updated" type="wt.util.WrappedTimestamp">
<Value>2011-09-21 16:28:16.0</Value></Property>
<Property token="number" type="java.lang.String">
<Value>0000000026</Value></Property>
<Property token="state.state" type="java.lang.String">
<Value>INWORK</Value></Property>
<Property token="thePersistInfo.modifyStamp" type="wt.util.
WrappedTimestamp"><Value>2011-09-21 16:28:16.0</Value>
</Property>
<Property token="lifeCycleState" type="java.lang.String">
<Value>INWORK</Value></Property>
<Property token="organizationIdentifier" type="java.lang.String">
<Value>Demo Organization</Value></Property>
</Metadata>
</Item>
Das folgende Beispiel ist ein Auszug aus dem techinfo DITA-Ergebnisdokument im IPD-Format, in dem die Metadaten des Teilelistenelements in partattribute-Einträge für partitem umgewandelt wurden:
<ipdbody>
<partlist>
<partitem>
<partattribute name="instanceIds"/>
<partattribute name="serviceable">true</partattribute>
<partattribute name="itemQuantity">1</partattribute>
<partattribute name="illustrated">true</partattribute>
<partattribute name="indenture">0</partattribute>
<partattribute name="itemSequenceNumber.value"/>
<partattribute name="remarks">Transistor</partattribute>
<partattribute name="thePersistInfo.modifyStamp">
2011-09-21 18:01:52.0</partattribute>
<partattribute name="itemNumber">3</partattribute>
<partattribute name="type">Parts List Item</partattribute>
<partattribute name="thePersistInfo.createStamp">
2011-09-21 18:01:52.0</partattribute>
<partattribute name="objName">2SC1846-R</partattribute>
<partattribute name="orgid">Demo Organization</partattribute>
<partattribute name="objNumber">0000000026</partattribute>
<partattribute name="name">2SC1846-R</partattribute>
<partattribute name="last_updated">2011-09-21 16:28:16.0
</partattribute>
<partattribute name="number">0000000026</partattribute>
<partattribute name="state.state">INWORK</partattribute>
<partattribute name="thePersistInfo.modifyStamp">
2011-09-21 16:28:16.0</partattribute>
<partattribute name="lifeCycleState">INWORK</partattribute>
<partattribute name="organizationIdentifier">
Demo Organization</partattribute>
</partitem>
</partlist>
</ipdbody>