추가 기능 > 서비스 정보 관리 > Customizing Windchill Service Information Manager and Windchill Service Parts(Windchill Service Information Manager 및 Windchill Service Parts 사용자 정의) > 게시 사용자 정의 > Service 응용 프로그램
  
Service 응용 프로그램
Service 응용 프로그램 개요
Arbortext Publishing Engine 서버의 Service 응용 프로그램은 WVS SIS 작업자가 보내는 입력 XML 컨텐트 및 마크업의 초기 변환을 관리하고 게시용으로 준비합니다.
Arbortext Publishing Engine 서버에 Service 응용 프로그램이 설치되고 사용 가능으로 설정되어 있어야 합니다. 기본적으로 다음 위치에 있습니다.
Arbortext-path\application\com.ptc.arbortext.service
Service 문서 유형에 대한 설명
Service 응용 프로그램의 doctypes 디렉토리에는 pubstructpartslist 스키마가 들어 있으며, 이 스키마는 SIS 작업자에서 Arbortext Publishing Engine 서버로 보낸 부품 목록 문서 및 게시 구조의 일반 형식을 관리합니다.
또한 Service 응용 프로그램의 doctypes 디렉토리에는 pubspec 스키마가 들어 있으며, 이 스키마는 SIS 작업자에서 보내는 입력 게시 사양을 게시 매개변수로 변환하여 게시 프로세스에 적용하는 데 사용됩니다. 기본값이 포함된 pubspec.xml은 다음 위치에 있습니다.
application\com.ptc.arbortext.service\lib\pubspec.xml
마크업 변환
Service 응용 프로그램에는 들어오는 컨텐트 및 마크업을 Technical Information 예제 응용 프로그램을 사용한 게시에 적합한 XML로 변환하는 XLST 스타일시트가 들어 있습니다. 이는 변환에서 게시까지의 프로세스를 다루는 작업 예제이므로 변환된 문서가 Technical Information DITA 문서 유형 스키마를 따릅니다. 숙련된 스타일시트 작성자는 Service 응용 프로그램 XSL 변환 스타일시트에 대한 설명이 포함된 지침을 시작점으로 사용할 수 있습니다.
예제 XSLT 스타일시트는 다음 위치에 있습니다.
Arbortext-path\application\com.ptc.arbortext.service\doctypes
pubstruct 하위 디렉토리에서 ditamap-common.xsl을 참조하는 techinfomap.xsl은 게시 구조를 Technical Information 응용 프로그램 맵 및 항목으로 변환합니다.
또한 pubstruct 하위 디렉토리에서 DMPmap-base.xslDMPmap-pvz.xsl을 참조하는 DMPmap.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 스키마를 따릅니다.
Windchill에서 Arbortext Publishing Engine 서버로 보낸 페이로드마다 Identifier.xml 문서가 함께 포함됩니다. 페이로드 파일 및 해당 컨텐트에 대한 자세한 내용은 페이로드 및 매니페스트를 참조하십시오. 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/@formatxml로 설정됩니다.
/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이 나옵니다. 이터레이션, 버전, 개정, 조직 및 라이프 사이클 상태에 대한 많은 일반적인 등록 정보를 비롯한 일부분이 읽기 쉽도록 제외되었습니다. 또한 정보 구조 그룹 및 해당 컨텐트에 대한 많은 ContentMetadata 엔트리가 제거되었습니다.
<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>
중간 변환 단계의 일환으로 페이로드의 XML 파일에서 HTML 파일이 생성되고(전체 원래 파일 이름에 .html을 덧붙임), 확인을 위해 참조 그래픽이 변환됩니다(.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.xmlcom.ptc.arbortext.windchill.partlist.PartList라는 디렉토리에 이 문서를 나열합니다. 부품 목록 Identifier 이름은 시스템에서 생성됩니다(예: 00000005.xml).
부품 목록 Identifier.xml 문서는 Arbortext Publishing Engine에 의한 게시에 적합한 문서로 변환되어야 합니다. 예를 들어, 부품 목록 Identifier.xml 문서는 techinfo 스키마를 따르는 DITA 문서로 변환될 수 있으며, 변환 후에는 어셈블리, 이미지, 각주, 링크와 같은 항목에 대한 부품 목록이 들어 있는 IPD(일러스트레이션 부품 설명)에 게시될 수 있습니다.
Windchill은 부품 목록 Identifier.xml을 IPD 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 요소가 여러 개 있을 수 있습니다.
다음은 ipd DITA 파일의 예제로서, 컨텍스트에 약어를 포함하며 XML 선언이 제거되어 있습니다. 중괄호 { }로 둘러싸인 텍스트는 부품 목록 등록 정보 값이 템플릿에 삽입되는 위치를 보여줍니다.
<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>
다음은 prolog로 변환된 부품 목록 메타데이터를 보여주는 IPD 형식의 결과 techinfo DITA 문서에서 발췌한 것입니다.
<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>
다음은 partitem에 대한 partattribute 엔트리로 변환된 부품 목록 항목 메타데이터를 보여주는 IPD 형식의 결과 techinfo DITA 문서에서 발췌한 것입니다.
<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>