Aplicación Service
Introducción a la aplicación Service
La aplicación del servicio del servidor de Arbortext Publishing Engine permite gestionar la transformación inicial del contenido XML de entrada y el markup enviado desde el convertidor SIS de WVS y prepararlo para publicación.
El servidor de Arbortext Publishing Engine debe tener la aplicación del servicio instalada y activada. Por defecto, se encuentra en:
Ruta de Arbortext\application\com.ptc.arbortext.service
Descripción del tipo de documento de Service
En el directorio doctypes de la aplicación del servicio se incluyen los esquemas pubstruct y partslist, que permiten gestionar los formularios genéricos de documentos de la estructura de la publicación y la lista de artículos enviados por el convertidor SIS al servidor de Arbortext Publishing Engine.
El directorio doctypes de la aplicación Service también contiene el esquema pubspec, que se utiliza para transformar las especificaciones de publicación de entrada enviadas desde el convertidor SIS a los parámetros de publicación para aplicarlas al proceso de publicación. Encontrará un fichero pubspec.xml con los valores por defecto en:
application\com.ptc.arbortext.service\lib\pubspec.xml
Transformación del marcador
La aplicación de servicio contiene las hojas de estilos XLST que transforman el contenido y el markup entrante en el formato XML adecuado para la publicación mediante la aplicación de ejemplo Technical Information. Dado que este es un ejemplo práctico que cubre el proceso de transformación para la publicación, los documentos transformados cumplen con los esquemas del tipo de documento DITA de Technical Information. Un redactor de hojas de estilos experimentado puede seguir las directrices comentadas de las hojas de estilos de transformación XSL de la aplicación Service como punto de partida.
Busque las hojas de estilos XSLT de ejemplo en:
Ruta de Arbortext\application\com.ptc.arbortext.service\doctypes
• En el subdirectorio pubstruct, techinfomap.xsl (que hace referencia a ditamap-common.xsl) convierte una estructura de publicación en el mapa de la aplicación Technical Information y sus temas.
• Asimismo, en el subdirectorio pubstruct, DMPmap.xsl (que hace referencia a DMPmap-base.xsl y DMPmap-pvz.xsl) convierte una estructura de información en un formato adecuado para la publicación del paquete.
• En el subdirectorio partslist, el fichero techinfo.xsl convierte una lista de artículos en una descripción de artículo ilustrado (IPD).
En estas hojas de estilos de transformación XSL se proporcionan instrucciones comentadas que se pueden utilizar como ejemplo de las personalizaciones necesarias en el tipo de documento propio. Estas aplicaciones se implementan en un directorio de aplicación en el servidor Arbortext Publishing Engine.
Explicación del marcador XML pubstruct
En el esquema pubstruct se proporciona la estructura del formulario genérico del marcador del documento XML generalizado que el convertidor SIS ha enviado al servidor de Arbortext Publishing Engine. El documento Identifier.xml enviado en el fichero de carga útil es una representación XML de la estructura de árbol jerárquica de la estructura de información o la estructura de publicación creada en Windchill. El markup XML cumple con el esquema pubstruct.xsd.
El documento
Identifier.xml se incluye con cada carga útil enviada desde
Windchill al servidor
Arbortext Publishing Engine. (Para obtener información sobre el fichero de carga útil y su contenido, consulte
Carga útil y manifiesto). El nombre del fichero
Identifier lo genera el equipo, por ejemplo,
00000015.xml.
El documento Identifier.xml se debe convertir en un documento compatible con un tipo de documento adecuado para la publicación en Arbortext Publishing Engine o para la creación de un paquete de Arbortext Content Delivery. Por ejemplo, un documento Identifier.xml se puede convertir en un documento DITA compatible con el esquema techinfomap, que se pueda publicar posteriormente en PDF mediante un motor de impresión en el servidor capaz de interpretar el formato XML.
Todos los elementos se documentan en el esquema. Busque lo siguiente en el servidor de Arbortext Publishing Engine:
Ruta-Arbortext\application\com.ptc.arbortext.service
\doctypes\pubstruct\pubstruct.xsd
Transformación de la estructura de la publicación
La tabla siguiente explica cómo se transforma la información de la estructura de la publicación en una estructura de mapa DITA techinfomap.
• La primera columna muestra el marcador de la estructura de publicación de origen como una expresión XPath.
• La segunda columna muestra el marcador techinfomap transformado mediante una expresión XPath.
• La tercera columna contiene notas adicionales.
Omita los saltos de línea para las expresiones XPath.
XPath de origen de la estructura de publicación
|
XPath del resultado de techinfomap
|
Notas
|
/PublicationStructure
|
/techinfomap
|
|
Ninguno
|
/techinfomap /@xml:lang
|
El parámetro xml:lang sustituye el valor de este elemento. El valor por defecto es en.
|
Ninguno
|
/techinfomap /@outputclass
|
El parámetro outputclass sustituye el valor de este elemento. No existe ningún valor por defecto.
|
/PublicationStructure /Title
|
/techinfomap /title
|
|
/PublicationStructure //Content[not(@path) and not(@uri)]
|
/techinfomap //division
|
divison/@format está definido en 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". El elemento Content tiene como mínimo un elemento hijo Content o 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". El elemento Content no tiene ningún elemento hijo Content ni 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". El elemento Content tiene como mínimo un elemento hijo Content o 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". El elemento Content no tiene ningún elemento hijo Content ni 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". El elemento Content tiene como mínimo un elemento hijo Content o 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". El elemento Content no tiene ningún elemento hijo Content ni 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". El elemento Content tiene como mínimo un elemento hijo Content o 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". El elemento Content no tiene ningún elemento hijo Content ni 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"
|
Se define solamente si no se ha especificado Property[matches(@token, '\.TitleFromContent$')]/Value[text()!="yes"]. De lo contrario, tomará el título del contenido.
|
/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"
|
Definir solamente si Property[@token="sis.base.ExcludeContent"]/Value[text()!="true"]
|
/PublicationStructure //Content /@targetType
De lo contrario:
/PublicationStructure //Content /Metadata/Property [@token= 'x-raomFirstTagName'] /Value
|
/techinfomap //*[name()= 'division' or name()= 'contentref'] /@type
|
El valor del parámetro com.ptc.arbortext.pe.service.partlistStylesheet.targetType del convertidor SIS puede reemplazar este valor, si se define.
|
/PublicationStructure //Content /Metadata/Property [@token= 'x-raomFirstTagName'] /Value
|
/techinfomap //*[name()= 'division' or name()= 'contentref'] /@type
|
El valor del parámetro com.ptc.arbortext.pe.service.partlistStylesheet.targetType del convertidor SIS puede reemplazar este valor, si se define.
|
/PublicationStructure //SpecialContent [@type= "com.ptc.sis.PsToc"]
|
/techinfomap//toc
|
|
/PublicationStructure //SpecialContent [@type= "com.ptc.sis.PsIndex"]
|
/techinfomap //index
|
|
Ejemplo de Identifier.xml de estructura de la publicación
Un ejemplo de markup XML generalizado de una estructura de publicación va seguido de la transformación de techinfomap resultante.
<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>
A continuación, se muestra el mapa DITA techinfomap resultante:
<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>
Ejemplo de Identifier.xml de estructura de información
Un extracto del marcador generalizado XML de una estructura de información mediante la navegación gráfica va seguido de la transformación DMPmap resultante. Algunas partes se han excluido para facilitar la legibilidad, incluidas muchas de las propiedades comunes de iteración, versión, revisión, organización y estado de ciclo de vida. Se han quitado varias entradas de Content y Metadata de los grupos de la estructura de información y su contenido.
<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>
Como parte de un paso intermedio de conversión, los ficheros HTML se crean a partir de los ficheros XML de carga útil (con la extensión .html añadida al nombre completo del fichero original) y los gráficos de referencia se convierten para facilitar la visualización (al formato .pvz).
A continuación, se muestra el mapa DITA DMPmap resultante:
<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>
Explicación del marcador XML partslist
En el esquema partslist se proporciona la estructura del formulario genérico del marcador del documento XML generalizado que se aplica a la lista de artículos que el convertidor SIS ha enviado al servidor de Arbortext Publishing Engine. El documento Identifier.xml de listas de artículos es una representación XML de la estructura de listas de artículos creada en Windchill. El fichero manifest.xml de la carga útil lo muestra en un directorio denominado com.ptc.arbortext.windchill.partlist.PartList. El nombre de Identifier de listas de artículos lo genera el equipo, por ejemplo, 00000005.xml.
El documento Identifier.xml de listas de artículos se debe transformar en un documento adecuado para la publicación en Arbortext Publishing Engine. Por ejemplo, un documento Identifier.xml de listas de artículos se puede convertir en un documento DITA que cumpla con el esquema techinfo, que se pueda publicar posteriormente en una descripción de artículos ilustrada (IPD) que incluya la lista de artículos del conjunto, las imágenes, las notas a pie de página, los vínculos y otros elementos relacionados.
Windchill genera el fichero Identifier.xml de listas de artículos en un formato XML de IPD. En general, para cada valor de propiedad de la lista de artículos, se genera un partattribute. El atributo name contiene el nombre de la propiedad. El contenido del elemento incluye el valor de la propiedad. Si la propiedad tiene más de un valor, cada uno de los valores se incluirá entre etiquetas partattributevalue.
Los elementos se documentan en el esquema de Arbortext Publishing Engine:
Ruta-Arbortext\application\com.ptc.arbortext.service\doctypes
\partslist\partslist.xsd
Transformación de la lista de artículos
En la tabla siguiente, se explica cómo se transforma la información de la lista de artículos en marcador IPD.
• La primera columna de la tabla es la abreviatura asignada al marcador techinfo.
Las abreviaturas se utilizan en el ejemplo del marcador IPD techinfo.
• La segunda columna muestra el marcador de la lista de artículos de origen mediante una expresión XPath.
• La tercera columna muestra el marcador IPD techinfo transformado mediante una expresión XPath.
• La cuarta columna contiene notas adicionales.
Omita los saltos de línea para las expresiones XPath.
Abreviatura
|
XPath de origen de la lista de artículos
|
XPath del resultado de techinfo
|
Notas
|
IPD-Id
|
Ninguno
|
/ipd/@id
|
El parámetro sustituye el contenido de este elemento.
De lo contrario, generate-id() genera un valor.
|
IPD-Title
|
/PartsList /Metadata /Property [@token="name"] /Value
|
/ipd/title
|
El parámetro sustituye el contenido de este elemento.
De lo contrario, utilizará el valor que ha devuelto la expresión XPath de origen.
|
IPD-Metadata-Source
|
/PartsList /Metadata /@source
|
/ipd/prolog /metadata /category
|
Pueden existir varios elementos /PartsList/Metadata.
|
IPD-Metadata-Property-Name
|
/PartsList /Metadata /Property /@token
|
/ipd/prolog /metadata /data/@name
|
Pueden existir varios elementos /PartsList/Metadata/Property.
|
IPD-Metadata-Property-Value
|
/PartsList /Metadata /Property/Value
|
/ipd/prolog /metadata/data
|
Pueden existir varios elementos /PartsList/Metadata/Property.
|
IPD-Fig-Title
|
/PartsList /Images /Image[1] /Metadata /Property [@token='name'] /Value
|
/ipd/ipdbody /fig/title
|
El parámetro sustituye el contenido de este elemento.
De lo contrario, el atributo name de la primera imagen se utilizará como título.
|
IPD-Fig-Path
|
/PartsList /Images /Image[@type != 'c3di'] /Metadata /Property [@token= 'CADName'] /Value
|
/ipd/ipdbody /fig/image /@href
|
Pueden existir varios elementos /PartsList/Images/Image.
|
IPD-Fig-View
|
/PartsList /Images /Image /Metadata /Property[@token ='printView'] /Value
|
/ipd/ipdbody /fig/image /@rev
|
Pueden existir varios elementos /PartsList/Images/Image.
|
IPD-Fig-View
|
/PartsList /Images /Image[@type = 'c3di'] /ResourceMap /Resource[@token ='default'] /Content/@path
|
/ipd/ipdbody /fig/image /@rev
|
Pueden existir varios elementos /PartsList/Images/Image.
|
IPD-Part-Item-Attribute-Name
|
/PartsList/Items /Item/Metadata /Property /@token
|
/ipd/ipdbody /partlist /partitem /partattribute /@name
|
Pueden existir varios elementos /PartsList/Items/Item/Metadata/Property.
|
IPD-Part-Item-Attribute-Value
|
/PartsList/Items /Item/Metadata /Property/Value
|
/ipd/ipdbody /partlist /partitem /partattribute
|
Pueden existir varios elementos /PartsList/Items/Item/Metadata/Property.
|
El siguiente es un ejemplo de fichero DITA ipd con las abreviaturas en contexto y las declaraciones XML quitadas. El texto entre llaves { } muestra las ubicaciones de la plantilla donde se han insertado los valores de propiedad de la lista de artículos.
<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>
Ejemplo de Identifier.xml de listas de artículos
Los siguientes ejemplos son extractos del marcador XML generalizado de una lista de artículos.
El primer fragmento muestra el marcador XML generalizado de las propiedades de los metadatos de la lista de artículos:
<?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>
El siguiente es un fragmento del documento DITA techinfo resultante en formato IPD, que muestra los metadatos de la lista de artículos transformados en 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>
El siguiente fragmento muestra el marcador XML generalizado de las propiedades de los metadatos de los elementos de la lista de artículos:
<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>
El siguiente es un fragmento del documento DITA techinfo resultante en formato IPD, que muestra los metadatos de los elementos de la lista de artículos transformados en entradas partattribute de 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>