Fonctionnalités supplémentaires de Windchill > Gestion des informations pour l'après-vente > Personnalisation de Windchill Service Information Manager et Windchill Service Parts > Personnalisation de la publication > Application Service
  
Application Service
Présentation de l'application Service
L'application Service du Serveur Arbortext PE gère la transformation initiale du contenu et du marquage du XML d'entrée envoyé depuis le convertisseur SIS WVS et le prépare pour la publication.
Elle doit être installée et activée sur le Serveur Arbortext PE. Par défaut, elle se trouve à l'emplacement suivant :
chemin-Arbortext\application\com.ptc.arbortext.service
Description du type de document de l'application Service
Le répertoire doctypes de l'application Service utilise les schémas pubstruct et partslist pour gérer les formats génériques des documents de structure de publication et de liste d'articles envoyés par le convertisseur SIS au Serveur Arbortext PE.
Le répertoire doctypes de l'application Service contient également le schéma pubspec, qui est utilisé pour transformer les spécifications de publication d'entrée envoyées depuis le convertisseur SIS en paramètres de publication à appliquer au processus de publication. Un fichier pubspec.xml, contenant les valeurs par défaut, se trouve dans :
application\com.ptc.arbortext.service\lib\pubspec.xml
Transformation du marquage
L'application Service contient les feuilles de style XLST qui transforment le contenu et le marquage entrants en fichier XML approprié pour la publication à l'aide de l'exemple d'application Technical Information. Comme il s'agit d'un exemple de travail décrivant le processus de transformation en publication, les documents transformés sont conformes aux schémas de type de document d'informations technique DITA. Un rédacteur de feuilles de style expérimenté peut utiliser les instructions commentées de la feuille de style de transformation XSL de l'application Service comme point de départ.
Recherchez les exemples de feuilles de style XSLT dans :
chemin-Arbortext\application\com.ptc.arbortext.service\doctypes
Dans le sous-répertoire pubstruct, le fichier techinfomap.xsl (qui fait référence au fichier ditamap-common.xsl) transforme une structure de publication en plan de l'application Technical Information et ses rubriques.
Par ailleurs, dans le sous-répertoire pubstruct, le fichier DMPmap.xsl (qui fait référence aux fichiers DMPmap-base.xsl et DMPmap-pvz.xsl) affecte à une structure d'information un format adapté à la publication des paquets.
Dans le sous-répertoire partslist, techinfo.xsl transforme une liste d'articles en une description d'article illustrée (IPD).
Ces feuilles de style de transformation XSL fournissent un exemple d'instructions commentées sur leur utilisation dans le cadre des personnalisations que vous devez effectuer pour vos types de documents. Ces applications sont déployées dans un répertoire application sur le serveur Arbortext Publishing Engine.
Description du marquage XML pubstruct
Le schéma pubstruct fournit la structure du format générique du marquage de document XML généralisé envoyé par le convertisseur SIS au Serveur Arbortext PE. Le document Identificateur.xml envoyé dans le fichier de champ de données est une représentation XML de l'arborescence hiérarchique de la structure d'information ou de la structure de publication créée dans Windchill. Le marquage XML est compatible avec le schéma pubstruct.xsd.
Le document Identificateur.xml est fourni avec chaque champ de données envoyé depuis Windchill vers le Serveur Arbortext PE. (Pour en savoir plus sur le fichier de champ de données et son contenu, consultez la section Champ de données et manifeste.) Le nom Identificateur est généré par la machine (par exemple : 00000015.xml).
Le fichier Identificateur.xml doit être transformé en document conforme à un type de document adapté à la publication par Arbortext Publishing Engine, ou à la création d'un paquet InService. Par exemple, un document Identificateur.xml peut être converti en document DITA compatible avec le schéma techinfomap, qui peut ensuite être publié au format PDF, à l'aide d'un moteur d'impression, sur un serveur capable d'interpréter le code XML.
Tous les éléments sont documentés dans le schéma. Recherchez ce qui suit dans le Serveur Arbortext PE :
chemin-Arbortext\application\com.ptc.arbortext.service
\doctypes\pubstruct\pubstruct.xsd
Transformation de la structure de publication
Le tableau ci-après explique comment les informations relatives à la structure de publication sont transformées en une structure de plan DITA techinfomap.
La première colonne indique le marquage source de la structure de publication à l'aide d'une expression XPath.
La deuxième colonne indique le marquage techinfomap transformé à l'aide d'une expression XPath.
La troisième colonne contient des remarques supplémentaires.
Ignorez les sauts de ligne pour les expressions XPath.
Expression XPath source de la structure de publication
Expression XPath résultante techinfomap
Remarques
/PublicationStructure
/techinfomap
Aucune
/techinfomap
/@xml:lang
Le paramètre xml:lang remplace la valeur de cet élément.  La valeur par défaut est en.
Aucune
/techinfomap
/@outputclass
Le paramètre outputclass remplace la valeur de cet élément.  Il n'existe pas de valeur par défaut.
/PublicationStructure
/Title
/techinfomap
/title
/PublicationStructure
//Content[not(@path)
and not(@uri)]
/techinfomap
//division
Le paramètre divison/@format est défini sur xml.
/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". L'élément Content dispose d'au moins un élément enfant Content ou SpecialContent.
/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". L'élément Content ne dispose pas d'élément enfant Content ou SpecialContent.
/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". L'élément Content dispose d'au moins un élément enfant Content ou SpecialContent.
/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". L'élément Content ne dispose pas d'élément enfant Content ou SpecialContent.
/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". L'élément Content dispose d'au moins un élément enfant Content ou SpecialContent.
/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". L'élément Content ne dispose pas d'élément enfant Content ou SpecialContent.
/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". L'élément Content dispose d'au moins un élément enfant Content ou SpecialContent.
/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". L'élément Content ne dispose pas d'élément enfant Content ou SpecialContent.
/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"
A définir uniquement si l'élément Property[matches(@token, '\.TitleFromContent$')]/Value[text()!="yes"] n'est pas spécifié. Sinon, le titre est extrait du contenu.
/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"
A définir uniquement si Property[@token="sis.base.ExcludeContent"]/Value[text()!="true"]
/PublicationStructure
//Content
/@targetType
Sinon :
/PublicationStructure
//Content
/Metadata/Property
[@token=
'x-raomFirstTagName']
/Value
/techinfomap
//*[name()=
'division'
or name()=
'contentref']
/@type
La valeur du paramètre de convertisseur SIS com.ptc.arbortext.pe.service.partlistStylesheet.targetType peut écraser cette valeur si elle est définie.
/PublicationStructure
//Content
/Metadata/Property
[@token=
'x-raomFirstTagName']
/Value
/techinfomap
//*[name()=
'division'
or name()=
'contentref']
/@type
La valeur du paramètre de convertisseur SIS com.ptc.arbortext.pe.service.partlistStylesheet.targetType peut écraser cette valeur si elle est définie.
/PublicationStructure
//SpecialContent
[@type=
"com.ptc.sis.PsToc"]
/techinfomap//toc
/PublicationStructure
//SpecialContent
[@type=
"com.ptc.sis.PsIndex"]
/techinfomap
//index
Exemple de fichier Identificateur.xml d'une structure de publication
Un exemple de marquage XML généralisé d'une structure de publication est suivi de la transformation techinfomap résultante.
<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>
Voici le plan DITA techinfomap résultant :
<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>
Exemple de fichier Identificateur.xml d'une structure d'information
Un extrait du marquage général XML d'une structure d'informations à l'aide de la navigation graphique est suivi par la transformation DMPmap résultante. Certaines portions ont été exclues pour cause de lisibilité, y compris de nombreuses propriétés communes d'itération, de version, de changement de version, d'organisation et d'état du cycle de vie. Plusieurs entrées Content et Metadata des groupes de structure d'informations ont été supprimées ainsi que leur contenu.
<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>
Dans le cadre d'une étape intermédiaire de conversion, des fichiers HTML sont créés à partir des fichiers XML dans le champ de données (ajout de l'extension .html au nom complet d'origine du fichier) et les graphiques référencés sont convertis pour l'affichage (format .pvz).
Voici le plan DITA DMPmap résultant :
<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>
Description du marquage XML partslist
Le schéma partslist fournit la structure du format générique du marquage de document XML généralisé appliqué aux listes d'articles envoyées par le convertisseur SIS au Serveur Arbortext PE. Le document Identificateur.xml de liste d'articles est une représentation XML de la structure de liste d'articles créée dans Windchill. Le document manifest.xml du champ de données le stocke dans un répertoire nommé com.ptc.arbortext.windchill.partlist.PartList. Le nom Identificateur d'une liste d'articles est généré par la machine (par exemple : 00000005.xml).
Le fichier Identificateur.xml d'une liste d'articles doit être transformé en document pouvant être publié par Arbortext Publishing Engine. Par exemple, un fichier Identificateur.xml de liste d'articles peut être converti en document DITA compatible avec le schéma techinfo, qui peut ensuite être publié sous la forme d'une description d'articles illustrée (IPD) contenant la liste d'articles de l'assemblage, des images, des notes de bas de page, des liens et d'autres informations du même ordre.
Windchill génère le fichier Identificateur.xml d'une liste d'articles au format XML IPD. En général, un élément partattribute est généré pour chaque valeur de propriété de la liste d'articles. L'attribut name contient le nom de la propriété. Le contenu de l'élément comprend la valeur de la propriété. Si la propriété a plusieurs valeurs, chaque valeur est entourée de balises partattributevalue.
Les éléments sont documentés dans le schéma Arbortext Publishing Engine :
chemin-Arbortext\application\com.ptc.arbortext.service\doctypes
\partslist\partslist.xsd
Transformation de la liste d'articles
Le tableau ci-après explique comment les informations relatives à la liste d'articles sont transformées en marquage IPD.
La première colonne du tableau est l'abréviation affectée au marquage techinfo.
Les abréviations sont utilisées dans l'exemple de marquage IPD techinfo.
La deuxième colonne indique le marquage source de la liste d'articles à l'aide d'une expression XPath.
La troisième colonne indique le marquage IPD techinfo transformé à l'aide d'une expression XPath.
La quatrième colonne contient des remarques supplémentaires.
Ignorez les sauts de ligne pour les expressions XPath.
Abréviation
Expression XPath source de la liste d'articles
Expression XPath résultante techinfo
Remarques
IPD-Id
Aucune
/ipd/@id
Le paramètre remplace le contenu de cet élément. 
Sinon, l'élément generate-id() génère une valeur.
IPD-Title
/PartsList
/Metadata
/Property
[@token="name"]
/Value
/ipd/title
Le paramètre remplace le contenu de cet élément. 
Sinon, il utilise la valeur retournée par l'expression XPath source.
IPD-Metadata-Source
/PartsList
/Metadata
/@source
/ipd/prolog
/metadata
/category
Il peut exister plusieurs éléments /PartsList/Metadata.
IPD-Metadata-Property-Name
/PartsList
/Metadata
/Property
/@token
/ipd/prolog
/metadata
/data/@name
Il peut exister plusieurs éléments /PartsList/Metadata/Property.
IPD-Metadata-Property-Value
/PartsList
/Metadata
/Property/Value
/ipd/prolog
/metadata/data
Il peut exister plusieurs éléments /PartsList/Metadata/Property.
IPD-Fig-Title
/PartsList
/Images
/Image[1]
/Metadata
/Property
[@token='name']
/Value
/ipd/ipdbody
/fig/title
Le paramètre remplace le contenu de cet élément. 
Sinon, l'attribut name de la première image est utilisé comme titre.
IPD-Fig-Path
/PartsList
/Images
/Image[@type !=
'c3di']
/Metadata
/Property
[@token=
'CADName']
/Value
/ipd/ipdbody
/fig/image
/@href
Il peut exister plusieurs éléments /PartsList/Images/Image.
IPD-Fig-View
/PartsList
/Images
/Image
/Metadata
/Property[@token
='printView']
/Value
/ipd/ipdbody
/fig/image
/@rev
Il peut exister plusieurs éléments /PartsList/Images/Image.
IPD-Fig-View
/PartsList
/Images
/Image[@type =
'c3di']
/ResourceMap
/Resource[@token
='default']
/Content/@path
/ipd/ipdbody
/fig/image
/@rev
Il peut exister plusieurs éléments /PartsList/Images/Image.
IPD-Part-Item-Attribute-Name
/PartsList/Items
/Item/Metadata
/Property
/@token
/ipd/ipdbody
/partlist
/partitem
/partattribute
/@name
Il peut exister plusieurs éléments /PartsList/Items/Item/Metadata/Property.
IPD-Part-Item-Attribute-Value
/PartsList/Items
/Item/Metadata
/Property/Value
/ipd/ipdbody
/partlist
/partitem
/partattribute
Il peut exister plusieurs éléments /PartsList/Items/Item/Metadata/Property.
Voici un exemple de fichier DITA ipd avec les abréviations en contexte et les déclarations XML supprimées. Le texte entre accolades { } indique les emplacements où les valeurs des propriétés de la liste d'articles sont insérées dans le modèle.
<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>
Exemple de fichier Identificateur.xml d'une liste d'articles
Les exemples suivants sont des extraits du marquage XML généralisé d'une liste d'articles.
Le premier extrait indique le marquage XML généralisé des propriétés des métadonnées de la liste d'articles :
<?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>
Voici un extrait du document DITA techinfo résultant au format IPD qui montre les métadonnées de liste d'articles transformées en éléments prolog :
<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>
L'extrait ci-après indique le marquage XML généralisé des propriétés des métadonnées des éléments de la liste d'articles :
<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>
Voici un extrait du document DITA techinfo résultant au format IPD qui montre les métadonnées d'éléments de liste d'articles transformées en entrées partattribute pour l'élément partitem.
<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>