Service 应用程序
Service 应用程序概述
Arbortext Publishing Engine 服务器上的服务应用程序会管理从 WVS SIS 工作器发送的输入 XML 内容和标注的初始变换,并为其作好发布准备。
Arbortext Publishing Engine 服务器必须安装和启用服务应用程序。默认情况下,它位于:
Arbortext-path\application\com.ptc.arbortext.service
Service 文档类型的说明
服务应用程序 doctypes 目录包含 pubstruct 和 partslist 模式,可管理由 SIS 工作器发送到 Arbortext Publishing Engine 服务器的发布结构和部件列表文档的通用形式。
Service 应用程序 doctypes 目录还包含 pubspec 模式,可用于将从 SIS 工作器发送的输入发布规范变换为发布参数,以应用到发布进程。包含默认值的 pubspec.xml 位于:
application\com.ptc.arbortext.service\lib\pubspec.xml
变换标注
Service 应用程序中包含 XLST 样式表,可将传入内容和批注变换为适合使用 Technical Information 示例应用程序进行发布的 XML。由于这是一个涵盖从变换到发布过程的工作示例,所以变换的文档要与技术信息 DITA 文档类型模式相符合。有经验的样式表编写者可遵循服务应用程序 XSL 变换样式表备注的指导原则作为起点。
查找示例 XSLT 样式表:
Arbortext-path\application\com.ptc.arbortext.service\doctypes
• 在 pubstruct 子目录中,techinfomap.xsl (它引用 ditamap-common.xsl) 会将变换为 Technical Information 应用程序映射及其主题。
• 同样,在 pubstruct 子目录中,DMPmap.xsl (参考 DMPmap-base.xsl 和 DMPmap-pvz.xsl) 会将信息结构变换为适合束发布的格式。
• 在 partslist 子目录中,techinfo.xsl 可将部件列表变换为图解部件说明 (IPD)。
这些 XSL 变换样式表提供了说明指导原则,当您需要为自己的文档类型执行自定义设置时,可以将其作为示例。这些应用程序将在 Arbortext Publishing Engine 服务器上的 application 目录中部署。
了解 pubstruct XML 标注
pubstruct 模式为由 SIS 工作器发送到 Arbortext Publishing Engine 服务器的常规 XML 文件标注的通用形式提供结构。在有效负载文件中发送的 Identifier.xml 文档是在 Windchill+ 中所创建信息结构或发布结构的分级树结构的 XML 表示。XML 标注符合 pubstruct.xsd 模式。
Identifier.xml 文档随附于从
Windchill+ 发送到
Arbortext Publishing Engine 服务器的每个有效负载。(有关有效负载文件及其内容的信息,请参阅
有效载荷和内容清单。)
Identifier 的名称是由计算机生成的,例如:
00000015.xml。
Identifier.xml 文档需要变换为与适合 Arbortext Publishing Engine 发布或创建 Arbortext Content Delivery 束的文档类型相符的文档。例如,您可以将 Identifier.xml 文档转换为符合 techinfomap 模式的 DITA 文档,该文档随后可通过服务器上能够解译 XML 的打印引擎发布为 PDF。
所有元素都会记录在模式中。在 Arbortext Publishing Engine 服务器上查找如下内容:
Arbortext-path\application\com.ptc.arbortext.service
\doctypes\pubstruct\pubstruct.xsd
发布结构变换
下表解释了如何将发布结构信息变换为 techinfomap DITA 映射结构。
• 第一列使用 XPath 表达式显示源发布结构标注
• 第二列使用 XPath 表达式显示变换的 techinfomap 标注
• 第三列包含其他注解。
忽略 XPath 表达式的换行符。
|
发布结构源 XPath
|
techinfomap 结果 XPath
|
注解
|
|
/PublicationStructure
|
/techinfomap
|
|
|
无
|
/techinfomap /@xml:lang
|
xml:lang 参数会覆盖此元素的值。默认值为 en。
|
|
无
|
/techinfomap /@outputclass
|
outputclass 参数会覆盖此元素的值。没有默认值。
|
|
/PublicationStructure /Title
|
/techinfomap /title
|
|
|
/PublicationStructure //Content[not(@path) and not(@uri)]
|
/techinfomap //division
|
divison/@format 设置为 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". Content 元素拥有至少一个 Content 或 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". Content 元素没有 Content 或 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". Content 元素拥有至少一个 Content 或 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". Content 元素没有 Content 或 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". Content 元素拥有至少一个 Content 或 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". Content 元素没有 Content 或 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". Content 元素拥有至少一个 Content 或 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". Content 元素没有 Content 或 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"
|
仅当未指定 Property[matches(@token, '\.TitleFromContent$')]/Value[text()!="yes"] 时才设置。否则,它会从内容中获得标题。
|
|
/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"
|
仅当 Property[@token="sis.base.ExcludeContent"]/Value[text()!="true"] 时才设置
|
|
/PublicationStructure //Content /@targetType
否则:
/PublicationStructure //Content /Metadata/Property [@token= 'x-raomFirstTagName'] /Value
|
/techinfomap //*[name()= 'division' or name()= 'contentref'] /@type
|
SIS 工作器参数 com.ptc.arbortext.pe.service.partlistStylesheet.targetType 的值可以覆盖此值 (如果已设置)。
|
|
/PublicationStructure //Content /Metadata/Property [@token= 'x-raomFirstTagName'] /Value
|
/techinfomap //*[name()= 'division' or name()= 'contentref'] /@type
|
SIS 工作器参数 com.ptc.arbortext.pe.service.partlistStylesheet.targetType 的值可以覆盖此值 (如果已设置)。
|
|
/PublicationStructure //SpecialContent [@type= "com.ptc.sis.PsToc"]
|
/techinfomap//toc
|
|
|
/PublicationStructure //SpecialContent [@type= "com.ptc.sis.PsIndex"]
|
/techinfomap //index
|
|
示例发布结构 Identifier.xml
发布结构的常规 XML 标注的示例后面是生成的 techinfomap 变换。
<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>
以下是生成的 techinfomap DITA 映射:
<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>
示例信息结构 Identifier.xml
使用图形导航针对信息结构的常规 XML 标注中的摘录后面是生成的 DMPmap 变换。有些部分由于可读性的原因已被排除,包括许多常用的小版本、版本、修订版本、组织以及生命周期状态特性。信息结构组及其内容的一些 Content 和 Metadata 条目已被移除。
<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>
作为临时转换步骤的一部分,HTML 文件可基于有效载荷 (将 .html 附加至整个原始文件名) 中的 XML 文件创建,并且可对参考图形进行转换以便于查看 (.pvz 格式)。
以下是生成的 DMPmap DITA 映射:
<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>
了解 partslist XML 标注
partslist 模式为应用至由 SIS 工作器发送到 Arbortext Publishing Engine 服务器的“部件列表”的常规 XML 文档标注的通用形式提供结构。部件列表 Identifier.xml 文档是在 Windchill+ 中创建的部件列表结构的 XML 表示。有效载荷中的 manifest.xml 会将其列在名为 com.ptc.arbortext.windchill.partlist.PartList 的目录中。部件列表 Identifier 的名称是由计算机生成的,例如:00000005.xml。
部件列表 Identifier.xml 文档需要变换为适合 Arbortext Publishing Engine 发布的文档。例如,您可以将部件列表 Identifier.xml 文档转换为符合 techinfo 模式的 DITA 文档,该文档随后可以发布为包含装配、图像、脚注、链接等的部件列表的图解部件说明 (IPD)。
Windchill+ 会以 IPD XML 格式生成部件列表 Identifier.xml 文档。一般而言,针对每个部件列表特性值,都会生成 partattribute。name 属性包含特性的名称。元素的内容包含特性的值。如果特性有多个值,则每个值都会使用 partattributevalue 选项卡包含。
这些元素记录在 Arbortext Publishing Engine 的模式中:
Arbortext-path\application\com.ptc.arbortext.service\doctypes
\partslist\partslist.xsd
部件列表变换
下表解释了如何将“部件列表”信息变换为 IPD 标注。
• 表格中第一列为分配给 techinfo 标注的缩写。
在 techinfo IPD 标注示例中使用缩写。
• 第二列使用 XPath 表达式显示源“部件列表”标注
• 第三列使用 XPath 表达式显示变换的 techinfo IPD 标注
• 第四列包含其他注解。
忽略 XPath 表达式的换行符。
|
缩写
|
部件列表源 XPath
|
techinfo 结果 XPath
|
注解
|
|
IPD-Id
|
无
|
/ipd/@id
|
该参数会覆盖此元素的内容。
否则,generate-id() 会生成值。
|
|
IPD-Title
|
/PartsList /Metadata /Property [@token="name"] /Value
|
/ipd/title
|
该参数会覆盖此元素的内容。
否则,它会使用源 XPath 返回的值。
|
|
IPD-Metadata-Source
|
/PartsList /Metadata /@source
|
/ipd/prolog /metadata /category
|
可能存在多个 /PartsList/Metadata 元素。
|
|
IPD-Metadata-Property-Name
|
/PartsList /Metadata /Property /@token
|
/ipd/prolog /metadata /data/@name
|
可能存在多个 /PartsList/Metadata/Property 元素。
|
|
IPD-Metadata-Property-Value
|
/PartsList /Metadata /Property/Value
|
/ipd/prolog /metadata/data
|
可能存在多个 /PartsList/Metadata/Property 元素。
|
|
IPD-Fig-Title
|
/PartsList /Images /Image[1] /Metadata /Property [@token='name'] /Value
|
/ipd/ipdbody /fig/title
|
该参数会覆盖此元素的内容。
否则,会使用来自第一个图像的 name 属性作为标题。
|
|
IPD-Fig-Path
|
/PartsList /Images /Image[@type != 'c3di'] /Metadata /Property [@token= 'CADName'] /Value
|
/ipd/ipdbody /fig/image /@href
|
可能存在多个 /PartsList/Images/Image 元素。
|
|
IPD-Fig-View
|
/PartsList /Images /Image /Metadata /Property[@token ='printView'] /Value
|
/ipd/ipdbody /fig/image /@rev
|
可能存在多个 /PartsList/Images/Image 元素。
|
|
IPD-Fig-View
|
/PartsList /Images /Image[@type = 'c3di'] /ResourceMap /Resource[@token ='default'] /Content/@path
|
/ipd/ipdbody /fig/image /@rev
|
可能存在多个 /PartsList/Images/Image 元素。
|
|
IPD-Part-Item-Attribute-Name
|
/PartsList/Items /Item/Metadata /Property /@token
|
/ipd/ipdbody /partlist /partitem /partattribute /@name
|
可能存在多个 /PartsList/Items/Item/Metadata/Property 元素。
|
|
IPD-Part-Item-Attribute-Value
|
/PartsList/Items /Item/Metadata /Property/Value
|
/ipd/ipdbody /partlist /partitem /partattribute
|
可能存在多个 /PartsList/Items/Item/Metadata/Property 元素。
|
以下是上下文中存在缩写且已移除 XML 声明的 ipd DITA 文件示例。大括号 { } 中包含的文本显示将“部件列表”特性值插入到模板中的位置。
<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>
示例部件列表 Identifier.xml
以下示例是来自部件列表的常规 XML 标注的摘录。
第一个摘录显示“部件列表”元数据特性常规 XML 标注:
<?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>
以下是 IPD 格式的生成 techinfo DITA 文档的摘录,显示变换为 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>
以下摘录显示部件列表项元数据特性常规 XML 标注:
<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>
以下是 IPD 格式的生成 techinfo DITA 文档的摘录,显示对于 partitem 变换为 partattribute 条目的“部件列表”项元数据。
<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>