更新默认变换进程
Servigistics InService 提供了变换样式表,并且变换样式表中包含一个默认自定义样式表。建议使用自定义样式表修改现有定义或进程。请按照以下指导原则更新自定义样式表。
每种数据类型的变换样式表包含名为 customizations.xsl 的样式表片段。以下是样式表的一部分,显示了自定义样式表如何嵌入到变换样式表中:
<?xml version="1.0"?>
<!--
Stylesheet to perform OOTB transformation on a source xml
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:stl="http://www.enigma.com/Styling" xmlns:tmpl="http://www.ptc.com/2014/Template-Document"
extension-element-prefixes="stl" version="1.0">
<xsl:output indent="yes" method="xml" />
<!--
Customization specific code will go in the stylesheet included below.
-->
<xsl:include href="customizations.xsl"/>
...
</xsl:stylesheet>
|
|
不要对常规变换样式表进行任何更改,因为一旦有增量更新,此文件便会被覆盖。
|
默认情况下,customizations.xsl 为空样式表。自定义分支应使用样式表的自定义版本及 XSLT 优先级构造以覆盖或补充变换。如果已完成自定义,且输出格式需要修改,则需更新依存文件。例如,如果部件变换输出已更改,则部件特定的模板也必须更改才能使两者同步。
XSLT 具有优先级概念,因此,任何通过现有模板匹配的对象都只需通过提供具有更高优先级的对等匹配表达式来进行覆盖。例如,如果您只是想自定义此现有 XSL 代码的处理:
<xsl:template match="Metadata">
要将其覆盖,可添加如下模板:
<xsl:template match="Metadata" priority="2">
在自定义样式表中,您可以将 customizations.xsl 模块化并拖入任意数量的附加 XSLT 样式表片段。在这种情况下,customizations.xsl 可能仅仅是若干附加 xsl:include 语句。对于这些内含项目,XSLT 引擎处理这些文件后,具有最高优先级值的模板匹配会触发变换,而相同内容的其他匹配则会被忽略。
通过这种方式,您可以从文档的根节点开始,有效地覆盖现有处理中的所有内容,或者只是选择性地进行一些特定处理,例如修改“特性-值”对映射。
变换样式表中的另一个自定义约定为,添加存储于 XSLT 变量中且以逗号分隔的字符串中的某些 Property/@token 值,以支持“选择加入”或“选择退出”功能,如拾取要传播的可变属性。