将AEM Assets元数据传播到DITA-OT插件生成的输出
在本文中,我们将说明如何对DITA-OT插件实施更改以读取metadata.xml (可用于临时文件),并利用AEM Guides发布工作流传递的属性在DITA-OT插件中并在生成的输出中设置它。
概括地说,以下是您将在本文中学习的步骤:
- 在AEM Guides中对ditamap的输出预设设置元数据
- 在生成输出时,访问DITA-OT临时目录中的此metadata.xml
- 在DITA-OT插件中实施以读取此metadata.xml,并使用生成的输出中的可用属性
- 检查生成的输出以查看传播的元数据
背景
借助AEM Guides,您可以使用DITA-OT插件通过配置的插件发布到您选择的输出格式,并且
您还可以将在AEM DAM中管理的资源的元数据传递给DITA-OT进程,以便在生成的输出中使用它 — 请参阅有关如何设置ditamap/主题以通过输出预设传递元数据的文档🔗
假设
您已使用AEM Guides版本4.4.0/2024.6或更高版本设置AEM
您事先知道DITA-OT的工作方式及其目录结构
步骤说明
在资源中设置元数据
利用AEM Assets元数据架构,您可以在AEM中为Assets创建自定义属性字段,并且用户可以为资源分配元数据。 以 topic 资源为例,可以设置名为 customprop 的元数据作为示例 — 请参阅下面的屏幕快照:
配置ditamap输出预设上的元数据以传递到DITA-OT
在映射上配置您选择的输出预设以导出元数据并传递到DITA-OT
假设我们正在使用DITA-OT插件(如_adobe.html_)生成HTML5输出。
请参阅下面的屏幕快照,了解如何为映射配置输出预设以将元数据传递到DITA-OT插件。
- 打开映射并浏览到此映射的 输出 选项卡,然后打开HTML5预设,然后单击 高级 选项卡,在此上将转换名称设置为adobe.html(我们将配置并用于示例的插件,您也可以定义自定义插件)
- 设置保留临时文件,以便能够下载临时文件并检查metadata.xml的形成方式,您可以将其用于开发
- 选择要通过metadata.xml传递到DITA-OT的元数据属性。 在此示例中,假设我们要传递 dc:title 和customprop
- 保存预设并生成输出
- 使用预设上显示的按钮下载临时文件
请参阅下面的屏幕截图以了解上述步骤:
实施DITA-OT插件
访问临时目录中的metadata.xml
在下载的临时文件包中,您会注意到一个metadata.xml文件,您可以在其中查看属性和值的结构(请参见下面的屏幕快照)
了解metadata.xml
-
此文件包含已发布的所有资源的列表,每个资源具有:
- 路径元素]的DITA目录[id属性中的文件路径
- 元数据元素]下的元数据属性值对[的列表
<Path id="topics\about-this-document.dita">
<sourceProps>
...
</sourceProps>
<metadata>
<meta isArray="false" key="dc:title">About This Document</meta>
<meta isArray="false" key="customprop">customval</meta>
</metadata>
</Path>
访问DITA-OT插件中每个资产的元数据
要使DITA-OT插件读取 metadata.xml 及其中可用的属性,我们需要执行以下操作:
- 在 plugins.xml 中定义自定义插件设置,其中定义了插件初始化的参数和集成器,插件文件的样例如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<plugin id="com.adobe.html">
<require plugin="org.dita.html5"/>
<feature extension="dita.conductor.transtype.check" value="adobe.html"/>
<feature extension="ant.import" file="integrator.xml"/>
<feature extension="dita.conductor.html5.param" file="params.xml"/>
<feature extension="package.version" value="2024.1"/>
</plugin>
-
在插件启动时:
- 设置一个变量以指向metadata.xml文件,即在插件下的 integrator.xml 中设置一个属性以定义元数据文件的路径,并且
- 定义运行自定义xsl转换规则的文件,即args.xsl,在本例中,该文件将指向文件xsl/adobe-html5.xsl。
请参阅下面的代码:
<property name="adobe.html.xsl.dir" value="${dita.plugin.com.adobe.html.dir}${file.separator}xsl${file.separator}"/>
<property name="args.xsl" location="${adobe.html.xsl.dir}adobe-html5.xsl" />
<dirname property="input.dirname" file="${args.input}"/>
<makeurl file="${input.dirname}/metadata.xml" property="metadata.url"/>
- 将变量 metadata.url 的值传递给自定义XSL以根据需要使用它,即在现有/创建的 param.xml 中将参数传递给插件,请参见下面的params.xml示例文件:
<?xml version="1.0" encoding="UTF-8"?>
<params xmlns:if="ant:if">
<param name="metadata.url" expression="${metadata.url}" if:set="metadata.url"/>
</params>
- 在自定义XSL转换文件 xsl/adobe-html5.xsl 中,您可以从元数据文件中读取元数据值,并按照您所需的方式在输出中设置它。 在本例中,我们将向html head > meta标记中添加元数据值。 请参阅下面的代码:
<xsl:import href="plugin:org.dita.html5:xsl/dita2html5.xsl"/>
<xsl:param name="metadata.url"/>
<xsl:template name="copyright">
<xsl:if test="doc-available( $metadata.url )">
<xsl:variable name="docName" select="tokenize( base-uri(), '/' )[ last() ]"/>
<xsl:variable name="doc" select="doc( $metadata.url )"/>
<xsl:for-each select="$doc//Path[ ends-with( @id, concat( '\', $docName ) ) ]/metadata/meta">
<meta name="{ @key }" content="{ . }"/>
</xsl:for-each>
</xsl:if>
</xsl:template>
请参阅下面的屏幕截图,突出显示上述步骤
实施dita-ot插件的
测试插件实施
您可以通过运行以下命令来测试插件,并使用从AEM下载的临时文件(包含映射内容及其metadata.xml)来测试插件
./dita --input=docsrc/samples/HTML5/aem_forms_documentation.ditamap --format=adobe.html
假设您已将下载的临时文件复制到“DITA-OT/docsrc/samples/HTML5”目录下。
您还可以下载下面资源部分中提供的示例。
执行上述命令时,您可以检查目录“DITA-OT/bin/out”中的输出,其中您可以检查为主题“about-this-document.dita”生成的html文件,该文件的 head 元素中将包含自定义元数据
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<meta name="copyright" content="(C) Copyright 2024">
<meta name="DC.format" content="HTML5">
<meta name="DC.identifier" content="GUID-f193ea85-989d-4d80-99e2-2f5dea3d5310">
<meta name="DC.language" content="en-US">
<meta name="dc:title" content="About This Document">
<meta name="customprop" content="customval">
<title>About This Document</title>
</head>
部署
开发DITA-OT插件后,可以使用DITA-OT目录下的 dita —install 命令将此插件集成到DITA-OT中,并将其部署到AEM服务器有关更多详细信息,请参阅本文
资源
- 从示例ditamap下载的示例临时文件 — 使用此链接下载
- 具有上述说明的实施的DITA-OT插件使用此链接下载